硬件抽象层
陈天洲、陈文智
BSP的概念
BSP全称“板级支持包”(Board Support Packages),说的简单一点,就是一段启动代码,和计算机主板的BIOS差不多,但提供的功能区别就相差很大
在Windows CE中,BSP是驱动程序、OEM适应层(OEM Adaptation Layers,OAL)、硬件抽象层(HAL)以及启动设备和使外设正常工作所需BIOS文件的集合。
BSP和BIOS区别
BIOS主要是负责在电脑开启时检测、初始化系统设备(设置栈指针,中断分配,内存初始化..)、装入操作系统并调度操作系统向硬件发出的指令。
BSP是和操作系统绑在一起运行,尽管BSP的开始部分和BIOS所做的工作类似,但是 BSP还包含和系统有关的基本驱动
BIOS程序是用户不能更改,编译编程的,只能对参数进行修改设置,但是程序员还可以编程修改BSP,在BSP中任意添加一些和系统无关的驱动或程序,甚至可以把上层开发的统统放到BSP中
不同系统中的BSP
一个嵌入式操作系统针对不同的CPU,会有不同的BSP
即使同一种CPU,由于外设的一点差别BSP相应的部分也不一样
BSP的特点与功能
硬件相关性
因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作和控制具体硬件的方法。
操作系统相关性
不同的操作系统具有各自的软件层次结构, 因此,不同的操作系统具有特定的硬件接口形式。
BSP的设计与实现
为实现上述两部分功能,设计一个完整的BSP需要完成两部分工作:
(1)设计初始化过程,完成嵌入式系统的初始化;
(2)设计硬件相关的设备驱动,完成操作系统及应用程序对具体硬件的操作。
嵌入式系统初始化以及BSP的功能
嵌入式系统的初始化过程是一个同时包括硬件初始化和软件初始化的过程;而操作系统启动以前的初始化操作是BSP的主要功能之一
初始化过程总可以抽象为三个主要环境,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
初始化过程
片级初始化:
主要完成CPU的初始化,包括设置CPU的核心寄存器和控制寄存器,CPU核心工作模式以及CPU的局部总线模式等。片级初始化把CPU从上电时的缺省状态逐步设置成为系统所要求的工作状态。这是一个纯硬件的初始化过程。
板级初始化:
完成CPU以外的其他硬件设备的初始化。除此之外,还要设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时饮食软硬件两部分在内的初始化过程。
系统级初始化:
这是一个以软件初始化为主的过程,主要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,比如网络系统、文件系统等;最后,操作系统创建应用程序环境并将控制转交给应用程序的入口。
硬件相关的设备驱动程序
BSP另一个主要功能是硬件相关的设备驱动。
与初始化过程相反,硬件相关的设备驱动程序的初始化和使用通常是一个从高层到底层的过程。
尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用
而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。
BSP开发的前提和步骤
开发的前提:
熟悉硬件方面:使用CPU等
熟悉工具方面:电表,示波器,逻辑分析仪,硬件仿真器,仿真调试环境。
语言方面:汇编语言,C语言。
BSP开发的一般步骤如下:
硬件主板研制,测试。
操作系统的选定,BSP编程。
上层应用程序的开发。
第四章、硬件抽象层 来自淘豆网www.taodocs.com转载请标明出处.