主题 : 固件和引导装载程序及技巧 复制链接 | 浏览器收藏 | 打印
arm9之家,加油!一起加油!
级别: 新手上路
UID: 74373
精华: 0
发帖: 24
金钱: 130 两
威望: 26 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2012-07-23
最后登录: 2012-09-27
楼主  发表于: 2012-08-11 13:37

 固件和引导装载程序及技巧

l 固件 是底层的嵌入式软件,它提供硬件和应用程序/操作系统层软件之间的接口。固定存储在ROM里,嵌入式硬件系统上电就立即执行,在完成系统初始化以后,固定可以继续保持活动状态,以提供某些基本的系统操作。对于一个基于ARM的系统,选择什么固件取决于特定的应用:可以是装载并执行一个复杂的操作系统,也可以只是简单地将控制权交给一个小的微内核,因此,固件实现的xuqiu会有很大的不同,例如一个小的系统可能只需要一个最好的固件支持,用来引导一个小的操作系统,固件的一个主要目的是,提供一种可靠的机制来装载和引导一个操作系统。

l 引导装载程序  是一个用来引导操作系统或应用程序到硬件目标平台上的小应用程序,它在操作系统或应用程序执行以后便立即退出,引导装载程序通常包含在固件里。

为了有助于理解不同固件的实现要素,这里列出一个通常的固件执行流程,下面里仁嵌 入式培训学院讲师详细讨论每一个执行阶段:

  第一阶段是设置目标平台——准备一个操作系统引导时所需的环境,因为操作系统在运 行前都需要一个特定的环境,这一阶段包括正确地初始化平台。

  同一阶段可执行代码经常需要在不同的内核和平台上运行,在这种情况下,固件必须能 够识别它正运行在哪种内核和平台上,内核的识别通常只需读取协处理器cp15的寄存 器r0.其中保存有处理器的型号和生产商名字。有多种方法可以用来识别平台,例如检 查一组特定的外设是否存在,或简单地读取一个可预编程的芯片内容。

诊断软件提供一种有效的方法来检测出一些基本的硬件故障.由于它是用来检测硬件的,因此诊断软件都与特定的硬件有关。

调试功能是以模块和监视器的形式提供的,它为调试运行在硬件目标平台上的代码提供软件支持,这些支持包括:

ü    在ARM中建立断点,断点允许中断程序和查看处理器内核的状态;

ü    列出、修改存储器的值;

ü    显示当前处理器寄存器的内容;

ü    将存储器内容汇编成ARM和thumb指令。

交互功能:可以通过命令行解释器CLI或者与目标平台相连的专用主机调试器来发送命令。除非固件可以访问内部硬件调试电路,否则只有在ARM中的映像文件可以通过软件调试机制来进行调试。

命令行解释器CLI通常在较高级的固件实现中才有,可以通过在命令行提示符后面键入命令来更改默认配置,从而改变将要引导的操作系统,对于嵌入式系统,CLI通常需要通过一个主机终端应用程序来控制,主机和目标平台之间的通信一般通过串口或网络接口。

第二阶段是抽象硬件,硬件抽象层HAL是一个软件层,它向上通过提供一组已定义的编程接口来隐藏层的硬件。当移植到一个新的目标平台上,这些编程接口保持不变,但下层的实现却改变了。例如,2个目标平台可能使用不同的时钟外设,每个外设的初始化和配置都需要新的代码,即使硬件和软件在实现上很大不同,HAL编程接口都将保持不变。

HAL中与特定硬件外设通信的软件为设备驱动,每个设备驱动提供了标准的应用程序编程接口来对特定外设进行读/写。

第三阶段是装载一个可引导的映像文件,是否要实现这个功能,取决于用来存储映像文件的存储媒介。
文章来自:“里仁教育网:http://www.lirenedu.org/index.php?ack=xinwen&id=1138 编写”
嵌入式培训 http://www.lirenedu.org/