做产品过程中,碰到需要在MT7621下使用512MB DDR3和1GB nand的要求,但官方并没有给出解决方案,通过自己的长达2-3个月慢慢摸索终于解决。
项目开展时,发现网件的一款路由器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
结果:失败。。。
根据本人在其他项目上的经验,改造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硬件。