1 烧写裸板程序的4种方法
1.1 使用并口工具烧写
1.2 使用jlink烧写(只能烧写nor flash)
1.3 使用openjtag工具烧写(配合oflash)
1.4 nor flash上的uboot烧写:
1.4.1 利用u-boot的菜单功能通过usb烧写
将开发板调为nor flash启动,接好开发板串口线后上电,u-boot启动倒计时按任意键进入菜单,选择n,下载程序到nand flash,接着接上usb线(串口旁的usb口),利用dnw软件发送程序。下载完后开发板断电,将开发板调到nand flash启动,上电观察效果。
Ubuntu下使用dnw:
sudo cp dnw /bin
sudo chmod +x /bin/dnw
sudo chmod +s /bin/dnw(使其具有超级权限,使用时就不用总是加sudo命令)
lsusb查看多了一个usb设备
dnw uImage
dnw是一个USB工具,通过USB发送文件给具有USB下载功能的bootloader。
命令本身的使用方法为(要发送成功,单板必须运行具有USB下载功能的bootloader):
sudo dnw <file> [address]
意思为:它将文件<file>通过USB口发送到单板上;
[address]用来表示dnw想告诉开发板,这个文件想保存在的SDRAM地址;
可以不写[address],默认为0x30000000;
bootloader会自己决定把文件保存在SDRAM哪里,是否使用[address]取决于bootloader。
另外无论是Ubuntu或Windows下也可以不使用u-boot的菜单,输入q退出菜单,然后使用u-boot的命令进行操作。
usb命令的使用方法可以输入“help usbslave”命令看到:
usbslave [wait] [loadAddress](只起)
"wait" is 0 or 1, 0 means for return immediately, not waits for the finish of transferring
这表示:运行usbslave即可启动USB下载,[wait]、[loadAddress]这两个地址是可选的;
如果[wait]的值是0,u-boot将不等待USB传输完成,这时你可以立刻输入下一条u-boot命令;
如果[wait]的值是1,u-boto将等待USB传输完成,完成之后你才能输入下一个u-boot命令;
如果指定[loadAddress],那么下载的文件将保存在SDRAM地址[loadAddress]处,否则存放地址由主机的dnw命令指定
注意,dnw和usbslave命令配合只是把程序下载到SDRAM中,还得用nand erase和nand write写到nand flash中。
1.4.2 TFTP下载
电脑端下载tftpd32服务端软件,指定下载程序目录,指定网卡(我的是无线网卡)。开发板调成nor flash启动,接好串口,将开发板的网线接到无线路由器上,上电后任意键进入u-boot菜单,q退出菜单,可以利用help tftp查看使用方法,接着print查看ip,ipaddr为开发板ip,serverip为tftp服务器ip(即电脑ip),输入如下三条命令:
set ipaddr 192.168.3.11,set servip 192.168.3.2,save,然后利用ping 192.168.3.2,此处应注意关闭电脑的防火墙,还有就是不能用电脑ping主板,u-boot不会回ping包。
tftp 30000000 lcd.bin(将lcd.bin这个程序下载到SDRAM中),利用mtd命令查看nand flash分区,nand erase bootloader(擦除这个分区),nand write 30000000 bootloader
(将程序下载到nand flash),下载完后开发板断电,将开发板调到nand flash启动,上电观察效果。
1.4.3 NFS下载
nfs 30000000 192.168.3.6:/work/nfs_root/uImage(Ubuntu主机ip与其nfs配置的路径)
2 重新烧写整个系统
2.1 烧写u-boot。
2.2 烧写内核:dnw或者tftp
dnw: 在菜单里输入k, 然后使用dnw.exe发送文件
tftp:
tftp 30000000 uImage
nand erase kernel
nand write.jffs2 30000000 kernel
2.3 烧写文件系统
dnw: 在菜单里输入y, 然后使用dnw.exe发送yaffs2文件
或
dnw: 在菜单里输入j, 然后使用dnw.exe发送jffs2文件, 再参考使用手册P44设置bootargs
tftp:
tftp 30000000 fs_qtopia.yaffs2
nand erase root
nand write.yaffs 30000000 0x00260000 $(filesize)
or:
tftp 30000000 fs_qtopia.jffs2
nand erase root
nand write.jffs2 30000000 0x00260000 $(filesize)
烧写完后,输入reset
3 uboot打补丁、建source insight工程、编译、烧写
打补丁:tar -xjvf u-boot-1.1.6.tar.bz2
patch -p1 < ../u-boot-1.1.6_100ask24x0.patch
patch命令p后面的数字代表去掉第n个斜线前的内容,我们现在已经在u-boot-1.1.6目录,所以是-p1。
编译:cd u-boot-1.1.6
4.内核打补丁、建source insight工程、编译、烧写
打补丁:tar -xjvf linux-2.6.22.6.tar.bz2
编译:cp config_ok .config
问题:"mkimage" command not found - U-Boot images will not be built
执行sudo apt-get install uboot-mkimage提示:However the following packages replace it: u-boot-tools:i386 u-boot-tools,然后执行sudo apt-get install u-boot-tools