3520D使用512M内存实战
2 E币
成为会员,免费下载资料
文件大小:115.11 KB
上传者:ngswfx
时间:2016-03-10 02:57:22
下载量:161
本帖最后由 ngswfx 于 2016-3-10 03:15 编辑
在网站学习了有2个月了,从不知道linux具体编程细节,从没搞过arm编程,到现在基本掌握(呵呵,奇快,主要我以前搞VC6多年,有基础,搞来搞去,发现都一样,有大量的现有资源可以直接移植使用,一天就能移植一个模块),多亏了这个网站,为此,需要把自己学到的一点东西,处理问题的一点经验分享一下。
先说说我这次遇到的问题:
首先我这边找了一台NVR的主板,上面是3520D SPIflash 是16M 的,内存是三星的K4B4G1646,也就是512M内存,不得不说厂商,的确给力,舍得用料。
我想在这个板子上面研发东西,当开发板用,先前我使用的板子也是这个公司的NVR,是256M的内存,使用HI3520开发包中的一套东西,研发的很顺利,也测试了其他厂商的NVR主板,只要是256M的,都跑起来了,就连128的K4B1G1646也能跑起来。
当我把,以前做好的u-boot刷入后,除了蜂鸣器狂叫外,串口没反应了,使用fastboot刷spi flash,怎么都刷不进去,提示...DDR init..错误,这意味着,可能是内存配置出了问题,又找了半天的文档,网络搜索,有文中提示要把,“uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls”
中的,DDRC_RNKCFG 由 0x132改为0x142,我改了,重新编译U-boot,还是启动不起来。我也看了3516以及3536文档中,关于DDR的配置,毕竟和3520区别太大,没敢随便照着改。因为到处都不一样。
到此,似乎没有解决方案了。
我想,还是先把这个板子恢复为厂商的正常东西先。于是从厂商网站下载USB升级包。可问题来了,这个升级包restore.bin,是需要U-boot才能支持的,有15M左右。杂升级呀。使用fastboot强刷,提示1M限制,于是找来vc6.0,利用它打开这个15M二进制文件,强制裁剪为1M(从开头裁剪1M下来)。再刷,没反应。
此刻,意识到,厂商提供的这个升级包,使用mkimage打包过的,代码位置可能有区别,为此,找来自己编写的u-boot,也查看二进制,为此,明确U-boot的开始字符为:CC 04 ,也到开始生成的那个1M二进制中去找,找到了,前面的数据都删除,另外我知道它的这个U-boot,应该是256K的,为此,256K后面的数据也抛弃,这样就生成了一个256K的 u-boot文件,赶紧用fastboot刷入,板子启动起来了。呵呵。
到此,问题似乎解决了,可是我要自己编自己的U-boot才行呀,还要做自动升级等其他功能呀。还需要研究才行。
又一想,这个U-boot里面应该有,uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls生成的那个reg_info.bin的信息,为此再次打开这个文件,然后再打开我以前生成的reg_info.bin文件,还有我自己做的U-boot文件,发现在地址0x550附近,有那个0x142的影子 42 01,然后对比厂商的U-boot发现,下面还有个6A 7A 63 FF 我自己生成的里面是35 7A 63 FF,呵呵,6A正好是35的2倍,512M是256的2倍,然后再到 “uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls”内存设置里面去找这几个字符,呵呵,DDRC_TIMING1 0xFF637A35 果断,改为0xFF637A6A,然后重新生成reg_info.bin,然后再去编译u-boot,在fastboot刷入。
成功了,其他我没对比了。有兴趣的朋友可以自己对比自己生成的reg_info.bin U-boot.bin 以及可以使用的512M u-boot.bin(附件中有压缩文件)。
这算是另外一种解决问题的方法,也算是闭门造车吧。给需要升级内存512M的,不知怎么改参数的提供另外一个思路。
在网站学习了有2个月了,从不知道linux具体编程细节,从没搞过arm编程,到现在基本掌握(呵呵,奇快,主要我以前搞VC6多年,有基础,搞来搞去,发现都一样,有大量的现有资源可以直接移植使用,一天就能移植一个模块),多亏了这个网站,为此,需要把自己学到的一点东西,处理问题的一点经验分享一下。
先说说我这次遇到的问题:
首先我这边找了一台NVR的主板,上面是3520D SPIflash 是16M 的,内存是三星的K4B4G1646,也就是512M内存,不得不说厂商,的确给力,舍得用料。
我想在这个板子上面研发东西,当开发板用,先前我使用的板子也是这个公司的NVR,是256M的内存,使用HI3520开发包中的一套东西,研发的很顺利,也测试了其他厂商的NVR主板,只要是256M的,都跑起来了,就连128的K4B1G1646也能跑起来。
当我把,以前做好的u-boot刷入后,除了蜂鸣器狂叫外,串口没反应了,使用fastboot刷spi flash,怎么都刷不进去,提示...DDR init..错误,这意味着,可能是内存配置出了问题,又找了半天的文档,网络搜索,有文中提示要把,“uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls”
中的,DDRC_RNKCFG 由 0x132改为0x142,我改了,重新编译U-boot,还是启动不起来。我也看了3516以及3536文档中,关于DDR的配置,毕竟和3520区别太大,没敢随便照着改。因为到处都不一样。
到此,似乎没有解决方案了。
我想,还是先把这个板子恢复为厂商的正常东西先。于是从厂商网站下载USB升级包。可问题来了,这个升级包restore.bin,是需要U-boot才能支持的,有15M左右。杂升级呀。使用fastboot强刷,提示1M限制,于是找来vc6.0,利用它打开这个15M二进制文件,强制裁剪为1M(从开头裁剪1M下来)。再刷,没反应。
此刻,意识到,厂商提供的这个升级包,使用mkimage打包过的,代码位置可能有区别,为此,找来自己编写的u-boot,也查看二进制,为此,明确U-boot的开始字符为:CC 04 ,也到开始生成的那个1M二进制中去找,找到了,前面的数据都删除,另外我知道它的这个U-boot,应该是256K的,为此,256K后面的数据也抛弃,这样就生成了一个256K的 u-boot文件,赶紧用fastboot刷入,板子启动起来了。呵呵。
到此,问题似乎解决了,可是我要自己编自己的U-boot才行呀,还要做自动升级等其他功能呀。还需要研究才行。
又一想,这个U-boot里面应该有,uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls生成的那个reg_info.bin的信息,为此再次打开这个文件,然后再打开我以前生成的reg_info.bin文件,还有我自己做的U-boot文件,发现在地址0x550附近,有那个0x142的影子 42 01,然后对比厂商的U-boot发现,下面还有个6A 7A 63 FF 我自己生成的里面是35 7A 63 FF,呵呵,6A正好是35的2倍,512M是256的2倍,然后再到 “uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls”内存设置里面去找这几个字符,呵呵,DDRC_TIMING1 0xFF637A35 果断,改为0xFF637A6A,然后重新生成reg_info.bin,然后再去编译u-boot,在fastboot刷入。
成功了,其他我没对比了。有兴趣的朋友可以自己对比自己生成的reg_info.bin U-boot.bin 以及可以使用的512M u-boot.bin(附件中有压缩文件)。
这算是另外一种解决问题的方法,也算是闭门造车吧。给需要升级内存512M的,不知怎么改参数的提供另外一个思路。
展开》
折叠》