




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统开发原理与实践 陈文智等编著 第四章嵌入式系统的BootLoader技术 1 BootLoader程序的基本概念2 BootLoader的典型结构框架3 BootLoader实验实验一BootLoader应用实验实验二U BOOT的分析和移植 1 BootLoader程序的基本概念 一个嵌入式Linux系统从软件的角度看通常可以分为四个层次 1 引导加载程序 包括固化在固件 firmware 中的boot代码 可选 和BootLoader两大部分 2 Linux内核 特定于嵌入式板子的定制内核以及内核的启动参数 3 文件系统 包括根文件系统和建立于Flash内存设备之上文件系统 通常用ramdisk来作为rootfs 4 用户应用程序 特定于用户的应用程序 有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面 常用的嵌入式GUI有 MicroWindows和MiniGUI懂 1 BootLoader程序的基本概念 BootLoader就是在操作系统内核运行之前运行的一段小程序初始化硬件设备和建立内存空间的映射图将系统的软硬件环境带到一个合适的状态 以便为最终调用操作系统内核准备好正确的环境 BootLoader所支持的硬件环境BootLoader是严重地依赖于硬件而实现的每种不同的CPU体系结构都有不同的BootLoaderBootLoader的安装地址系统加电或复位后 所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令 系统的BootLoader程序通常安排在地址0 x00000000处 BootLoader相关的设备和机制主机和目标机之间一般通过串口建立连接BootLoader软件在执行时通常会通过串口来进行I O超级终端BootLoader的启动过程通常多阶段的BootLoader能提供更为复杂的功能 以及更好的可移植性分为stage1和stage2两部分 BootLoader的操作模式启动加载模式下载模式BootLoader与主机之间的通信设备及协议最常见的是串口 协议xmodem ymodem zmodem以太网 协议tftp常用嵌入式BootloaderU boot 通用引导程序 ARM XSCALE平台Blob LART等硬件平台的引导程序 StrongARMRedBoot 基于eCos的引导程序 2 BootLoader的典型结构框架 操作系统的角度看 BootLoader的总目标就是正确地调用内核来执行大多数BootLoader都分为阶段1和阶段2两大部分阶段1实现依赖于CPU体系结构的代码 汇编 阶段2实现一些复杂的功能 C语言 2 1BootLoader阶段1介绍 BootLoader的阶段1通常包括以下步骤 1 硬件设备初始化 屏蔽所有的中断设置CPU的速度和时钟频率RAM初始化初始化LED关闭CPU内部指令 数据Cache 2 为加载阶段2准备RAM空间除了阶段2可执行映象的大小外 还必须把堆栈空间也考虑进来一般1M就够了Blob是0 xc0200000开始的1MB空间推荐 RamEnd 1MB RamEnd 标记Stage2 end stage2 start stage2 size 2 为加载阶段2准备RAM空间必须确保所安排的地址范围的的确确是可读写的RAM空间先保存memorypage一开始两个字的内容向这两个字中写入任意的数字立即将这两个字读回 若不是 则说明不是一段有效的RAM空间再向这两个字写入任意数字立即将这两个字读回 若不是 则说明不是有效的RAM空间恢复这两个字的原始内容 测试完毕 3 拷贝阶段2到RAM中复制时要确定两点 阶段2的可执行映像在固态存储设备的存放其实地址和终止地址RAM空间的起始地址 4 设置堆栈指针sp设置堆栈指针是为了执行C语言代码做好准备通常可以设置为sp stage2 end 4此时 BootLoader的阶段2可执行映象刚被拷贝到RAM空间时的系统内存布局 如下图 5 跳转到阶段2的C入口点修改PC寄存器为合适地址来实现 2 2BootLoader阶段2介绍 trampoline 弹簧床 的概念进入main 函数用汇编语言写一段trampoline小程序在trampoline汇编小程序中用CPU跳转指令跳入main 函数中去执行 而当main 函数返回时 CPU执行路径显然再次回到trampoline程序 2 2BootLoader阶段2介绍 1 初始化本阶段要使用到的硬件设备初始化至少一个串口 以便和终端用户进行I O输出信息初始化计时器等 2 检测系统的内存映射所谓内存映射就是指在整个4GB物理地址空间中有哪些地址范围被分配用来寻址系统的RAM单元例如 SA 1100CPU中 从0 xC0000000开始的512M但是 具体嵌入式系统并不实现全部预留地址 可能仅用64M因此 必须检测整个系统的内存映射情况 2 检测系统的内存映射可以用如下数据结构来描述RAM地址空间中的一段连续的地址范围 2 检测系统的内存映射整个CPU预留的RAM地址可用数组表示 2 检测系统的内存映射内存映射的检测 3 加载内核映像和根文件系统映像规划内存占用的布局内核映像所占用的内存范围一般是MEM START 0X8000到约1MB的空间根文件系统所占用的内存范围一般是MEM START 0 x100000开始的地方 3 加载内核映像和根文件系统映像从Flash上拷贝由于像ARM这样的嵌入式CPU通常都是在统一内存地址空间中寻址FLASH等固态存储设备 因此从闪存上读取数据与从RAM内存单元中读取数据并没有什么不同 4 设置内核的启动参数标记列表 taggedlist 的形式来传递启动参数 启动参数标记列表以标记ATAG CORE开始 以标记ATAG NONE结束嵌入式Linux系统中 通常需要由BootLoader设置的常见启动参数有 ATAG CORE ATAG MEM ATAG CMDLINE ATAG RAMDISK ATAG INITRD 例 设置ATAG CORE的代码如下 BOOT PARAMS表示内核启动参数在内存中的起始基地址 指针params是一个structtag类型的指针 宏tag next 将以指向当前标记的指针为参数 计算出当前标记的下一个标记的起始地址 initrd initrd的英文含义是bootloaderinitializedRAMdisk 就是由bootloader初始化的内存盘 在linux内核启动前 bootloader会将存储介质中的initrd文件加载到内存 内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统 在bootloader配置了initrd的情况下 内核启动被分成了两个阶段 第一阶段先执行initrd文件系统中的 某个文件 完成加载驱动模块等任务 第二阶段才会执行真正的根文件系统中的 sbin init进程 5 调用内核CPU寄存器的设置 R0 0 R1 机器类型ID 关于机器类型号 可以参见 linux arch arm tools mach types R2 启动参数标记列表在RAM中起始基地址 CPU模式 必须禁止中断 IRQs和FIQs CPU必须SVC模式 Cache和MMU的设置 MMU必须关闭 指令Cache可以打开也可以关闭 数据Cache必须关闭 5 调用内核C语言调用方式 2 3关于串口终端 向串口终端打印信息也是一个非常重要而又有效的调试手段如果碰到串口终端显示乱码或根本没有显示的问题 可能是因为 BootLoader对串口的初始化设置不正确运行在host端的终端仿真程序对串口的设置不正确 BootLoader启动内核后却无法看到内核的启动输出信息 确认内核在编译时是否配置了对串口终端的支持 并配置了正确的串口驱动程序BootLoader对串口的初始化设置是否和内核对串口的初始化设置一致还要确认BootLoader所用的内核基地址必须和内核映像在编译时所用的运行基地址一致 3 BootLoader实验 实验一BootLoader应用实验实验二U BOOT的分析和移植 实验一BootLoader应用实验 1 烧写XsBase255的BootLoader编译生成XsBase255专用的JTAG程序Jflash XSBase255编译生成XSBase的BootLoaderx boot255正确连线利用JTAG烧写BootLoader 实验一BootLoader应用实验 2 熟悉使用Bootloader指令 执行各个指令后将其结果与下表的description进行比较 实验二U BOOT的分析和移植 1 U BOOT的特点在线读写Flash DOC IDE IIC EEROM RTC支持串行口kermit和S record下载代码识别二进制 ELF32 uImage格式的Image 对Linux引导有特别的支持单任务软件运行环境 脚本语言支持 类似BASH脚本 支持WatchDog LCDlogo和状态指示功能等支持MTD和文件系统支持中断详细的开发文档 实验二U BOOT的分析和移植 2 U BOOT源代码结构 board 和一些已有开发板相关的文件 common 与体系结构无关的文件 实现各种命令的C文件 cpu CPU相关文件 disk disk驱动的分区处理代码doc 文档drivers 通用设备驱动程序 fs 支持文件系统的文件net 与网络有关的代码lib arm 与ARM体系结构相关的代码tools 创建S Record格式文件和U BOOTimages的工具 实验二U BOOT的分析和移植 3 对U BOOT的移植建立自己开发板的目录和相关文件在include configs目录中添加头文件xsbase h在board 目录下新建xsbase目录 创建如下文件 flash c memsetup S xsbase c Makefile和u boot lds添加网口设备控制程序 cs8900网口设备的控制程序cs8900 c和cs8900 h 实验二U BOOT的分析和移植 4 修改Makefile在u boot 1 1 2 Makefile中加入 xsbase config unconfig mkconfig config armpxaxsbase 实验二U BOOT的分析和移植 5 生成目标文件先运行makeclean
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校六班级班主任工作方案
- 2025年麻木专科症状分析与神经系统检测模拟卷答案及解析
- 2025年急诊内科危重病例处置模拟考试卷答案及解析
- 安全专题会议纪要讲解
- 2025年麻醉学手术镇痛安全操作规范考核题答案及解析
- 民族团结进步课件
- 2025年疼痛科疼痛治疗技术理论考核答案及解析
- 2025年检验医学常规检测操作流程考核试卷答案及解析
- 新质生产力驱动电商创新发展
- 2025年儿科急救处理规范考试答案及解析
- 2025年教资初中体育试题及答案
- 硫酸安全知识培训课件
- 2025年浙能集团应届生招聘818人笔试参考题库附带答案详解
- 拍卖师职业技能培训课件
- 电子产品仓库管理制度
- 2025年中国工商银行辽宁分行社会招聘笔试参考题库含答案解析
- 方九中学高中历史学科基地建设方案(2篇)
- 2025年中国山西省轨道交通行业市场深度研究及投资战略规划报告
- 女性私密项目培训
- 跨境电子商务课件2024新版
- 智慧税务知识培训课件
评论
0/150
提交评论