- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 3 章 嵌入式bootloader原理及移植
目 录 嵌入式BootLoader 的基本概念 嵌入式系统中的 OS 启动加载程序 相对于操作系统内核来说,它是一个硬件抽象层 ARM中,系统在上电或复位时从地址0处开始执行,这个地址是Boot Loader 程序 在嵌入式系统中,BootLoader 是严重地依赖于硬件而实现的 在操作系统内核运行之前运行的一段小程序,功能: 初始化硬件设备 建立内存空间的映射图 调整系统的软硬件环境,以便操作系统内核启动 嵌入式BootLoader 的基本概念 嵌入式BootLoader 的基本概念 嵌入式BootLoader的两个阶段 BootLoader的 stage1 BootLoader的 stage1 BootLoader的 stage1 BootLoader的 stage1 BootLoader的 stage1 BootLoader的 stage1 BootLoader的 stage2 BootLoader的 stage2 BootLoader的 stage2 在 4GB 物理地址空间中哪些地址范围被分配用来寻址系统的RAM 单元 如SA-1100 中,从 0xC0000000 开始的 512M空间被用作系统的 RAM 空间 在Samsung S3C44B0X 中,从0x0c00,0000 到 0x1000,0000之间的 64M 地址空间被用作系统的 RAM 地址空间 嵌入式系统往往只把 CPU 预留的全部 RAM 地址空间中的一部分映射到 RAM 单元上,而让剩下的那部分预留 RAM 地址空间处于未使用状态 Boot Loader 的 stage2 必须检测整个系统的内存映射情况 必须知道 CPU 预留的全部 RAM 地址空间中的哪些被真正映射到 RAM 地址单元,哪些是处于 unused 状态的 BootLoader的 stage2 规划内存占用的布局 内核映像所占用的内存范围 根文件系统所占用的内存范围 从 Flash 上拷贝 BootLoader的 stage2 Linux 2.4.x 以后的内核都期望以标记列表(tagged list)的形式来传递启动参数 启动参数标记列表以标记 ATAG_CORE 开始,以标记 ATAG_NONE 结束 每个标记由标识被传递参数的 tag_header 结构以及随后的参数值数据结构来组成 在嵌入式 Linux 系统中,通常需要由 Boot Loader 设置的常见启动参数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD等 BootLoader的 stage2 直接跳转到内核的第一条指令处 在跳转时,下列条件要满足 1. CPU 寄存器的设置 R0=0;R1=机器类型 ID;R2=启动参数标记列表在 RAM 中起始基地址 2. CPU 模式 必须禁止中断(IRQs和FIQs); CPU 必须 SVC 模式; 3. Cache 和 MMU 的设置 MMU 必须关闭; 指令 Cache 可以打开也可以关闭; 数据 Cache 必须关闭 BLOB目录分析 include :包含的头文件 src :源码目录 tools :工具 configure.in:这是最重要的文件,整个配置、编译、安装过程都由它来主导。主要包含了一些对软件包需要的或者可以使用的系统特征进行测试的宏。 Makefile.am:命令automake 根据它来生成Makefile.in,再由./configure 把makefile.in 变成最终的Makefile . start-ld-script、rest-ld-script链接脚本 OUTPUT_FORMAT(elf32-littlearm, elf32-littlearm, elf32-littlearm) //默认、大端、小端输出模式为elf32-littlearm OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . = 0 //表示start标号后的地址为0 . = ALIGN(4); //4字节对齐 .text : { *(.text) } //所有的代码段的数据放置于此 . = ALIGN(4); .rodata : { *(.rodata) } //所有的数据段的数据放置于此 . = ALIGN(4); .data : { *(.data) } //所有的可读可写的数据放置于此 . = ALIGN(4);
您可能关注的文档
- 电工基础_第一章_电路的基本概念和基本定律.ppt
- 电磁场与电磁波第11讲焦耳定律边界条件电阻计算及第5章复习.ppt
- 电子母猪群养和分栏种猪测定有助种族遗传潜能的发挥.ppt
- 电流、电阻、电功率及欧姆定律.ppt
- 疟原虫形态及镜检技术(欧阳榕).ppt
- 痿病(chinese medicine.ppt
- 病因性研究证据的分析与评价2014.3.ppt
- 电力系统小扰动稳定分析(八).ppt
- 登革病毒实验室检测技术(精美自制).ppt
- 百合设施栽培 14109109.ppt
- 讲稿:深入理解“五个注重”把握进一步深化改革统筹部署以钉钉子精神抓好落实.pdf
- 副市长在2025年全市医疗工作会议上的讲话.docx
- 2025年市县处级以上党委(党组)理论学习中心组专题学习计划.docx
- 市民族宗教事务局党组书记、局长2024年度民主生活会个人对照检视发言材料.docx
- 烟草局党组书记2024年度抓基层党建工作述职报告.docx
- (汇编)学习2025年全国教育工作会议精神心得体会发言心得感悟.pdf
- 汇编学习领会在二十届中纪委四次全会上的重要讲话精神心得体会.pdf
- 在2025年镇安全生产、消防安全和生态环境保护第一次全体会议上的讲话提纲.docx
- 书记干部座谈会上的讲话+纪委全会上的讲话.pdf
- 党课:从毛泽东诗词中感悟共产党人初心使命.docx
文档评论(0)