openwrt下MT7621实现1GB nand和512M DDR3的方法与过程


0.需求

做产品过程中,碰到需要在MT7621下使用512MB DDR3和1GB nand的要求,但官方并没有给出解决方案,通过自己的长达2-3个月慢慢摸索终于解决。

1.思路一(直接从1GB nand启动)

项目开展时,发现网件的一款路由器R6220使用MT7621S配合128MB NAND和128MB DDR,所以初步确认采用官方sdk,直接从nand启动,结果卡在uboot无法启动512MB DDR3,出现stage1 DRAMC校准失败,这个属于MTK uboot第一阶段bin文件,未开源,尝试解决良久而不得,简直要撞墙。。。

流程: MT7621上电->nand uboot(stage1,主要是时钟初始化,DDR初始化,stage2文件拷贝到DDR中)->nand uboot(stage2,系统初始化,引导加载kernel)->nand kernel->nand rootfs

结果:失败。。。

2.思路二(spi启动uboot再到nand kernel和rootfs)

根据本人在其他项目上的经验,改造uboot和kernel实现了下述流程。碰到的瓶颈在于kerenl加载nand rootfs失败,原因是MTK nand驱动太老,更新到最新的即可。

流程: MT7621上电->spi uboot(stage1,主要是时钟初始化,DDR初始化,stage2文件拷贝到DDR中)->spi uboot(stage2,系统初始化,引导加载kernel)->nand kernel->nand rootfs

结果:成功。。。

有坑:软件虽然成功,但硬件有坑,坑是什么呢?????—》》》spi flash和nand flash到MT7621的管脚是复用的,使用中发现有时操作nand会擦除spi flash,解决方法呢》》》1、还是用nand uboot吧;2、spi复用部分增加控制选通硬件,默认spi flash选用,加载spi flash的uboot后,disable spi flash硬件。


上篇: Ubuntu下使用git 命令行管理coding.net上的开源库 下篇: 近期技术疑难问题小结