免费注册 查看新帖 |

Chinaunix

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

uboot问题:关于uboot引导uImage的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览
uboot问题:关于uboot引导uImage的问题
————————————————————
1、-a参数后是内核的运行地址,-e参数后是入口地址。

2、
1)如果我们没用mkimage对内核进行处理的话,那直接把内核下载到0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag建议是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。
 
2)如果使用mkimage生成内核镜像文件的话,会在内核的前头加上了64byte的信息,供建立tag之用。bootm命令会首先判断bootm xxxx 这个指定的地址xxxx是否与-a指定的加载地址相同。
(1)如果不同的话会从这个地址开始提取出这个64byte的头部,对其进行分析,然后把去掉头部的内核复制到-a指定的load地址中去运行之
(2)如果相同的话那就让其原封不同的放在那,但-e指定的入口地址会推后64byte,以跳过这64byte的头部。

————————————————————————————————
地址不相同时:
[root@localhost tftpboot]#mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage.img
Image Name:   linux-2.6.14
Created:      Fri Jan 12 17:14:50 2007
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1262504 Bytes = 1232.91 kB = 1.20 MB
Load Address: 0x30008000
Entry Point:  0x30008000


地址不相同时:
[root@localhost tftpboot]#mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage.img
Image Name:   linux-2.6.14
Created:      Fri Jan 12 17:14:50 2007
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1262504 Bytes = 1232.91 kB = 1.20 MB
Load Address: 0x30008000
Entry Point:  0x30008040


——————————————————————————————————
终于明白了freescale手册中用mkimage制作uImage的命令:
mkimage -A arm -O linux -T kernel -C none -a 0x90008000 -e 0x90008000 -n "Linux-<2.6.31>-xie-20110714-1" -d zImage-7-14 uImage-7-14
该命令属于实际loadaddr(0x90800000)与-a(0x90008000)选项后的地址不同,故uboot会分析64字节头部,然后将内核复制到0x90008000,并从入口地址运行内核。
————————————————————
如果要把内核载入到0x90008000这个地址,且使之能运行,mkimage的命令如下:
mkimage -A arm -O linux -T kernel -C none -a 0x90008000 -e 0x90008040 -n "Linux-<2.6.38>-xie-20110720-3-2" -d zImage-38-3 uImage-38-3

论坛徽章:
0
2 [报告]
发表于 2013-04-23 10:50 |只看该作者
谢谢楼主的指导,对mkimge后面的地址和tftp的地址迷惑了好久,还有一个问题想请教下,就是关于你上面说的uboot传递给kernel的参数问题,如果用bootm命令,我知道它就是用uboot自己传递过去了,如果我调试zImage的时候,用tftp下载带内存中,然后go执行的话,那么那些uboot的参数还怎么传递给kernel?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP