Bootm的流分析.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Bootm的流分析

Bootm的流程分析 Bootm的流程分析 一、在开始之前先说明一下bootm相关的东西。 1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把flash中的内核镜像复制到sdram中。 2、-a参数后是内核的运行地址,-e参数后是入口地址。 3、 1)如果我们没用mkimage对内核进行处理的话,那直接把内核下载到0运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag建议是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 2)如果使用mkimage生成内核镜像文件的话,会在内核的前头加上了64byte的信息,供建立tag之用。bootm命令会首先判断bootm xxxx 这个指定的地址xxxx是否与-a指定的加载地址相同。 (1)如果不同的话会从这个地址开始提取出这个64byte的头部,对其进行分析,然后把去掉头部的内核复制到-a指定的load地址中去运行之 (2)如果相同的话那就让其原封不同的放在那,但-e指定的入口地址会推后64byte,以跳过这64byte的头部。 bootm 用于加载并启动 U-Boot 能辨识的操作系统映像,即 bootm 加载的映像必须是用mkimage工具打过包的映像,bootm 不能启动直接的内核映像,因为bootm必须从映像的头获取映像的一些信息,比如操作系统的类型,映像是否压缩,映像的加载地址和压缩地址等。更详细的映像头信息可以查看mkimage工具的说明。而bootm的详细用法可通过help bootm 获得。 = help bootm bootm [addr [arg ...]] - boot application image stored in memory passing arguments arg ...; when booting a Linux kernel, arg can be the address of an initrd image Bootm 用于将内核映像加载到指定的地址,如果需要还要进行解压映像。然后根据操作系统和体系结构的不同给内核传递不同的内核参数,最后启动内核。 bootm 可以有两个参数,第一个参数为内核映像的地址,它可以是 RAM 地址或者 Flash 地址。第二个参数是可选参数,即initrd映像的地址,当采用Ramdisk 作为根文件系统时需要使用 bootm 的第二个参数。当需要加载 initrd 映像时,首先 U-Boot 把内核映像加载到指定地址,然后再把 Ramdisk 映像加载到指定地址,同时把 Ramdisk 映像的大小和地址告知内核。 Bootm命令后U-Boot会将控制权交给Kernel。 common/cmd_bootm.c是bootm的命令实现代码,下面结合U-Boob引导内核启动信息来分析bootm代码,下面是我的开发板的启动信息: U-Boot 2009.11 (Jun 25 2010 - 08:28:06) DRAM: 64 MB Flash: 2 MB NAND: 64 MiB In: serial Out: serial Err: serial Net: dm9000 Hit any key to stop autoboot: 0 NAND read: device 0 offset 0x80000, size 0x500000 5242880 bytes read: OK ## Booting kernel from Legacy Image at... Image Name: mark Created: 2010-07-02 15:37:07 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1800624 Bytes = 1.7 MB Load Address: Entry Point: Verifying Checksum ... OK XIP Kernel Image ... OK OK Starting kernel ... Uncompressing Linux.............

文档评论(0)

jiqinyu2015 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档