用u-boot启动linux

友善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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值