免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1791 | 回复: 0
打印 上一主题 下一主题

移植uboot-1.3.4到mini2440(256M NAND) 之四 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览

在移植完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 :

[u-boot@MINI2440]# bdinfo
arch_number = 0x0000016A

基本上可以确定从U-boot得到的ID为 362 (0x0000016a), 内核中的 Machine ID 为:
 
linux-2.6.37.2/arch/arm/tools/mach-types
#define MACH_TYPE_MINI2440             1999

在U-boot中添加:
u-boot-1.3.4/include/asm-arm/mach-types.h
#define MACH_TYPE_MINI2440             1999

再查找一下ID为362的Machine是 MACH_TYPE_S3C2440,看来是u-boot没有传递正确的ID。grep一下MACH_TYPE_S3C2440,在如下位置找到原因:

u-boot-1.3.4/board/mini2440/mini2440.c
#if defined(CONFIG_S3C2440)
/* arch number of S3C2440-Board */
     gd->bd->bi_arch_number = MACH_TYPE_S3C2440 ;
#endif

把这里的 MACH_TYPE_S3C2440 改为 MACH_TYPE_MINI2440 就OK了。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP