分类: 嵌入式
2011-05-09 09:36:23
在移植完u-boot支持nand之后,我开始了引导内核,我的内核版本是2.6.37.2,
1,制作uboot支持的内核镜像,用u-boot/tools/mkimage这个工具为你的内核加上u-boot引导所需要的文件头,具体做法如下:
./mkimage -n 'linux-2.6.37' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img
2,通过mini2440的norflash中的suppervivi,选择a,烧写u-boot,到nandflash。
3,使用suppervivi,将zImage.img烧写到nandflash的0x60000偏移处,大小为0x21733c,烧写到nand的位置可以通过vivi下的part show命令查看。
4,烧写制作好的yaffs2文件系统。
5,进入u-boot,运行nand read 0x30008000 0x60000 0x21733c,这样就把nand中偏移为0x60000,大写为0x21733c的内容读取到内存0x30008000的地址中去。
6,运行bootm 0x30008000命令,就会解压引导内核了。
当然还可以使用tftp的方式烧写引导内核,详细的内容在转载的文章:U-BOOT下使用bootm引导内核方法。
7,过程中遇到的错误总结:
当烧写完内核引导时出现arch_number内核与u-boot不匹配,用bdinfo命令查看u-boot端的ID :
再查找一下ID为362的Machine是 MACH_TYPE_S3C2440,看来是u-boot没有传递正确的ID。grep一下MACH_TYPE_S3C2440,在如下位置找到原因:
把这里的 MACH_TYPE_S3C2440 改为 MACH_TYPE_MINI2440 就OK了。
tianchunlong2011-05-12 09:09:00