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


开发板 应用进程监控 总结开发板的使用方法_开发板_02

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