- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
U–boot与kernel的关系new
Author:BobZhang Copy Right 2007 bob_zhang2004@163.com Agenda U-boot 的功能简要介绍 U-boot与kernel的关系 U-boot的地址与kernel的一些地址是如何定义的? 简要分析一下bootm U-boot 功能介绍 U-boot 就是为加载kernel而服务的 简单来讲:u-boot 启动过程分为两个部分 :Stage 1 and Stage2 Stage1 主要是初始化硬件设备, 然后最主要的功能就是把Stage2 load到RAM中去。 U-boot 与kernel的关系 U-boot为kernel服务, u-boot为kernel提供一些kernel无法知道的信息,比如ramdisk在RAM中的地址 Kernel也必须为U-boot提供必要的信息:通过mkimage这个tool可以给zImage添加一个header: typedef struct image_header { uint32_t ih_magic; /* Image Header Magic Number */ uint32_t ih_hcrc; /* Image Header CRC Checksum */ uint32_t ih_time; /* Image Creation Timestamp */ uint32_t ih_size; /* Image Data Size */ uint32_t ih_load; /* Data Load Address */ uint32_t ih_ep; /* Entry Point Address */ uint32_t ih_dcrc; /* Image Data CRC Checksum */ uint8_t ih_os; /* Operating System */ uint8_t ih_arch; /* CPU architecture */ uint8_t ih_type; /* Image Type */ uint8_t ih_comp; /* Compression Type */ uint8_t ih_name[IH_NMLEN]; /* Image Name */ } image_header_t; 此header是如何生成的? 利用u-boot里面的mkimage工具来生成uImage (u-boot源码包/tools/mkimage.c ) 用法: -A arm ??? -------- 架构是arm-O linux ???-------- 操作系统是linux-T kernel ?-------- 类型是kernel-C none ?? -------- 压缩类型为无压缩-a---- image的载入地址(hex)-e---- 内核的入口地址(hex),因为信息头的大小是0x40-n linux- --- image的名字-d zImage ??? ??? ??? ---- 无头信息的image文件名uImage2.6. 18.8??? ---- 加了头信息之后的image文件名 生成uImage 的方法 mkimage -A arm -O linux -T kernel -C none -a-e-n linux- -d zImage uImage 注释:这里的意思就是把zImage的前面加上一个0x40长度的header ,没有压缩(none) , kernel的load地址是:-a ; kernel的入口地址是 –e 不知道是否对入口地址有疑问:为什么入口地址不是 0呢? 答案就在 u-boot 里面的bootm命令的实现代码上, 我会在 “分析bootm源码”中给予分析介绍 , 来详细分析 1 mkimage 如何指定入口参数 ( -e 0xxxxxx) 2 mkimage 指定了入口参数后, 你用tftpboot 下载kernel到哪个地址? Mkimage 的执行结果 #/usr/local/src/u-boot-1.2.0/tools/mkimage -A arm -O linux-T kernel -C none -a-e-n linux- -d zImage uImage imagefile = uImage Image Name: linux- Created: Fri
文档评论(0)