上一小结我们已经烧写完u-boot,我烧写的u-boot是板子厂家定制的,本小节将利用这个u-boot烧写整个系统。当然,在系统移植篇的时候也会涉及到如何定制一个u-boot。
烧写整个系统我们一个叫dnw的工具,dnw是一个USB工具,通过USB发送文件给具有USB下载功能的bootloader。也就说我用的厂家定制的u-boot已经具备了USB下载功能。我需要先安装一些库:
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
然后,使用提供的dnw工具,执行如下命令即可使用:
sudo cp dnw /usr/bin/ && chmod +rx /usr/bin/dnw
首先,在终端上输入“kermit”命令,打开板子的电源,系统进入u-boot。在倒计时结束前,按下空格键,u-boot就会进入命令模式,或者说是调试模式,这也是u-boot两大功能之一。串口已经输出了一些硬件信息和厂家定制的菜单,菜单如下所示:
[n] Download u-boot to Nand Flash [k] Download Linux kernel uImage [j] Download root_jffs2 image [y] Download root_yaffs image [d] Download to SDRAM & Run [z] Download zImage into RAM [g] Boot linux from RAM [f] Format the Nand Flash [s] Set the boot parameters [b] Boot the system [r] Reboot u-boot [q] Quit from menu Enter your selection:
先烧写一个kernel,就在上面输入“k”,然后在你要烧写的image文件下输入:sudo dnw uImage。默认是通过USB传到内存的0x30000000地址,当然你也可以在命令后面直接加上内存的地址。等待传递完成之后,先擦除kernel分区,还需要在u-boot命令模式下把内存里的kernel写入nandflash:
nand erase kernel
nand write.jffs2 30000000 kernel
就是把内存里的kernel写入nandflash的kernel分区。
下面我们该烧写文件系统了,同样进入菜单,输入“y”,烧写雅yaffs2格式的文件系统:sudo dnw fs_qtopia.yaffs2。然后在u-boot命令模式下先擦除root分区,再把内存里的文件系统写入nandflash:
nand erase root
nand write.yaffs 30000000 260000 2f76b40
也就说,把文件系统以yaffs的格式从内存0x30000000地址写入nandflash的0x260000的位置,大小是0x2f76b40。
整个系统就烧写完成了,其实还有其他的烧写方式,如果u-boot可以支持网络下载,我们还可以使用tftp和nfs下载,有兴趣可以自己了解,后面有可能会提到。
下一小节,将会介绍交叉编译工具。