Autoboot bootloader 分析报告 - Read.DOC

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

Autoboot for db1200源码分析报告 1. Autoboot简介 2 2. Autoboot的编译和安装 2 3. Autoboot程序分析 5 3.1整体框架 5 3.2 LCD显示模块 5 3.3 内核加载模块 6 3.3.1 整体架构分析 6 3.3.2 加载不同格式内核的处理(应用层) 8 3.3.3 DataFunctions 文件系统(数据层) 10 3.3.4 DiskFunctions磁盘系统(驱动层) 12 附件二:YAMON间接加载Autoboot引导过程截屏 18 Autoboot简介 Autoboot是一种通用的bootloader,主要用来从各种媒介设备上寻找、加载和执行多种格式的内核镜像文件。一般来讲Bootloader加载内核的过程主要分两个阶段stage1和stage2,stage1的工作是设备初始化,为stage2准备RAM空间,拷贝stage2到RAM空间中,设置好堆栈等操作,这些代码通常用汇编语言来编写以达到短小精悍的目的(reset.S,platform/DB1200/reset_db1200.S),stage2通常包括初始化本阶段要使用到的硬件设备,如存储内核文件的外部存储器、检测系统内存映射、将内核镜像文件加载到内存中并为内核设置启动参数等阶段,该阶段的代码主要用C语言编写。 在AMD Au1200开发板上,Autoboot可以以两种方式运行:一是用YAMON作为引导管理器,Autoboot被YAMON间接的加载和运行;二是独立运行(standalone)方式,该方式将Autoboot写入偏移地址0xBFC0000处,然后将开发板上的启动选择开关打到另一边,在下一次启动开发板时,处理器会自动从0xBFC0000执行Autoboot进行内核的加载运行。其实这两种模式的区别就在于编译的时候有无加入stage1部分的代码,独立运行模式含有stage1和stage2,而间接加载模式只使用了stage2部分的代码,由YAMON充当stage1部分的工作。Autoboot的源代码主要是由stage2部分的C语言程序组成。 该版本支持的外部存储介质有: Flash:板载内存映象Flash,不需文件分区。 PCMCIA/CF卡:通过PC卡读卡器加载CF卡上的内存镜像文件,支持FAT16/FAT32分区格式 SD卡:支持FAT16分区格式 硬盘:支持FAT16/32分区格式 不支持Linux的EXT分区。 该版本的Autoboot支持的内核镜像文件的格式有三种: ELF(可执行链接格式ELF二进制格式) SREC(Motorola S-Record文本格式) BIN (WinCE二进制格式) Autoboot的编译和安装 先解压缩booter.tgz得到一个booter目录,在其根目录有一个make.rules的文件,该文件决定了使用什么交叉编译环境来对源代码进行编译和连接,缺省的情况如下: 可以看到,缺省的TOOLCHAIN是gcc,它使用的编译器是/usr/local/comp/mips-elf/gcc-3.2,而我们使用的是/opt/montavista/pro/devkit/mips/fp_le/bin/下面的交叉编译器,而hhl大体(之所以说大体是因为路径还有一点点不同)对应着这些编译器,所以将“#TOOLCHAIN = hhl”前的“#”去掉,为“TOOLCHAIN = gcc”加上“#”注释掉。然后把hhl对应的编译器路径做小的修改,由“TOOLSDIR = /opt/hardhat/devkit/mips/fp_le” 修改为“TOOLSDIR = /opt/montavista/pro/devkit/mips/fp_le”,最后把第145行的“LIBS += -lc”注释掉防止后面编译出错。 2、接下来配置编译的目标、平台和类型,可以使用make menuconfig 和 make config命令来启动一个向导进行配置。 下图为使用make config配置使用DB1200平台,编译目标定为BooterStandalone形式的Autoboot,从图中可以看到,平台在这里是不可选的,唯一可以选择的是编译Booter还是BooterStandalone,前者为使用YAMON加载的格式,后者为直接可以从CPU加载的格式,编译向导会后者加入CONFIG_APPS_BOOTER_STANDALONE宏定义,后面的make操作会根据该宏定义决定是否在目标文件中加入reset.S即stage1阶段的代码。 3、编译:执行make进行源代码编译,make首先使用根目录下的Makefile文件,然后转移到使用$(BOOTERROOT)/platform/Makefile继续执行,

文档评论(0)

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

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

1亿VIP精品文档

相关文档