bootloader设计与实现

上传人:jin****ng 文档编号:53528997 上传时间:2022-02-10 格式:DOC 页数:5 大小:90.50KB
返回 下载 相关 举报
bootloader设计与实现_第1页
第1页 / 共5页
bootloader设计与实现_第2页
第2页 / 共5页
bootloader设计与实现_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第一章 第四章 boot loader设计与实现1.1 4.1 boot loader 的概念一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:引导加载程 序、Linux内核、文件系统、用户应用程序。图4.1 Linux 系统层次图引导加载程序是系统加电后运行的第一段代码。我们熟悉的PC中的引导程序一般由BIOS和位于MBR的OS Boot Loader(例如LILO或者GRUB)一起组 成。然而在嵌入式系统中通常没有像 BIOS那样的固件程序(有的嵌入式CPU有), 因此整个系统的加载启动任务就完全由 Boot Loader来完成。在嵌入式Linux 中,图4.1中的引导加载程序即等效为 Boot Loader 。简单地说,boot loader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系 统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。对于一个系统来说,本质上,Boot Loader作为引导与加载内核镜像的工具,在实现上,必须提供以下几个功能:1 初始化硬件设备为后面程序的运行以及kernel的加载准备一些基本的硬件环境。2 .初始化RAMBoot Loader必须能够初始化RAM,因为将来系统要通过它保存一些易变数据,但具体地实现要依赖于具体的 CPU以及硬件系统。3. 初始化串口Boot Loader应该要初始化以及使能至少一个串口,通过它与控制台联系进 行一些debug的工作以及与PC通信。4. 创建内核参数列表针对Linux系统来说,这是一个推荐的步骤。5. 启动内核镜像这是必须的,因为Boot Loader的最终任务就是加载内核并将控制权交与它。通常,boot loader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此在嵌入式世界里建立一个通用的 boot loader几乎是不可能的。尽管如 此,我们仍然可以对boot loader归纳出一些通用的概念来。而这仅仅局限于 理论上,至于涉及到具体的设计与实现,则要结合具体的硬件系统。同时,对 于Boot Loader的这些共同特性,理论上只局限于 Boot Loader的基本功能, 因为扩展功能众多,可以有串口、USB、以太网接口、IDE等,无法进行归纳与总结1. boot loader 所支持的CPU和嵌入式板每种不同的CPU体系结构都有不同的boot loader 。有些boot loader也支持多种体系结构的CPU,比如U-BOOT就同时支持ARM体系结构和MIPS体系 结构。除了依赖于CPU的体系结构外,boot loader实际上也依赖于具体的嵌 入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们 是基于同一种CPU而构建的,要想让运行在一块板子上的 boot loader程序也 能运行在另一块板子上,通常也都需要修改 boot loader的源程序。2. boot loader 的安装媒介(Installation Medium)系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地 址上取指令。比如,基于ARM920 core的CPU在复位时通常都从地址 0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都有某种 类型的固态存储设备(比如:ROM, EEPROM或FLASH等)被映射到这个预先安排 的地址上。因此在系统加电后,CPU将首先执行boot loader程序。3 .用来控制boot loader的设备或机制主机和目标机之间一般通过串口建立连接,boot loader软件在执行时通常会通过串口来进行I/O ,比如:输出打印信息到串口,从串口读取用户控制字符 等。4. boot loader 的启动过程是单阶段(Single Stage)还是多阶段(Multi-Stage) 11通常多阶段的boot loader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的boot loader大多都是2阶段的启动过程,也即启动过程可以分为stagel和stage2两部分。在stagel中要完成一些准备工作,目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境。其基本流程如图4.2 :硬件设备初始化为加载Boot Loader的stage2准备RAM空间设置好堆栈拷贝 Boot Loader 的 stage2 到 RAM 空跳转到stage2的C入口点图4.2 stagel流程图boot loader的stagel通常包括以下步骤(以执行的先后顺序):A)硬件设备初始化。虽然嵌入式开发板上硬件设备的种类繁多,但要实现Boot Loader的基本功能的硬件设备几乎是每个开发板都具备的。其初始化步骤如下:1)屏蔽所有的中断:提供中断服务通常是 OS设备驱动程序的责任,因此在Boot Loader的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写CPU的中断屏蔽寄存器或状态寄存器(比如ARM是通过修改CPSR寄存器)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!