用kermit通过串口往nandflash里烧写文件 | |
转自 http://bbs.ednchina.com/BLOG_ARTICLE_1983189.HTM
一.背景说明.目标板为仿照N个开发板制作的,配置如下:
NorFlash
:2MB EN29LV160AB
NandFlash:
128MB
SDRAM:
64MB
u-boot版本:u-boot-2010-03(通过移植,已支持从nandflash启动,支持 nand命令。但网卡驱动尚未移植成功,故在这里尝试用串口传输文件)
由于自己水平菜,到现在网卡驱动还没移植好,只能悲剧的用kermit通过串口往flash上烧写程序。实际上是通过串口将bin文件传送到内存,再通过u-boot的nand
write命令擦写nandflash.
二.操作步骤:
(1)通过jtag将尚未完全移植成功的uboot烧写到norflash中(在windows下)。切换到Linux,连上串口线,将开发板拨到norflash,打开kermit,如图:
(2)输入connect,如图:
(3)给板子上电,kermit打印串口信息,如图:
(4)在uboot命令中输入loadb
0x30003000,(0x30003000为传送到内存起始位置)如图:
(5)按住Ctr+\,再按c键,如图:
(6)输入命令:send
/home/strider/uboot/u-boot-2010.03/u-boot.bin,如图:
(7)按下回车,稍等片刻,产生传送文件的画面,如图:
(8)传送完成后,又回到kermit命令界面,如图:
(9)再次输入connect,回车,进入uboot命令界面,如图:
此时uboot已经传送到内存0x30003000起始的位置处。从上图可以看出文件大小是0x00027958,这个参数在下面将uboot从内存中烧写到nandflash时会用到。
(10),我们假设烧写nandflash时指定的文件大小小于上图所示的大小,看会有什么情况。在uboot命令中输入:nand
write 0x30003000 0 0x00020000,回车:
出现错误:
原因是因为nand
flash在烧写之前要先擦除,执行擦除命令如下:
再次执行nand
write 0x30003000 0 0x00020000,烧写成功,如下图:
(11),将板子启动位置拨到nandflash,重启板子,观察串口无输出。
(12)重复(1)-(9)的操作;
在烧写nand
之前执行nand
erase ;
再次执行nand
write 0x30003000 0 0x00030000,烧写成功。
(13)执行(11),观察串口有输出,如下图:
说明nandflash烧写uboot成功。