u-boot 裸机程序至 mini2440 开发板 NAND

2019-07-12 21:06发布

 突然很想用一用几前年买的MINI2440开发板,却不知道怎样把裸机程序烧至NAND,汗,基础都不会。。。。   ############################################################################################################### 参考资料: 1、伟东山嵌入式LINUX应用开发完全手册。 2、usb2.0 pdf ch9 ch8 3、supervivi-transfer-tool; 请至google code上有项目。   ############################################################################################################### 注意事项: 1、u-boot是用的伟老师的代码,里面Usb部分code有回车换行(这种风格应该是个中国人写的,威武)。 2、u-boot需要与gcc匹配的,伟老师现成的U-boot似乎只能用arm-linux-[none-eabi]-gcc-3.x.x,4.x.x的是用不起的。 3、我的系统是windows 764-bit,visual studio 2012(c#) ,这样SuperVivi-USB-Transfer-Tool程序在用时会出错。 4、最终的U-boot是放的nor flash中去的,这样方便我们操作nand flash。 5、还要说一下,用伟老师的u-boot,还用到他在u-boot中加入的一个菜单,又新加了v,p两个操作,v下载的裸机程序到      nandflash前4k(跟n其实是一样的,只是清掉了前4k的内容),p打印nand第一页的内容(用于确认是否操作成功)   ############################################################################################################### mini2440启动(from nand)时会把nand前4k的内存拷贝至CPU内部4K ram中去并执行。裸机程序当然也需要烧至前4K,从0x000000000放我们的代码。 因此只要把程序放到这个位置,而不用去做刻意的一些面硬件初始化就可以直接执行裸机程序。   烧录的过程中发现如果烧录文件过少,就会出错,包括u-boot及SuperVivi-USB-Transfer-Tool都会有错误提示发生。 本想写写查找问题的过程,还是算了,直接说原因吧: windows端张写程序的问题: 1、如果程bin档过小:      如下代码会出错,所以烧录会失败:    SuperVivi-Transfer-Tool -->supervivi.cs--> line 496-503,t_log是一个Ui组件,而此处应是一个非UI线程,此处应该通过某种方式通知UI去    显示字体符串,为了简单,此处也可以直接注释掉。              2、如果某次烧录失败:再次烧录时,会卡在如下地方,这时重置下平台就好:       3、在U-BOOT中加入一一些代码,v p操作,这样直接用伟老师的菜单就好,而不用再切换到原始u-boot提供的菜单项中去:     a)--> 提示信息中加入cmd_menu.c 142、143行,如下: b)--> 命令处理加入(185-196行):      
c) --> 注释掉启动linux那段代码,我们只想用u-boot的usb slave功能来烧录程序,换言之,此u-boot不用引导内核的功能(commonmain.cmain_loop 425、457)。     ######################################################################################################### 如下的效果图: 1、烧录裸机程序(24 * 16字节的数据也可浇录成功):       2、nand前4k内存内容(这个就是点亮LED BIN档的内容)。     ########################################################################################## u-boot和usb-transfer-tool源码,我的下载资源中去也有,可参考。