嵌入式系統(tǒng)HAL原理與BSP的實(shí)現(xiàn)方法
隨著計算機(jī)軟硬件技術(shù)的快速發(fā)展,出現(xiàn)了越來越多的便攜設(shè)備和智能設(shè)備。這些設(shè)備中通常包含控制用的CPU和相應(yīng)的操作系統(tǒng);這類特殊的計算機(jī)系統(tǒng)叫做嵌入式實(shí)時系統(tǒng)。嵌入式實(shí)時系統(tǒng)以其簡潔高效等特點(diǎn)在計算機(jī)、通信等領(lǐng)域中廣泛使用。
由于嵌入式實(shí)時系統(tǒng)應(yīng)用環(huán)境的特殊性,因此在設(shè)計實(shí)現(xiàn)過程中存在著許多特殊問題。其中,操作系統(tǒng)及其他系統(tǒng)軟件模塊與硬件之間的接口形式是嵌入式實(shí)時系 統(tǒng)的主要特征和系統(tǒng)設(shè)計過程中的必需環(huán)節(jié),也是影響嵌入式系統(tǒng)應(yīng)用前景的關(guān)鍵問題。經(jīng)過近些年的發(fā)展,隨著通用嵌入式操作系統(tǒng)技術(shù)的日趨成熟和應(yīng)用的不斷 擴(kuò)大,一種統(tǒng)一的接口形式得到廣泛的認(rèn)可和應(yīng)用,這就是通常所說的板級支持包,即BSP。
1 嵌入式系統(tǒng)硬件抽象層的原理
1.1 硬件抽象層的引入
嵌入式實(shí)時系統(tǒng)作為一類特殊的計算機(jī)系統(tǒng)自底向上包含三個部分,如圖1所示。
(1)硬件環(huán)境:是整個嵌入式實(shí)時操作系統(tǒng)和實(shí)時應(yīng)用程序運(yùn)行的硬件平臺;不同的應(yīng)用通常有不同的硬件環(huán)境;硬件平臺的多樣性是嵌入式系統(tǒng)的一個主要特點(diǎn)。
(2)嵌入式實(shí)時操作系統(tǒng)——RTOS:完成嵌入式實(shí)時應(yīng)用的任務(wù)調(diào)度和控制等核心功能,具有內(nèi)核較精簡、可配置、與高層應(yīng)用緊密關(guān)聯(lián)等特點(diǎn)。嵌入式操作系統(tǒng)具有相對不變性。
(3)嵌入式實(shí)時應(yīng)用程序:運(yùn)行于操作系統(tǒng)之上,利用操作系統(tǒng)提供的實(shí)時機(jī)制完成特定功能的嵌入式應(yīng)用。不同的系統(tǒng)需要設(shè)計不同的嵌入式實(shí)時應(yīng)用程序。
由于嵌入式系統(tǒng)應(yīng)用的硬件環(huán)境差異較大,因此,如何簡潔有效地使嵌入式系統(tǒng)能夠應(yīng)用于各種不同的應(yīng)用環(huán)境是嵌入式系統(tǒng)發(fā)展中所必須解決的關(guān)鍵問題。
經(jīng)過不斷的發(fā)展,原先嵌入式系統(tǒng)的三層結(jié)構(gòu)逐步演化成為一種四層結(jié)構(gòu)。這個新增加的中間層次位于操作系統(tǒng)和硬件之間,包含了系統(tǒng)中與硬件相關(guān)的大部分功 能。通過特定的上層接口與操作系統(tǒng)進(jìn)行交互,向操作系統(tǒng)提供底層的硬件信息;并根據(jù)操作系統(tǒng)的要求完成對硬件的直接操作。由于引入了一個中間層次,屏蔽了 底層硬件的多樣性,操作系統(tǒng)不再直接面對具體的硬件環(huán)境。而是面向由這個中間層次所代表的、邏輯上的硬件環(huán)境。因此,把這個中間層次叫做硬件抽象層 HAL(Hardware Abstraction Layer)。在目前的嵌入式領(lǐng)域中通常也把HAL叫做板級支持包 BSP(Board Support Package)。圖2顯示了引入HAL以后的嵌入式系統(tǒng)結(jié)構(gòu)。BSP的引入大大推動了嵌入式實(shí)時操作系統(tǒng)的通用化,從而為嵌入式系統(tǒng)的廣泛應(yīng)用提供了可能。
1.2 BSP的特點(diǎn)與功能
HAL/BSP的提出使通用的嵌入式操作系統(tǒng)及高層的嵌入式應(yīng)用能夠有效地運(yùn)行于特定的、應(yīng)用相關(guān)的硬件環(huán)境之上,使操作系統(tǒng)和應(yīng)用程序能夠控制和操作具體的硬件設(shè)備,完成特定的功能。因此,在絕大多數(shù)的嵌入式系統(tǒng)中,BSP是一個必不可少的層次。
由于在系統(tǒng)中的特殊位置,因此BSP具有以下主要特點(diǎn):
(1)硬件相關(guān)性
因?yàn)榍度胧綄?shí)時系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,所以,作為高層軟件與硬件之間的接口,BSP必須為操作系統(tǒng)提供操作和控制具體硬件的方法。
(2)操作系統(tǒng)相關(guān)性
不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。
在實(shí)現(xiàn)上,BSP是一個介于操作系統(tǒng)和底層硬件之間的軟件層次,包括了系統(tǒng)中大部分與硬件相關(guān)的軟件模塊。在功能上包含兩部分:系統(tǒng)初始化及與硬件相關(guān)的設(shè)備驅(qū)動。
2 BSP的設(shè)計與實(shí)現(xiàn)
為實(shí)現(xiàn)上述兩部分功能,設(shè)計一個完整的BSP需要完成兩部分工作:
(1)設(shè)計初始化過程,完成嵌入式系統(tǒng)的初始化;
(2)設(shè)計硬件相關(guān)的設(shè)備驅(qū)動,完成操作系統(tǒng)及應(yīng)用程序?qū)唧w硬件的操作。
2.1 嵌入式系統(tǒng)初始化以及BSP的功能
嵌入式系統(tǒng)的初始化過程是一個同時包括硬件初始化和軟件(主要是操作系統(tǒng)及系統(tǒng)軟件模塊)初始化的過程;而操作系統(tǒng)啟動以前的初始化操作是BSP的主要 功能之一。由于嵌入式系統(tǒng)不僅具有硬件環(huán)境的多樣性,同時具有軟件的可配置性,因此,不同的嵌入式系統(tǒng)初始化所涉及的內(nèi)容各不相同,復(fù)雜程度也不盡相同。 但是初始化過程總是可以抽象為三個主要環(huán)節(jié),按照自底向上、從硬件到軟件的次序依次為:片級初始化、板級初始化和系統(tǒng)級初始化。
(1)片級初始化:主要完成CPU的初始化,包括設(shè)置CPU的核心寄存器和控制寄存器,CPU核心工作模式以及CPU的局部總線模式等。片級初始化把CPU從上電時的缺省狀態(tài)逐步設(shè)置成為系統(tǒng)所要求的工作狀態(tài)。這是一個純硬件的初始化過程。
(2)板級初始化:完成CPU以外的其他硬件設(shè)備的初始化。除此之外,還要設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)級初始化和應(yīng)用程序的運(yùn)行建立硬件和軟件環(huán)境。這是一個同時包含軟硬件兩部分在內(nèi)的初始化過程。
(3)系統(tǒng)級初始化:這是一個以軟件初始化為主的過程,主要進(jìn)行操作系統(tǒng)初始化。BSP將控制轉(zhuǎn)交給操作系統(tǒng),由操作系統(tǒng)進(jìn)行余下的初始化操作。包括加 載和初始化與硬件無關(guān)的設(shè)備驅(qū)動程序,建立系統(tǒng)內(nèi)存區(qū),加載并初始化其他系統(tǒng)軟件模塊,比如網(wǎng)絡(luò)系統(tǒng)、文件系統(tǒng)等;最后,操作系統(tǒng)創(chuàng)建應(yīng)用程序環(huán)境并將控 制轉(zhuǎn)交給應(yīng)用程序的入口。
經(jīng)過以上三個層次的操作,嵌入式系統(tǒng)運(yùn)行所需要的硬件和軟件環(huán)境已經(jīng)進(jìn)行了正確設(shè)置,從這里開始,高層的實(shí)時應(yīng)用程序可以運(yùn)行了。
需要指出:系統(tǒng)級初始化不是BSP的工作。但是,系統(tǒng)級初始化成功與否的關(guān)鍵在于BSP的前兩個初始化過程中所進(jìn)行的軟件和硬件的正確設(shè)置,而且系統(tǒng)級 初始化也是由BSP發(fā)起的。因此,設(shè)計BSP中初始化功能的重點(diǎn)主要集中在前兩個環(huán)節(jié)。圖3顯示了嵌入式系統(tǒng)的初始化過程。
評論