- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 嵌入式系统引导程序2.ppt
嵌入式系统软件设计与开发--bootloader 嵌入式系统引导程序 主要内容包括: Bootloader 概述 常见的bootloader Blob Blob 移植 Blob 的使用 Bootloader 概述 Bootloader是在操作系统运行之前执行的一段小程序,通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。 Bootloader 概述 Bootloader的板上地址分布 Bootloader主要任务(1/2) 初始化处理器以及外设的硬件资源配置,CPU片内和片外设备,例如必须正确的配置SDRAM控制器 初始化 I/O 芯片,可能有的设备: 串口,报告Bootloader成功/失败 网络或者Flash接口,引导操作系统 执行系统自检,报告检测结果 通过用户命令行提供特定应用程序 Bootloader任务(2/2) 使用TFTP协议从网口接收、或者xmodem协议从串口接收,操作系统镜像文件到RAM 将镜像烧写到flash中,重启后负责找到该镜像、解压到RAM中,并跳转到解压位置处执行 直接跳转到RAM处执行该镜像 归纳: 初始化处理器及外设的硬件资源配置 建立内存空间映射图 Loader Boot Bootloader的操作模式 启动模式 下载模式 常见的Bootloader ARM Bootloader U-Boot是常用的ARM bootloader Armboot加入到u-boot中 支持arm720, arm920, arm926, sa1100, xscale / /projects/u-boot Blob Blob最早是为 LART项目开发的bootloader Blob被移植到其他许多ARM平台 http://www.lart.tudelft.nl/lartware/blob Redboot Redboot也被用在许多arm平台的 bootloader blob Blob简介 blob功能 Blob结构 Blob相关资源 blob编译 cd /pxa270_linux/blob_ours/blob_xscale make –f Makefile.cvs ./configure --host=arm-linux --with-board=mainstone –with-linux-prefix= /pxa270_linux/linux/ --enable-xlli --enable-network make 生成的blob保存在../blob-xscale/src/blob/ Blob - 烧写到目标板 blob引导过程分析 blob启动过程 Stage1: 基本的硬件初始化 为加载stage2准备RAM空间 拷贝stage2到RAM中 设置堆栈指针sp 跳到stage2的入口点 异常向量表 blob启动过程 Stage2: 清除BSS段 设置堆栈指针sp 初始化本阶段要使用到的硬件设备 检测系统的内存映射 加载内核映像和文件系统映像 调用内核 blob代码分析 blob移植 Blob移植 定制目标板 在configure.in加入目标板定义 board_name=Intel HCDDBBVA0 (Mainstone) AC_DEFINE(MAINSTONE,1,[Intel HCDDBBVA0 (Mainstone)]) BLOB_PLATFORM_OBJS=mainstone.o BLOB_LED_DRIVER_OBJS=led-mmap.o BLOB_LED_STARTCODE=ledasm-mmap.o BLOB_FLASH_OBJS=strata.o BLOB_NETWORK_DRIVER_OBJS=ether-smc91x.o DIAG_PLATFORM_OBJS=mainstone.o use_cpu=pxa270 use_lcd=no ;; Blob移植 指定目标板对应的.h文件 在include/blob/arch.h 中加入 #elif defined MAINSTONE #include blob/arch/mainstone.h Blob移植 添加目标板依赖文件 添加 include/blob/arch/mainstone.h src/blob/mainstone.c 当然如果自己写,那工作量太大了,可以根据目标板的情况,找一个和它类似的板子,复制过来修改。 在这里主要设置cpu速度、串口和它的波特率,各个模块在flash和ram中的位置,CPU
文档评论(0)