(计算机应用技术专业论文)基于嵌入式arm的bootloader研究与实现.pdf_第1页
(计算机应用技术专业论文)基于嵌入式arm的bootloader研究与实现.pdf_第2页
(计算机应用技术专业论文)基于嵌入式arm的bootloader研究与实现.pdf_第3页
(计算机应用技术专业论文)基于嵌入式arm的bootloader研究与实现.pdf_第4页
(计算机应用技术专业论文)基于嵌入式arm的bootloader研究与实现.pdf_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华j e 电力大学硕士学位论文 摘要 随着信息与通讯产业的发展 嵌入式系统的产品越来越普及 并在日常生活中 扮演着重要的角色 在嵌入式l i n u x 系统上建立一个通用b o o t l o a d e r 可以为嵌入式 产品开发的前 后期工作提供方便 本文所要研究的就是基于a r m 嵌入式系统通用b o o t l o a d e r 的设计与实现 b o o t l o a d e r 是嵌入式系统中执行在内核操作系统前的一个重要模块 它的基本作用 就是启动系统并加载内核镜像 同时在完成基本功能的基础上 它还可以支持硬件模 块以完成某些特定功能 本课题以 3 c 4 4 8 0 基于l i n u x 操作系统和p x a 2 7 2 基于 w i n c e 操作系统为开发平台 分别对其b o o t l o a d e r 进行了研究 实现了b o o t l o a d e r 的基本功能并对其进行了扩展 通过对a r m 嵌入式系统中b o o t l o a d e r 的一些共同 点的分析 提出了如何对其他a r m 系统进行移植的方法 以做到通用性 最后 在网络操作系统下 实现了i p v 6 协议的分析实现 关键字 嵌入式系统 a l 眦 引导加载 i p v 6 a b s t r a c t a l o n gw i t ht h ed e v e l o p m e n to fi n f o r m a t i o na n dt h ec o m m u n i c a t i o ni n d u s t r y t h e e m b e d d e ds y s t e mi sb e c o m i n gm o r ea n dm o r ep o p u l a ra n dp l a y i n ga l li m p o r t a n tr o l ei n d a i l yl i f e e s t a b l i s h i n gag e n e r a lb o o t l o a d e ro nt h ee m b e d d e dl i n u xs y s t e mi sn e c e s s a r y f o rt h ec o n v e n i e n c eo fe m b e d d e dp r o d u c td e v e l o p m e n t t h i sp a p e ri sb a s e do nt h ea r me m b e d d e ds y s t e mg e n e r a lb o o t l o a d e rd e s i g na n d i m p l e m e n t i ne m b e d d e ds y s t e m b o o t l o a d e ri sam o d u l et h a tr u n n i n gb e f o r et h ee x c u t i o n o fc o r eo p e r a t i o n a n di t sb a s i cf u n c t i o ni st os t a r tt h es y s t e ma n dl o a dt h ec o r em i r r o r i m a g e i nt h i sp a p e r p x a 2 7 2a n d 3 c 4 4 8 0a st h ep r o c e s s o ra n dl i n u x w i n d o w sc e a s o p e r a t i n gs y s t e m t h eb a s i cf u n c t i o no fb o o t l o a d e ra n dt h ed r i v e ro fp e r i p h e r a la r e a c c o m p l i s h e d i nt h ee n d s o m ei s s u e sa b o u tt h ee x p a n s i o no ft h eb o o t l o a d e ra r e d i s c u s s e d a n di p v 6p r o t o c o li sr e a l i z e di nt h en e t w o r ko p e r a t i n gs y s t e m d i n gy a n j u n c o m p u t e ra p p l i c a t i o n d i r e c t e db yp r o l x ul e i k e yw o r d s e m b e d d e ds y s t e m a r m b o o t l o a d e r i p v 6 声明 本人郑重声明 此处所提交的硕士学位论文 基于嵌入式a r m 的b o o t l o a d c r 研究 与实现 是本人在华北电力大学攻读硕士学位期间 在导师指导下进行的研究工作和 取得的研究成果 据本人所知 除了文中特别加以标注和致谢之处外 论文中不包含其 他人已经发表或撰写过的研究成果 也不包含为获得华北电力大学或其他教育机构的学 位或证书而使用过的材料 与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意 学位论文作者签名 1 塞墅 日 期 兰巫 关于学位论文使用授权的说明 本人完全了解华北电力大学有关保留 使用学位论文的规定 即 学校有权保管 并向有关部门送交学位论文的原件与复印件 学校可以采用影印 缩印或其它复制手 段复制并保存学位论文 学校可允许学位论文被查阅或借阅 学校可以学术交流为 目的 复制赠送和交换学位论文 同意学校可以用不同方式在不同媒体l z 发表 传播学 位论文的全部或部分内容 涉密的学位论文在解密后遵守此规定 作者签名 趁 导师签名 日期 趔2 主 侈日期 趁 猃划 岳多 华北电力大学硕士学位论文 1 1 研究背景和发展现状 第一章绪言 随着人民生活水平提高带来巨大的消费需求 信息化进程的推进 电信运营业 的发展 信息产业市场空间将得到进一步拓展 在这良好的经济环境下 嵌入式系 统领域得到进一步的拓宽与发展 嵌入式系统是以应用为中心 以计算机技术为基 础 软件硬件可剪裁来适应系统对功能 可靠性 成本 体积 功耗严格要求的专 用计算机系统 嵌入式系统是将先进的计算机技术 半导体技术 电子技术和各行 业的具体应用相结合后的产物 它是一个技术密集 资金密集 高度分散 不断创 新的知识集成系统 嵌入式系统广泛地应用在信息终端 工业控制和信息家电等领 域 在嵌入式系统的开发中 嵌入式软件是实现各种系统功能的关键 也是计算机 技术最活跃的研究方向之一 不同应用对嵌入式软件系统有不同的要求 并且随着 计算机技术的发展 这些要求也在不断变化 通常 应用系统对嵌入式软件的基本 要求是体积小 执行速度快 具有较好的可剪裁性和可移植性 特别地 现在对嵌 入式软件来说 都需要操作系统的支持 简单的嵌入式系统根本没有操作系统 而 只是一个控制循环 但是 当系统变得越来越复杂时 就需要一个嵌入式操作系统 来支持 否则应用软件就会变得过于复杂 使开发难度过大 安全性和可靠性都难 以保证 嵌入式软件 特别是操作系统的支持 使得对硬件的要求越来越高 针对嵌入 式系统的各种微处理器遍布各个角落 特别是采用a r m 技术l p 核的各种微处理器 遍及各类产品市场 a r m 技术以其较高的性能和功效 使得在嵌入式系统中得到广 泛应用 世界上几乎所有的主要半导体厂商都生产基于a r m 体系结构的通用芯片 如t i m o t o r o l a i n t e l n s a t e m l p h i l i p s s a m s u n g 等 目前 a r m 芯片广泛 应用于无线产品 p d a g p s 网络 消费电子产品 s t b 及智能卡 随着嵌入式产品中高端微处理器a r m 的加入以及软件上操作系统的支持 使 得整个嵌入式系统拥有了完整的构架 现在 专门为嵌入式产品开发的各个操作系 统层出不穷 w i n d o w s c e p o c k e t p c l i n u x 等等 各界关注地也特别多 然而 如何进行加载操作系统这个问题却很少有人提出 这就是本课题研究的内容 b o o t l o a d e r b o o t l o a d e r 本身的功能就是引导与加载内核镜像 如何实现b o o t l o a d e r 的基本功能 如何针对基于a r m 体系的微处理器来实现b o o t l o a d e r 就成为本课题 的一个基本论题 除了基本功能外 b o o t l o a d e r 还能有什么更加具体的扩展功能 都属于本课题研究的范畴 1 华北电力大学硕士学位论文 1 2 课题的目的和研究内容 由于b o o t l o a d e r 的特殊性 即b o o t l o a d e r 与具体的处理器以及具体的硬件系统 紧密联系在一起 需要实际的完整硬件系统支持 当前基于a r m 体系的芯片很多 每款芯片除了具有基本的a r m 体系结构的通性外 通常还具有各自独特的特性 需分别处理 因此 为了使所实现的b o o t l o a d e r 更具有典型意义和通用性 本课题 主要研究了基于s a m s u n gs 3 c 4 4 8 0 的l i n u x 操作系统和基于i n t e lp x a 2 7 2 的w i n c e 操作系统实现b o o t l o a d e r 的处理器这两种具有代表性的芯片 并由此在理论上扩展 到整个a r m 系统 总结起来 本论文主要做了如下研究工作 1 b o o t l o a d e r 工作原理和机制的研究 2 以s a m s u n g 3 c 4 4 8 0 和i n t e lp x a 2 7 2 为代表的a r m 体系结构的研究 3 基于s a m s u n g 3 c 4 4 8 0 和u c o s i i 的b o o t l o a d e r 的研究和实现 4 基于i n t e lp x a 2 7 2 和w i nc e 的b o o t l o a d e r 的研究和实现 5 在上述的软硬件系统上 分析并实现b o o t l o a d e r 基本的启动加载功能 6 通过比较两种不同的处理器和操作系统的b o o t l o a d e r 的实现 探讨了整个 a r m 嵌入式系统的通用性设计 7 在实现b o o t l o a d e r 基本功能的基础上 增加b o o t l o a d e r 的扩展功能 包括 通过串口打印调试信息 通过串口更新镜像 通过u s b 接口更新镜像 实现 b o o t l o a d e r 加载模式与下载模式的转换以及实现对f l a s h 的擦写操作支持 8 以太网接口驱动在a r m 系统的设计 9 i p v 6 协议及其在基于a r m 的网络操作系统中的实现 2 华北电力大学硕士学位论文 第二章a r m 体系结构和b o o t l o a d e r 的研究 1 9 9 1 年a r m 公司成立于英国剑桥 主要出售芯片设计技术的授权 目前 采 用a r m 技术只是产权 i p 核的微处理器 即通常我们所说的a r m 微处理器 已 经遍及工业控制 消费类电子产品 通信系统 无线系统等各类产品市场 基于a r m 技术的微处理应用约占据了3 2 位r i s c 微处理器7 5 以上的市场份额 a r m 技术 正在逐步渗入我们生活的各个方面 a r m 公司是专门从事基于r i s c 技术芯片设计开发的公司 作为知识产权供应 商 本身不直接从事芯片生产 靠转让设计许可由合作公司生产各具特色的芯片 世界各大半导体生产商从a r m 公司购买其设计的a r m 微处理器核 根据各自不同 的应用领域 加入适当的外围电路 从而形成自己的a r m 微处理器芯片进入市场 目前 全世界有几十家大的半导体公司都使用a r m 公司的授权 因此既使得a r m 技术获得更多的第三方工具 制造 软件的支持 又使得整个系统成本降低 使产 品更容易进入市场被消费者所接受 更具有竞争力 2 1a r m 处理器介绍 a r m 处理器目前包括下面几个系列的处理器产品以及其他厂商实现的基于 a r m 体系结构的处理器 a r m 7 系列 a r m 9 系列 a r m 9 e 系列 a r m l 0 e 系列 s e c u r c o r e 系列 i n t e l 的x s c a l e 系列 i n t e l 的s t r o n g a r m 系列 1 a r m 处理器的种类繁多 接下来就简要介绍一下各主要系列处理器的特点 1 a r m 7 微处理器系列 a r m 7 系列微处理器为低功耗的3 2 位r i s c 处理器 最适合用于对价位和功耗 要求较高的消费类应用 a r m 7 微处理器系列具有嵌入式i c e r t 逻辑 调试开发 方便 极低的功耗 适合对功耗要求较高的应用 能够提供0 9 m i p s m h z 的三级流 水线结构 代码密度高并兼容1 6 位的t h u m b 指令集 对包括w i n d o w sc e l i n u x p a l mo s 等操作系统广泛支持 指令系统与a r m 9 系列 a r m 9 e 系列和a r m l 0 e 系列兼容 便于产品升级换代 主频最高可达1 3 0 m i p s 高速的运算处理能力能胜 任绝大多数的复杂应用 a r m 7 系列微处理器的主要应用领域为 工业控制 i n t e r n e t 设备 网络和调制 解调器设备 移动电话等多种多媒体和嵌入式应用 a r m 7 系列微处理器包括如下几种类型的核 a r m 7 t d m i a r m 7 t d m i s a r m 7 2 0 t a r m 7 f j 其中 a r m 7 t m d i 是目前使用最广泛的3 2 位嵌入式r i s c 处理器 属低端a r m 处理器核 2 a r m 9 微处理器系列 3 华北电力大学硕士学位论文 a r m 9 系列微处理器在高性能和低功耗特性方面提供最佳的性能 具有5 级整 数流水线 指令执行效率更高 提供1 1 m i p s m h z 的结构 支持3 2 位a r m 指令 集和1 6 位t h u m b 指令集 支持3 2 位的高速a m b a 总线接口 全性能的m m u 支持w i n d o w sc e l i n u x p a l mo s 等多种主流嵌入式操作系统 m p u 支持实时操作系统 支持数据c a c h e 和指令c a e h e 具有更高的指令和数 据处理能力 a r m 9 系列微处理器主要应用于无线设备 仪器仪表 安全系统 机顶盒 高 端打印机 数字 照相机和数字摄像机等 a r m 由3 2 位a l u 若干个3 2 位通用寄存器以及状态寄存器 3 2 8 位乘法器 3 2 3 2 位桶形移位寄存器 指令译码以及控制逻辑 指令流水线和数据 地址寄存器 组成 1 a l u 它有两个操作数锁存器 加法器 逻辑功能 结果以及零检测逻辑 构成 2 桶形移位寄存器 a r m 采用了3 2 3 2 位的桶形移位寄存器 这样可以使在 左移 右移n 位 环移n 位和算术右移n 位等都可以一次完成 3 高速乘法器 乘法器一般采用 加一移位 的方法来实现乘法 a r m 为了提 高运算速度 则采用两位乘法的方法 根据乘数的2 位来实现 加一移位 运算 a r m 高速乘法器采用3 2 8 位的结构 这样 可以降低集成度 其相应芯片面积不到并 行乘法器的1 3 4 浮点部件 浮点部件是作为选件供a r m 构架使用 f p a l 0 浮点加速器是作 为协处理方式与a r m 相连 并通过协处理指令的解释来执行 5 控制器 a r m 的控制器采用的是硬接线的可编程逻辑阵列p l a 6 寄存器 a r m 处理器一般共有3 7 个寄存器 其中包括 3 1 个通用寄存器 包括程序计数器 p c 在内 这些寄存器都是3 2 位寄存器 6 个状态寄存器 这些 寄存器也是3 2 位寄存器 2 2 编程模型介绍 2 2 1a r m 处理器模式 a r m 处理器共有7 种运行模式如下 1 用户模式u s t a r m 处理器正常的程序执行状态 2 快速中断模式f i q 用于高速数据传输或通道处理 3 外部中断模式i r q 用于通用的中断处理 4 管理模式s v c 操作系统使用的保护模式 系统除复位后的默认模式 5 中止模式a b t 当指令预取中止时进入指令中止模式 当数据访问中止时 4 华北电力大学硕士学位论文 进入数据访问中止模式 此模式可用于虚拟存储及存储保护 6 未定义指令模式u n d 此模式支持硬件协处理器的软件仿真 7 系统模式s y s 运行具有特权的操作系统任务 处理器模式可以通过软件控制进行切换 也可以通过外部中断或异常处理过程 进行切换 大多数的用户程序运行在用户模式下 应用程序不能够访问一些受操作 系统保护的系统资源 应用程序也不能直接进行处理器模式的切换 当需要进行处 理器模式的切换时 应用程序可以产生异常处理 在异常处理过程中进行模式的切 换 这种体系结构可以使操作系统控制整个系统的资源 当应用程序发生异常中断时 处理器进入相应的异常模式 在每一种异常模式 中都有一组寄存器 供相应的异常处理程序使用 这样就可以保证在进入异常模式 时 用户模式下的寄存器 保证了程序运行状态 不被破坏 系统模式并不是通过异常过程进入的 它和用户模式具有完全一样的寄存器 但是系统模式属于特权模式 可以访问所有的系统资源 也可以直接进行处理器模 式的切换 它主要供操作系统任务使用 通常操作系统的任务需要访问所有的系统 资源 同时该任务仍然使用用户模式下的寄存器组 而不是使用异常模式下相应的 寄存器组 这样可以保证当异常中断发生时任务状态不被破坏 2 2 2a r m 指令集介绍 a r m 指令系统属于r i s c 指令系统 标准的a r m 指令每条都是3 2 位 有些 a r m 核还可以执行1 6 位的t h u m b 指令集嘲 一般地 a r m 指令具有以下特点 1 指令的条件执行 a r m 指令都是条件执行 条件标志位位于程序代码字节的c o n d 位 根据c o n d 的不同编码 可以选择根据条件码标志决定指令的执行 2 灵活的第 操作数 a r m 指令 自臼另一个重要的特点是数据处理类指令有灵活的第二操作数 o p e r a n d 2 位与程序代码的位0 1 1 它既可以是立即数 也可以是逻辑运算数 使得a r m 指令可以在读取数值的同时进行算术和移位操作 3 协处理器的作用 a r m 内核可提供协处理接口 通过扩展协处理器完成更加复杂的功能 因此 a r m 指令中还包括了多条协处理器指令 使用多达1 6 个协处理器 允许将其他处 理器通过协处理器接口进行紧耦合 a r m 还包括几种内存管理单元的变种 包括简 单的内存保护到复杂的页面层次 4 t h u m b 指令 a r m 在有的版本支持1 6 位t h u m b 指令 t h u m b 指令集的整体执行速度比 a r m 3 2 位指令集快 而且提高了代码密度 5 华北电力大学硕士学位论文 5 具有r i s c 指令的特点 由于a r m 指令属于r i s c 指令 所以多具有r i s c 指令的特点 指令少 且等 长 便于充分利用流水线技术 使用多寄存器 且为简单的l o a d 和s t o r e 指令 a r m 指令按功能大致可以分为跳转指令 数据处理指令 乘法类指令 数据传 送指令 协处理器类指令以及杂项指令 包括状态寄存器传送指令 乘法类指令 软件中断指令和断点指令 a r m 指令字长为固定的3 2 位 一条典型的a r m 指令 编码格式如图2 1 所示 3 12 82 7 2 62 5 2 42 1 2 01 91 61 51 21 10 图2 1 a r m 指令编码格式 其中 1 c o n d位2 8 3 1 执行指令的条件编码 2 i 位2 5 决定o p e r a n d 2 的格式 3 o p c o d e 位2 1 2 4 操作码 4 s位2 0 表示结果是否影响状态寄存器标志位 1 影响 0 不影响 a r n位1 6 1 9 第一操作数的寄存器编码 6 r d位1 2 1 5 目标寄存器编码 7 o p e r a n d 2 位0 1 1 表示第二操作数编码 a r m 指令包括6 0 多个指令 并且支持多种寻址方式 寄存器寻址 立即数寻 址 寄存器间接寻址 寄存器变址寻址 多寄存器寻址 堆栈寻址 块拷贝寻址以 及相对寻址等 2 2 3 a r m 体系的异常中断 在a r m 体系中通常有以下3 种方式控制程序的执行流程 1 4 在程序正常执行过程种 每执行一条a r m 指令 程序计数器寄存器 p c 的值加4 个字节 每执行一条t h u m b 指令 程序计数器寄存器的值加2 个字节 整 个过程是按顺序执行 2 通过跳转指令 程序可以跳转到特定的地址标号处执行 或者跳转到特定 的予程序处执行 3 当异常中断发生时 系统执行完当前指令后 将跳转到相应的异常中断处 理程序处执行 在异常中断处理程序执行完成后 程序返回到发生中断的指令的下 一条指令处执行 a r m 体系中中断向量表中指定了各异常中断及处理程序的对应关系 它可以放 在存储地址的低端 也可以放在存储地址的高端 异常中断向量表的大小位3 2 字 节 其中每个异常中断占据4 个字节大小 保留了4 个字节空间 6 华北电力大学硕士学位论文 每个异常中断对应的中断向量表中的4 个字节的空间中放了一个跳转指令或者 一个向p c 寄存器中赋值的数据访问指令 通过这两种指令 程序将跳转到相应的 异常中断处理程序处执行 表2 1 是a r m 体系中各异常中断向量的描述表 室 坐坚二堑生堑塑量墨 中断向量偏移地址异常中断类型异常中断模式优先级 6 最低 o x 0 0 0 x 0 4 0 x 0 8 0 x o e o x l o 0 x 1 4 o x l 8 0 x l e 复位 未定义的指令 软件中断 指令预取中止 数据访问中止 保留 普通中断请求 快速中断请求 监管模式 未定义指令中止模式 监管模式 中止模式 中止模式 未使用 外部中断模式 快速中断模式 1 6 6 5 2 未使用 4 3 a r m 处理器对异常中断的响应过程如下 1 保存处理器当前状态 中断屏蔽位以及各条件标志位 这是通过将当前程 序状态寄存器c p s r 的内容保存到将要执行的异常中断对应的s p s r 寄存器中实现 的 2 设置当前的程序状态寄存器c p s r 中相应的位 包括设置c p s r 中的位 使处理器进入相应的执行模式 设置c p s r 中的位 禁止i r q 中断 当进入f i o 模 式时 禁止f i q 模式 3 将寄存器l rm o d e 设置成返回地址 4 将程序计数器值p c 设置成该异常中断的中断向量地址 从而跳转到相应的 异常中断处理程序处执行 1 2 3 课题研究的平台环境 a r m 微处理器的类型众多 本课题采用了具有代表性的s a m s u n g 和i n t e l 公司 的两款芯片 并分别实现l i n u x 和w i nc e 操作系统的b o o t l o a d e r 由此扩展到整个 a r m 芯片系列和各种操作系统中 2 3 1 硬件平台 7 华北电力大学硕士学位论文 b o o l t o a d e r 是与硬件环境息息相关的 特别是与具体的处理器与具体硬件系统 其实现与验证都需要具体的硬件环境 本课题的硬件平台分别围绕s a m s u n g 和i n t e l 处理器搭建起来的 需关注的是处理器 存储器以及在b o o t l o a d e r 中需要支持的一 些外部设备 如串口 网口 等 如图2 2 所示 s a m s u n g s 3 c b o x 或 h t e l p x a 2 7 x 图2 2 硬件平台接口 2 3 2 软件环境以及软件开发工具 为了分析b o o t l o a d e r 的通用性设计 分别采用了开放源码的l i n u x 和当前较为 流行的w i nc e 两种操作系统 由于本论文与芯片底层关系密切 甚至还涉及到相关协处理器 因此在与硬件 芯片底层相关的部分使用汇编 这样可以大大提高性能以及移植性 而在很多系统 板级的支持上 则使用c 语言 以提高代码的可读性以及层次性 l i n u x 系统所使用的编译工具均为g n u 的编译工具 一般地 g n u 工具地开 发流程如下 1 1 编写c c 或者汇编源程序 2 用相关编译器生成耳标文件 3 编写连接脚本 4 用连接器生成最终文件 e l f 格式 5 用二进制转换工具生成可下载的二进制代码 w i n c e 系统使用的编译环境 是v i s u a ls t u d i o 的可视化开发平台 此平台包含了编译器和调试器等工具 2 4b o o t l o a d e r 的相关概念 b o o t l o a d e r 就是在操作系统内核运行之前运行一个模块 初始化硬件设备 建 立内存空间的映射图 从而将系统的软硬件环境带到一个合适的状态 以便为最终 调用操作系统内核准备好正确的环境 8 华北电力大学硕士学位论文 用户应用程序 文件系统 内核 引导加载程序 系统调用接口 设备驱动 操作系统 核心机制 图2 3b o o t l o a d e r 在系统中的位置 2 4 1b o o t l o a d e r 工作原理 一个嵌入式操作系统从软件的角度看通常可以分为四个层次 引导加载程序 系统内核 文件系统 用户应用程序州 引导加载程序是系统加电后运行的第一段代码 我们熟悉的p c 中的引导程序 一般由b i o s 和位于m b r 的o sb o o t l o a d e r 例如l i l o 或者g r u b 一起组成 然 而在嵌入式系统中通常没有像b i o s 那样的固件程序 有的嵌入式c p u 有 因此 整个系统的加载启动任务就完全由b o o t l o a d e r 来完成 在嵌入式l i n u x 中 图2 3 中的引导加载程序即等效为b o o t l o a d e r 简单地说 b o o t l o a d e r 就是在操作系统内核运行前运行地一段小程序 通过这 段小程序 我们可以初始化必要的硬件设备 创建内核需要的一些信息并将这些信 息通过相关机制传递给内核 从而将系统的软硬件环境带到一个合适的状态 最终 调用操作系统内核 真正起到引导和加载内核的作用 b o o t l o a d e r 是依赖于硬件而实现的 特别是在嵌入式系统中 不同的体系结构 需求的b o o t l o a d e r 是不同的 除了体系结构 b o o t l o a d e r 还依赖于具体的嵌入式板 级设备的配置 也就是说 对于两块不同的嵌入式板而言 即使它们基于相同的c p u 构建 运行在其中一块电路板上的b o o t l o a d e r 未必能够运行在另一块电路开发板 上 b o o t l o a d e r 的启动过程可以是单阶段的 也可以是多阶段的 通常多阶段的 b o o t l o a d e r 能提供更为复杂的功能 以及更好的可移植性 从固态存储设备上启动 的b o o t l o a d e r 大多数是二阶段的启动过程 也即启动过程可以分为s t a g e1 和s t a g e2 两部分 系统加电或复位后 所有的c p u 通常都从某个由c p u 制造商预先安排的地 址上取指令 而基于c p u 构建的嵌入式系统通常都有某种类型的固态存储设备 比 如 r o m e e p r o m 或f l a s h 等 被映射到这个预先安排的地址上 因此在系统 9 华北电力大学硕士学位论文 加电后 c p u 将首先执行b o o t l o a d e r 程序 主机和目标机之闯一般通过串口建立连接 b o o t l o a d e r 软件在执行时通常会通 过串口来进行i o 比如 输出打印信息到串口 从串口读取用户控制字符等 目 标机上的b o o t l o a d e r 通过串口与主机之间进行文件传输 传输协议通常是 x m o d e m y m o d e m z m o d e m 协议中的一种 但是 串口传输的速度是有限的 因此通 过以太网连接并借助册协议来下载文件是个更好的选择 2 4 2b o o t l o a d e r 的操作模式 大多数b o o t l o a d e r 都包含两种不同的操作模式 启动加载 模式和 下载 模式 启动加载模式 这种模式也称为 自主 模式 即b o o t l o a d e r 从目标机上的某个 固体存储设备上将操作系统加载到r a m 中运行 整个过程没有用户的介入 这种 模式是b o o t l o a d c r 的正常工作模式 因此当以嵌入式产品发布的时候 b o o t l o a d e r 必须工作在这种模式下 叮 下载模式 在这种模式下 目标机上的b o o t l o a d e r 将通过串口或者网络连接或 者其它通信手段从主机下载文件 比如 下载内核镜像和根文件系统镜像等 从主 机下载的文件通常首先被b o o t l o a d e r 保存到目标机的r a m 中 然后被b o o t l o a d e r 写到目标机上的f l a s h 类固态存储设备中 b o o t l o a d e r 的这种模式通常在第一次安 装内核与根文件系统时使用 此外 以后的系统更新也会使用b o o t l o a d e r 的这种工 作模式 工作于这种模式下的b o o t l o a d e r 通常都会向它的中断用户提供丁 个简单的 命令行接口 从最终用户的角度看 b o o t l o a d e r 的作用永远就是用来加载操作系统 而并不 存在所谓的启动加载模式与下载工作模式的区别 对于普通用户来说只需要 b o o t l o a d e r 的启动加载模式 但是对于开发者来说 则需要下载模式 因为他们需 要时时刻刻地进行一些镜像的更新 为了在两者之间做到兼顾 本课题既支持启动 加载模式 也支持下载模式 2 4 3b o o t l o a d e r 的概念扩展 b o o t l o a d e r 最主要的功能是引导加载内核镜像 但是随着嵌入式系统的发展 b o o t l o a d e r 已经逐渐在基本功能的基础上进行了扩展 b o o t l o a d e r 可以更多地增加对 具体系统的板级支持 即增加一些硬件模块功能上的使用支持 以方便开发人员进 行开发和调试 从这个层面上看 功能扩展后的b o o t l o a d e r 可以虚拟地看成是一个 微小的系统级的代码包 b o o t l o a d e r 的扩展包括对串口的支持 对命令行的支持和下载内核镜像等 下 两章将对其详细探讨 1 0 华北电力大学硕士学位论文 第三章l i n u xb o o t l o a d e r 的设计实现 u c o s 操作系统包括了任务管理 时间管理 信号最管理 事件管理 邮箱 消息管理 消息队列管理 内存管理 事件标志组管理等几个部分 u c o s h 只占 用了很小的存储空间 并可高度裁减 保证了系统能高效运行 u c o s i i 内核具有以下功能特点 高性能的实时操作系统核心 良好的图形用 户接口 文件系统 快速网络功能 高速u s b u c o s 的核心 包括多任务调度 采用基于优先级的抢占方式 最多可管理多达6 4 个任务 其中保留和系统自身使 用8 个任务 用户实际可用5 6 个 任务间的同步和进程间通信机制以及中断处理 内存管理机制 m m u 一个多任务环境允许实时应用程序以一套独立任务的方式构 筑 每个任务拥有独立的执行线程和它自己的一套系统资源 这些任务基于进程间 通信机制同步 u c o s 提供信号量作为任务间同步和互斥的机制 使用中断驱动 和基于优先级的调度方式 缩短了上下文转换的时间开销和中断的时延 3 1b o o t l o a d e r 的总体设计 3 1 1 阶段设计 在前面的章节中 已经介绍过b o o t l o a d e r 的启动可以是分阶段的 在设计时 我们将b o o t l o a d e r 分为两个阶段 阶段1 和阶段2 分为两个阶段的原因是 1 基于编程语言的考虑 阶段1 用主要用汇编语言 它主要进行与c p u 核以 及存储设备密切相关的处理工作 迸行一些必要的初始化工作 是一些依赖于c p u 体系结构的代码 为了增加效率以及因为涉及到协处理器的设置 只能用汇编编写 这部分直接在f l a s h 中执行 阶段2 用一般的c 语言 来实现一般的流程以及对 板级的一些驱动支持 这部分会被拷贝到r a m 中执行 2 代码具有更好的可读性与移植性 若对于相同的c p u 以及存储设备 要增 加外设支持 阶段1 的代码可以维持不变 只对阶段2 的代码进行修改 若要支持 不同的c p u 则基础代码只需在阶段1 中修改 3 1 2 地址规划设计 当b o o t l o a d e r 阶段设计好之后 需要考虑的是镜像存储的地址分配 总镜像保 存在什么地方 阶段2 对应的镜像会被拷贝到什么地方 内核镜像原先存放在什么 地方 b o o t l o a d e r 会把它又重新加载到什么地方 如何进行准确的地址规划以保证 没有相互冲突等等 这些都是在设计阶段需要考虑的范畴 s a m s u n g 3 c 4 4 8 0 的地址空间是统一寻址的 对于本课题的硬件系统 外接 3 2 m 的f l a s h 由片选信号c s 0 选择 因此映射到物理地址的0 x 0 0 0 0 0 0 0 0 处 对 1 1 华北电力大学硕士学位论文 于6 4 m 的s d r a m 则对应s a m s u n g 3 c 4 4 8 0 的s d r a mb a n k 0 映射到 o x a 0 0 0 0 0 0 0 处 s a m s u n g 3 c 4 4 8 0 系统复位后 从物理地址的o x 0 0 0 0 0 0 0 0 开始执行第一段代 码 这个地址是由c p u 制造商预先安排的 而我们基于s a m s u n g 3 c 4 4 8 0 构建的 系统将固态存储设备f l a s h 映射到这个地址上 当b o o t l o a d c r 放到f l a s h 的起始 处后 系统加电或复位后 c p u 将首先执行b o o t l o a d e r 程序 本文所使用的内核镜像以及根文件系统镜像都被加载到s d r a m 中运行 这样 做是因为基于运行速度的考虑 尽管在嵌入式系统中内核镜像与根文件系统镜像也 可以直接在r o m 或f l a s h 这样的固态存储设备中直接运行 所以b o o t l o a d e r 在 启动时以及加载内核时通常要考虑这一点 虽然b o o t l o a d e r 最终生成一个可执行镜像 但是为了更能清楚的解释其实现流 程 在此虚拟地将其与启动阶段相对应起来 分成两个镜像 镜像1 和镜像2 事 实上 在编译过程中是会形成这两个镜像 除了一个总的镜像镜像1 还有被拷贝 至s d r a m 中的镜像2 在本课题中 将物理地址的0 x 0 0 0 0 0 0 0 0 0 x 0 0 0 4 0 0 0 0 存 放b o o t l o a d c r 的镜像 内核镜像放在物理地址开始o x 0 0 0 c 0 0 0 0 之后的1 m 空间内 内核镜像一般都小于1 m 大小 在前面的阶段设计中已经谈及镜像2 在s d r a m 中运行 这样b o o t l o a d e r 的启动速度会大大加快 因此本课题将镜像2 放在s d r a m 的起始地址o x a 0 0 0 0 0 0 0 处运行 而内核镜像则规划至物理地址的0 x a 0 3 0 0 0 0 0 处执 行 2 1 放在这边是基于这样的考虑 l i n u x 内核会在s d r a m 开始处存放一些全局 数据结构 比如启动参数和内核页表等 所以预留一段空间 3 1 3 模式设计 对于普通用户来说只需要b o o t l o a d c r 的启动加载模式 但是对于开发者来说 则需要下载模式 因为他们需要时时刻刻地进行一些镜像的更新 为了在两者之间 做到兼顾 本课题既支持启动加载模式 也支持下载模式 具体思路为 在b o o t l o a d c r 做完 些硬件初始化工作后 而在加载内核镜像之前 先在一定的时间内等待有没 有用户有键盘输入 如果没有 则为启动加载模式 直接加载内核镜像进行启动 如果有 则进入命令行格式 这时开发者就可以根据自己的需要以及b o o t l o a d e r 的 支持情况 做一些其他的工作 模式的转换设计主要在阶段2 中实现n 3 1 综合起来 整个b o o t l o a d e r 的实现流程如图3 1 所示 华北电力大学硕士学位论文 图3 1b o o t l o a d e r 的实现过程 3 2b o o t l o a d e r 的具体实现 b o o t l o a d e r 分为两个阶段实现 下面将详细分析其实现机制和代码 3 2 1 阶段1 的实现 阶段1 通常包括以下步骤 以执行的先后顺序 1 一些基本硬件的初始化工作 2 为加载镜像2 准备r a m 空间 r a m 足够的情况下可以省略 3 把镜像2 拷贝到r a m 空间 4 跳转到镜像2 的入口点 一般是c 入口点 下面结合相关具体代码描述相关的实现 其中涉及到的汇编代码可以参考 a r m 指令集 和一般的汇编一样 首先要做的是下面的 些操作 1 定义a r m 各模式的栈大小 e q um o n s t a c k s z 4 0 9 6 1 3 华北电力大学硕士学位论文 e q uf i q s t a c k s z 4 0 9 6 e q ui r q s t a c k s z 4 0 9 6 e q ua b t s t a c k s z 4 0 9 6 e q uu n d s t a c k s z 4 0 9 6 e q us y s s t a c k s z 4 0 9 6 2 申明各模式的栈 g l o b a lm o n s t a c k g l o b a lf i q s t a c k g l o b a li r q s t a c k g l o b a la b t s t a e k g l o b a lu n d s t a c k g l o b a ls y s s t a c k 3 将各模式的栈与栈大小结合起来 即为各栈分配栈大小 c o m m m o n s t a c k m o n s t a c k s z c a 3 m m f i q s t a c k f i q s t a c k s z c o m m k q s t a c k k q s m c k s z c o m m a b t s t a c k a b t s t a c k s z c o m m u n d s t a c k u n d s t a c k s z c o m m s y s s t a c k s y s s t a c k s z 4 接着就是申明一些标号量 这些基本工作做完之后 开始进入真正的初始 化工作 标识为正文段 以r e s e t 标号标识 一开始处设置异常中断向量表 当冷启动时 直接跳转至 对应处进行启动 r e s e t bc o l d s t a r t bu n d e f i n e d i n s t r u c t i o n b s o f t w a r e i n t e r r u p t ba b o r tp r e f e t c h ba b o r td a t a bn o tu s e d b i n t e r r u p t r e q u e s t b f a s t i n t e r r u p t r e q u e s t 系统的正常启动 都属于冷启动 程序直接跳转至c o l d s t a r t 标号处执行 接着 完成的功能包括 1 使能各协处理器 s a m s u n g 3 c 4 4 8 0 中很多特殊功能都需要借助于协处理 1 4 华北电力大学硕士学位论文 器 比如存储管理 i d rr o o x 2 0 0 1 m c r p l 5 0 r o c 1 5 c l 0 关闭m m u 内部指令 数据c a c h e 以及写缓冲区 a r m 体系b o o f l o a d e r 中都无 需m m u 的功能 所有的地址都直接使用物理地址 c a c h e 也都关闭 l d rr o 0 x 0 0 0 0 0 0 7 8 m c rp 1 5 0 r o c l c o 0 2 清空t l b c a c h e s 以及写缓冲区 当系统冷启动时所有的保留数据都以无 效处理 因此都要清空 况且c a c h e 都已经关闭 l d rr o 0 x 0 0 0 0 0 0 0 0 m c r p l 5 0 r o c 8 c 7 0 m c r p l 5 0 r o c 7 c 7 0 m c r p l 5 0 r o c 7 c 1 0 4 3 开系统各存储空间域的访问权限 a r m 体系中系统的存储空间分为最多的 1 6 个域 每个域对应一定的内存区域 该区域具有相同的访问控制属性 m m u 中 寄存器c 3 用于控制与域相关属性的配置 m v nr 0 加 m e t p l 5 0 r o c 3 c o 0 以上涉及的是相关存储方面通用的处理 接着就要开始具体的硬件初始化的工 作了 与具体的c p u 以及具体的存储芯片大小有关 4 屏蔽所有的中断 为中断提供服务通常是操作系统设备驱动程序的责任 因此在b o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论