刚拿到飞凌的OK6410,发现与之前2440/2410不同的是,可以通过SD卡一键烧写U-Boot、zImage等。一开始还始终不能下载成功,这里有几个地方需要注意:
1. 在win7下需要以管理员身份运行,再format(这一步必须有,不能使用右键格式化),最后再program;
2. 如果error,重新启动软件,重复上步;
3. 有的人说不能使用电脑自带的SD卡读卡器,必须使用读卡器插在USB口上,但是我已经成功烧写,供大家参考。
4. 还有人说用TF卡加SD卡套不行,也有人证明这是可行的。http://www.nuedc.net.cn/thread-18457-1-1.html
这个功能是如何实现的呢?查阅资料后,有了一些自己的理解,总结如下:
首先,来看下6410的一个启动方式选择。
设置为从SD卡启动,11111000,
上电或复位后,物理地址位于0x80000000的32K IROM被映射都地址0。(BL0)
这段程序是固化在处理器中的,它做一些初始化工作:1. 禁用Watch-dog,2. 初始化TCM,3. 初始化设备拷贝函数,用于拷贝BL1到SteppingStone中,4. 初始化栈区域,5. 初始化PLL,6. 初始化指令Cache,7. 初始化堆区域,8. 拷贝BL1到SteppingStone中,9. 验证BL1,10. 跳转到SteppingStone中运行
从0地址开始运行,该程序初始化后,从SD卡读取SD卡<=8K代码(BL1),写到内部RAM,然后执行这段程序,BL1可以初始化系统时钟,UART,SDRAM等设备,然后拷贝Bootloader2(BL2)到SDRAM中。
跳转到SDRAM中的BL2,继续运行,BL2可以支持更强大的功能,可以将OS加载到SDRAM中,然后运行OS。
因此,我猜测,mmc.bin即BL1和BL2,SD_Write程序将这个写入SD卡的特殊位置,如下。下面user file system是我们可以直接拷入SD卡的,而后面的是看不到的,只有通过软件才能写入。
而飞凌提供的mmc.bin会在初始化之后,自动擦除nandflash,然后从user file system中查找是否存在u-boot.bin zImage cramfs这些文件,一个一个烧写入flash指定地址。这应该是在BL2中实现的。
很多人都对飞凌OK6410配套光盘中mmc.bin非常感兴趣,也许因为它没有开源的原因吧。这里我总结一下我猜测的它的功能。我觉得总的来说相当于一个uboot。
1.初始化后面要用到设备;
2.在1秒内不按键就自动擦除nandflash,从SD卡中读取u-boot.bin,写入nand;从SD卡中读取zImage、cramfs等文件写入nand;
3.如果按键就相当于一个uboot