No.41715 作者:xwmlz 邮件:liuzhu@re-er.com.cn ID:103464 登陆:54次 文章数:68篇 最后登陆IP:222.210.192.17 最后登陆:2009/8/19 9:28:31 注册:2008/3/6 16:40:54 财富:639 发帖时间:2008/5/4 16:05:41 发贴者IP:222.210.207.76 标题:xwmlz:BootLoader的基本概念 [原创] 摘要:No.41715BootLoader的基本概念 [原创] BootLoader的基本概念 板级支持包(BSP) BSP是板级支持包(Board Support Package)的缩写,是通常用在嵌入行业中的一个术语,用来代表在一个特殊硬件平台上快速构建一个嵌入操作系统所需的原始资料或者二进制软件包。BSP的作用是支持操作系统,使之能够更好的运行于硬件平台。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,包括Windows CE、Linux、Vxworks等。SoC/CPU厂商应向其芯片的用户提供一个基本的BSP包,以支持主板厂商或整机制造厂商在此基础上定制和开发各种商用终端产品。 在嵌入式系统学习过程中设计到了Bootloader,下面讲述了Bootloader的基本作用,在后续的文章中我将对如何编写自己的Bootloader进行介绍。 1. Bootloader的基本概念: 简单地说,bootloader就是在操作系统内核运行前运行地一段小程序。通过这段小程序,可以对硬件设备,如CPU、SDRAM、Flash、串口等进行初始化,也可以下载文件到系统板、对Flash进行擦除和编程,真正起到引导和加载内核镜像的作用,但是随着嵌入式系统的发展,bootloader已经逐渐在基本功能的基础上,进行了扩展,bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能上的使用支持,以方便开发人员进行开发和调试。从这个层面上看,功能扩展后bootloader可以虚拟地看成是一个微小的系统级的代码包。 bootloader是依赖于硬件而实现的,特别是在嵌入式系统中。不同的体系结构需求的bootloader是不同的;除了体系结构,bootloader还依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的bootloader,未必能够运行在另一块电路开发板上。 BootLoader最为系统复位或上电后首先运行的代码,一般应写在起始物理地址0x0开始。Bootloader的启动过程可以是单阶段的,也可以是多阶段的。通常多阶段的bootloader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的bootloader大多数是二阶段的启动过程,也即启动过程可以分为stage 1和stage 2两部分。 2. ARM Bootloader的一般作用 对于一个ARM系统来说,本质上,bootloader作为引导与加载内核镜像的“工具”,在实现上,必须提供以下几个功能,更确切地说,必须做到以下几点: (1) 初始化RAM(必需):bootloader必须能够初始化RAM,因为将来系统要通过它保存一些Volatile数据,但具体地实现要依赖与具体的CPU以及硬件系统。 (2) 初始化串口(可选,推荐):bootloader应该要初始化以及使能至少一个串口,通过它与控制台联系进行一些debug的工作;甚至与PC通信。 (3 n启动内核镜像(必需):根据内核镜像保存的存储介质不同,可以有两种启动方式:FALSH启动以及RAM启动;但是无论是哪种启动方式,下面的系统状态必须得到满足: l CPU寄存器的设置: R0=0; R1=机器类型; R2=启动参数标记列表在RAM中的起始地址; 这三个寄存器的设置是在最后启动内核时通过启动参数来传递完成的。 l CPU模式: 关闭中断; 属于SVC模式; Bootloader中没有必要支持中断的实现,这属于内核机制以及设备驱动管理的管理范畴;SVC模式是系统 ......
>>返回讨论的主题
|