友善mini2440的确是很好的学习平台,这些按照用户手册把内核移植等操作了一遍。由于我用的是Ubuntu,有些步骤跟手册上的有些不同。还好,所有问题都在Google上找到了答案^_^
u-boot比友善提供的suppervivi 强大不是一点点,友善论坛提供了完整可用的u-boot:
http://www.arm9home.net/read.php?tid-3539.html
编译烧写到mini2440中,发现u-boot使用NFS将img文件转载到RAM中,个人不喜欢这种方式。还是习惯将.img文件烧写到nand flash中,bootload 自动将kernel复制到RAM中并启动。
u-boot相关配置大多集中在/include/configs中的mini2440.h中
要修改两个地方:
#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200"
#define CONFIG_BOOTCOMMAND "nand read 0x30000000 0x80000 0x500000;bootm 0x30000000"
编译后将u-boot.bin用nor flash中的suppervivi的a方式烧写到0x00000000开始的nand flash中。使用友善的分区方式对nand flash分区 ,这样可以避免修改linux kernel中的nand flash分区表。
0x0000 0000 ~ 0x0000 60000 u-boot
0x0000 6000 ~ 0x0000 80000 u-boot参数
0x0000 8000 ~ 0x0005 80000 linux kernel
0x0005 8000 ~ root
使用u-boot提供的mkimgae工具,将zImage.img转换为u-boot可以引导的bin(一般取名为uImage)。其实mkimgae仅仅是添加了一些u-boot需要的kernel信息(40字节)在zImage.img头部。
mkimage -n 'linux-2.6.32.2' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage.img
用u-boot的usbslave 方式将uImage.img烧写到nand flash中。复位后,u-boot就可以启动内核。
以上小小的修改,花费了我3天,其实很简单的嘛。
{2010-11-02 16:46 发布在百度空间,2011-03-29 22:02 搬至CSND}