新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式系统HAL原理与BSP的实现方法

嵌入式系统HAL原理与BSP的实现方法

作者:时间:2013-10-23来源:网络收藏

随着计算机软硬件技术的快速发展,出现了越来越多的便携设备和智能设备。这些设备中通常包含控制用的CPU和相应的操作系统;这类特殊的计算机系统叫做嵌入式实时系统。嵌入式实时系统以其简洁高效等特点在计算机、通信等领域中广泛使用。
由于嵌入式实时系统应用环境的特殊性,因此在设计实现过程中存在着许多特殊问题。其中,操作系统及其他系统软件模块与硬件之间的接口形式是嵌入式实时系 统的主要特征和系统设计过程中的必需环节,也是影响应用前景的关键问题。经过近些年的发展,随着通用嵌入式操作系统技术的日趋成熟和应用的不断 扩大,一种统一的接口形式得到广泛的认可和应用,这就是通常所说的板级支持包,即
1 硬件抽象层的原理
1.1 硬件抽象层的引入

嵌入式系统HAL原理与BSP的实现方法
嵌入式实时系统作为一类特殊的计算机系统自底向上包含三个部分,如图1所示。

(1)硬件环境:是整个嵌入式实时操作系统和实时应用程序运行的硬件平台;不同的应用通常有不同的硬件环境;硬件平台的多样性是的一个主要特点。
(2)嵌入式实时操作系统——RTOS:完成嵌入式实时应用的任务调度和控制等核心功能,具有内核较精简、可配置、与高层应用紧密关联等特点。嵌入式操作系统具有相对不变性。
(3)嵌入式实时应用程序:运行于操作系统之上,利用操作系统提供的实时机制完成特定功能的嵌入式应用。不同的系统需要设计不同的嵌入式实时应用程序。
由于嵌入式系统应用的硬件环境差异较大,因此,如何简洁有效地使嵌入式系统能够应用于各种不同的应用环境是嵌入式系统发展中所必须解决的关键问题。
经过不断的发展,原先嵌入式系统的三层结构逐步演化成为一种四层结构。这个新增加的中间层次位于操作系统和硬件之间,包含了系统中与硬件相关的大部分功 能。通过特定的上层接口与操作系统进行交互,向操作系统提供底层的硬件信息;并根据操作系统的要求完成对硬件的直接操作。由于引入了一个中间层次,屏蔽了 底层硬件的多样性,操作系统不再直接面对具体的硬件环境。而是面向由这个中间层次所代表的、逻辑上的硬件环境。因此,把这个中间层次叫做硬件抽象层 HAL(Hardware Abstraction Layer)。在目前的嵌入式领域中通常也把HAL叫做板级支持包 (Board Support Package)。图2显示了引入HAL以后的嵌入式系统结构。的引入大大推动了嵌入式实时操作系统的通用化,从而为嵌入式系统的广泛应用提供了可能。

嵌入式系统HAL原理与BSP的实现方法

1.2 BSP的特点与功能
HAL/BSP的提出使通用的嵌入式操作系统及高层的嵌入式应用能够有效地运行于特定的、应用相关的硬件环境之上,使操作系统和应用程序能够控制和操作具体的硬件设备,完成特定的功能。因此,在绝大多数的嵌入式系统中,BSP是一个必不可少的层次。
由于在系统中的特殊位置,因此BSP具有以下主要特点:
(1)硬件相关性
因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作和控制具体硬件的方法。
(2)操作系统相关性
不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。
在实现上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件相关的软件模块。在功能上包含两部分:系统初始化及与硬件相关的设备驱动。

2 BSP的设计与实现
为实现上述两部分功能,设计一个完整的BSP需要完成两部分工作:
(1)设计初始化过程,完成嵌入式系统的初始化;
(2)设计硬件相关的设备驱动,完成操作系统及应用程序对具体硬件的操作。
2.1 嵌入式系统初始化以及BSP的功能
嵌入式系统的初始化过程是一个同时包括硬件初始化和软件(主要是操作系统及系统软件模块)初始化的过程;而操作系统启动以前的初始化操作是BSP的主要 功能之一。由于嵌入式系统不仅具有硬件环境的多样性,同时具有软件的可配置性,因此,不同的嵌入式系统初始化所涉及的内容各不相同,复杂程度也不尽相同。 但是初始化过程总是可以抽象为三个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
(1)片级初始化:主要完成CPU的初始化,包括设置CPU的核心寄存器和控制寄存器,CPU核心工作模式以及CPU的局部总线模式等。片级初始化把CPU从上电时的缺省状态逐步设置成为系统所要求的工作状态。这是一个纯硬件的初始化过程。
(2)板级初始化:完成CPU以外的其他硬件设备的初始化。除此之外,还要设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
(3)系统级初始化:这是一个以软件初始化为主的过程,主要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加 载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,比如网络系统、文件系统等;最后,操作系统创建应用程序环境并将控 制转交给应用程序的入口。
经过以上三个层次的操作,嵌入式系统运行所需要的硬件和软件环境已经进行了正确设置,从这里开始,高层的实时应用程序可以运行了。
需要指出:系统级初始化不是BSP的工作。但是,系统级初始化成功与否的关键在于BSP的前两个初始化过程中所进行的软件和硬件的正确设置,而且系统级 初始化也是由BSP发起的。因此,设计BSP中初始化功能的重点主要集中在前两个环节。图3显示了嵌入式系统的初始化过程。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭