- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5 嵌入式系统的Bootloader
嵌入式系统的Bootloader 宿主机-目标机开发模式 嵌入式Linux系统从整体上讲,可以分为五大部分 Bootloader(引导加载程序) Kernel(内核) Device drivers(驱动程序) Filesystem(文件系统) Applications(应用程序) Bootloader和嵌入式Linux 构建嵌入式Linux系统的主要任务 内核部分 内核裁剪编译 底层驱动开发 应用程序部分 构建基本的嵌入式Linux文件系统 应用程序开发与移植 嵌入式Linux系统的开发流程 建立交叉编译环境 Bootloader开发 Linux内核的裁剪 构造根文件系统 驱动移植/开发 应用程序移植开发和调试 Bootloader分类 BootLoader LILO GRUB U-BOOT vivi Bootloader的通用性质 Bootloader与嵌入式Linux的关系 一个嵌入式系统从软件角度来看分为四个层次: 1.引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Bootloader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root file system。 4. 用户应用程序。特定于用户的应用程序。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下 PC 的体系结构我们可以知道,PC 机中的引导加载程序由 BIOS(其本质就是一段固件程序)和位于硬盘 MBR 中的 OS Bootloader(比如,LILO 和 GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘 MBR 中的 Bootloader 读到系统的 RAM 中,然后将控制权交给 OS Bootloader。Bootloader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动作系统。 而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序(注,有的嵌入式 CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由 Bootloader 来完成。比如在一个基于 ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址 0处开始执行,而在这个地址处安排的通常就是系统的 Bootloader 程序。 Bootloader 的概念 简单地说,Bootloader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 Bootloader 的主要运行任务就是将内核映象从硬盘上读到 RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 通常,Bootloader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Bootloader 几乎是不可能的。 Bootloader 所支持的 CPU 和嵌入式板 每种不同的 CPU 体系结构都有不同的 Bootloader。有些 Bootloader 也支持多种体系结构的 CPU,比如 U-Boot 就同时支持 ARM 体系结构和MIPS 体系结构。除了依赖于 CPU 的体系结构外,Bootloader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 而构建的,要想让运行在一块板子上的 Bootloader 程序也能运行在另一块板子上,通常也都需要修改Bootloader 的源程序。 Bootloader 的安装媒介 系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0取它的第一条指令。 一个同时装有 Bootloader、内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配结构图 : 用来控制 Bootloader 的设备或机制 主机和目标机之间一般通过串口建立连接,Bootloader 软件在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。 Bootloader 的主要任务与典型结构框架 Bootloader 的启动过程可
文档评论(0)