《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 嵌入式系統硬件抽象層的原理與實現

嵌入式系統硬件抽象層的原理與實現

2008-12-08
作者:王 濤 張偉良 馮重熙

  摘? 要: 板級支持包(BSP)是嵌入式系統" title="嵌入式系統">嵌入式系統中常用的硬件抽象形式,是介于操作系統和硬件之間的軟件層次。介紹BSP的功能和特點,并結合工作實踐提出了設計BSP的一般方法;最后針對當前嵌入式系統中BSP的設計方法所面臨的問題提出了可行的解決辦法。

  關鍵詞: 嵌入式系統? 嵌入式實時操作系統(RTOS)? 硬件抽象層(HAL)? 板級支持包(BSP)

?

  隨著計算機軟硬件技術的快速發展,出現了越來越多的便攜設備和智能設備。這些設備中通常包含控制用的CPU和相應的操作系統;這類特殊的計算機系統叫做嵌入式實時系統。嵌入式實時系統以其簡潔高效等特點在計算機、通信等領域中廣泛使用。

  由于嵌入式實時系統應用環境的特殊性,因此在設計實現過程中存在著許多特殊問題。其中,操作系統及其他系統軟件模塊與硬件之間的接口形式是嵌入式實時系統的主要特征和系統設計過程中的必需環節,也是影響嵌入式系統應用前景的關鍵問題。經過近些年的發展,隨著通用嵌入式操作系統技術的日趨成熟和應用的不斷擴大,一種統一的接口形式得到廣泛的認可和應用,這就是通常所說的板級支持包,即BSP。

1 嵌入式系統硬件抽象層的原理

1.1 硬件抽象層的引入

  嵌入式實時系統作為一類特殊的計算機系統自底向上包含三個部分,如圖1所示。

?

?

  (1)硬件環境:是整個嵌入式實時操作系統和實時應用程序" title="應用程序">應用程序運行的硬件平臺;不同的應用通常有不同的硬件環境;硬件平臺的多樣性是嵌入式系統的一個主要特點。

  (2)嵌入式實時操作系統——RTOS:完成嵌入式實時應用的任務調度和控制等核心功能,具有內核較精簡、可配置、與高層應用緊密關聯等特點。嵌入式操作系統具有相對不變性。

  (3)嵌入式實時應用程序:運行于操作系統之上,利用操作系統提供的實時機制完成特定功能的嵌入式" title="的嵌入式">的嵌入式應用。不同的系統需要設計不同的嵌入式實時應用程序。

  由于嵌入式系統應用的硬件環境差異較大,因此,如何簡潔有效地使嵌入式系統能夠應用于各種不同的應用環境是嵌入式系統發展中所必須解決的關鍵問題。

  經過不斷的發展,原先嵌入式系統的三層結構逐步演化成為一種四層結構。這個新增加的中間層次位于操作系統和硬件之間,包含了系統中與硬件相關的大部分功能。通過特定的上層接口與操作系統進行交互,向操作系統提供底層的硬件信息;并根據操作系統的要求完成對硬件的直接操作。由于引入了一個中間層次,屏蔽了底層硬件的多樣性,操作系統不再直接面對具體的硬件環境。而是面向由這個中間層次所代表的、邏輯上的硬件環境。因此,把這個中間層次叫做硬件抽象層HAL(Hardware Abstraction Layer)。在目前的嵌入式領域中通常也把HAL叫做板級支持包 BSP(Board Support Package)。圖2顯示了引入HAL以后的嵌入式系統結構。BSP的引入大大推動了嵌入式實時操作系統的通用化,從而為嵌入式系統的廣泛應用提供了可能。

?

?

1.2 BSP的特點與功能

  HAL/BSP的提出使通用的嵌入式操作系統及高層的嵌入式應用能夠有效地運行于特定的、應用相關的硬件環境之上,使操作系統和應用程序能夠控制和操作具體的硬件設備,完成特定的功能。因此,在絕大多數的嵌入式系統中,BSP是一個必不可少的層次。

  由于在系統中的特殊位置,因此BSP具有以下主要特點:

  (1)硬件相關性

  因為嵌入式實時系統的硬件環境具有應用相關性,所以,作為高層軟件與硬件之間的接口,BSP必須為操作系統提供操作和控制具體硬件的方法。

  (2)操作系統相關性

  不同的操作系統具有各自的軟件層次結構,因此,不同的操作系統具有特定的硬件接口形式。

在實現上,BSP是一個介于操作系統和底層硬件之間的軟件層次,包括了系統中大部分與硬件相關的軟件模塊。在功能上包含兩部分:系統初始化及與硬件相關的設備驅動。

2 BSP的設計與實現

  為實現上述兩部分功能,設計一個完整的BSP需要完成兩部分工作:

  (1)設計初始化過程,完成嵌入式系統的初始化;

  (2)設計硬件相關的設備驅動,完成操作系統及應用程序對具體硬件的操作。

2.1 嵌入式系統初始化以及BSP的功能

  嵌入式系統的初始化過程是一個同時包括硬件初始化和軟件(主要是操作系統及系統軟件模塊)初始化的過程;而操作系統啟動以前的初始化操作是BSP的主要功能之一。由于嵌入式系統不僅具有硬件環境的多樣性,同時具有軟件的可配置性,因此,不同的嵌入式系統初始化所涉及的內容各不相同,復雜程度也不盡相同。但是初始化過程總是可以抽象為三個主要環節,按照自底向上、從硬件到軟件的次序依次為:片級初始化、板級初始化和系統級" title="系統級">系統級初始化。

  (1)片級初始化:主要完成CPU的初始化,包括設置CPU的核心寄存器和控制寄存器,CPU核心工作模式以及CPU的局部總線模式等。片級初始化把CPU從上電時的缺省狀態逐步設置成為系統所要求的工作狀態。這是一個純硬件的初始化過程。

  (2)板級初始化:完成CPU以外的其他硬件設備的初始化。除此之外,還要設置某些軟件的數據結構和參數,為隨后的系統級初始化和應用程序的運行建立硬件和軟件環境。這是一個同時包含軟硬件兩部分在內的初始化過程。

  (3)系統級初始化:這是一個以軟件初始化為主的過程,主要進行操作系統初始化。BSP將控制轉交給操作系統,由操作系統進行余下的初始化操作。包括加載和初始化與硬件無關的設備驅動程序" title="設備驅動程序">設備驅動程序,建立系統內存區,加載并初始化其他系統軟件模塊,比如網絡系統、文件系統等;最后,操作系統創建應用程序環境并將控制轉交給應用程序的入口。

  經過以上三個層次的操作,嵌入式系統運行所需要的硬件和軟件環境已經進行了正確設置,從這里開始,高層的實時應用程序可以運行了。

  需要指出:系統級初始化不是BSP的工作。但是,系統級初始化成功與否的關鍵在于BSP的前兩個初始化過程中所進行的軟件和硬件的正確設置,而且系統級初始化也是由BSP發起的。因此,設計BSP中初始化功能的重點主要集中在前兩個環節。圖3顯示了嵌入式系統的初始化過程。

?

?

2.2 硬件相關的設備驅動程序

  BSP另一個主要功能是硬件相關的設備驅動。與初始化過程相反,硬件相關的設備驅動程序的初始化和使用通常是一個從高層到底層的過程。

  盡管BSP中包含硬件相關的設備驅動程序,但是這些設備驅動程序通常不直接由BSP使用,而是在系統初始化過程中由BSP把它們與操作系統中通用的設備驅動程序關聯起來,并在隨后的應用中由通用的設備驅動程序調用,實現對硬件設備的操作。設計與硬件相關的驅動程序是BSP設計中另一個關鍵環節。圖4顯示了調用設備驅動程序時系統各個層次之間的關系。

?

?

3 設計實現BSP的方法

3.1 設計實現BSP的一般方法

  因為BSP同時具有硬件相關性和操作系統相關性,是一個介于硬件與軟件之間的中間層次。因此BSP的開發不僅需要具備一定的硬件知識,例如CPU的控制、中斷控制器的設置、內存控制器的設置及有關的總線規范等;同時還要求掌握操作系統所定義的BSP接口。另外,在BSP的初始化部分通常會包含一些匯編代碼,因此還要求對所使用的CPU匯編指令有所了解,例如X86的匯編和PowerPC的匯編指令等;對于某些復雜的BSP還要了解所使用的開發工具,例如GNU、Diab Data等。

  總之,開發BSP要求具備比較全面的軟、硬件知識和必要的編程經驗。由于設計實現的復雜性,在設計特定BSP時很少從零開始,而是采用以下兩種快捷方法。

  方法一:以經典BSP為參考

  在設計BSP時,首先選擇與應用硬件環境最為相似的參考設計,例如Motorola的ADS系列評估板等。針對這些評估板,不同的操作系統都會提供完整的BSP,這些BSP是學習和開發自己BSP的最佳參考。針對具體應用的特定環境對參考設計的BSP進行必要的修改和增加,就可以完成簡單的BSP設計。

  下面以設計pSOS操作系統的BSP初始化過程為例。pSOS系統初始化的層次非常清晰,與初始化過程相對應的是以下三個文件:

  1)init.s :對應于片級初始化;完成CPU的初始化操作,設置CPU的工作狀態;

  2)board.c :對應于板級初始化;繼續CPU初始化,并設置CPU以外的硬件設備;

  3)sysinit.c :對應于系統級初始化;完成操作系統的初始化,并啟動應用程序。

  以參考BSP為切入點,針對初始化過程的具體環節,在對應的文件中進行某些參數的修改及功能的增加就可以實現BSP的系統初始化功能。

  因為BSP具有操作系統相關性,因此,不同的操作系統會使用不同的文件完成類似的初始化操作。

  BSP中硬件相關的設備驅動程序隨操作系統的不同而具有比較大的差異,設計過程中應參照操作系統相應的接口規范。

  方法二:使用操作系統提供的BSP模板

  除了提供某些評估板的BSP以外,很多操作系統還提供相應的BSP模板(一組需要編寫的文件),根據模板的提示也可以逐步完成特定BSP的設計。

  相比較而言,第一種方法最為簡單快捷。因此,在實際的設計過程中,通常以第一種方法為主,同時結合使用第二種方法。

  在設計實現BSP兩部分功能時應采用以下兩種不同方法:

  (1)“自底向上”地實現BSP中的初始化操作:從片級初始化開始到系統級初始化;

  (2)“自頂向下”地設計硬件相關的驅動程序:從API開始,到操作系統內部的通用設備驅動程序,再到BSP內部的硬件相關的設備驅動程序,最后到底層具體的硬件設備。

3.2 BSP設計方法的不足與改進

  從以上介紹的兩種設計方法可以看出:目前BSP的設計與實現主要是針對某些特定的文件進行修改。這種方法比較原始,它不僅要求設計人員了解BSP的各個組成部分及所對應的文件和相關參數的具體含義,還要求具備比較全面的軟硬件知識。直接修改相關文件容易造成代碼的不一致性,增加軟件設計上的隱形錯誤,從而增加系統調試和代碼維護的難度。隨著底層硬件功能的日益復雜,開發BSP所涉及的內容也越來越多。這種原始方法的不足之處也越來越突出。進行BSP設計方法和工具的創新成為一個日益突出的問題。

  解決這個問題的一個可行辦法是:設計實現一種具有圖形界面的BSP開發設計向導,由該向導指導設計者逐步完成BSP的設計和開發,并最終由向導生成相應的BSP文件,而不再由設計人員直接對源文件進行修改。這樣不僅可以大大縮短BSP的開發周期,減少代碼不一致性,而且系統排錯、調試以及維護都很簡單。因此,這種方法是目前嵌入式領域中BSP設計的一個趨勢和研究方向。但是,由于嵌入式系統硬件環境的多樣性,設計向導的實現仍需解決若干關鍵問題。為此,作者仍將在這一方面作進一步研究。

  文中提出的方法在華環公司的寬帶網絡工程中得到實踐和應用,并取得了非常良好的應用成果。

?

參考文獻

1 “Understanding and Developing Board-Support Packages”Chapter 1 of 《pSOSystem Advanced Topics》,pSOSystem Documents. Wind River systems.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          狠狠色狠狠色综合日日五| 日韩系列欧美系列| 99精品国产在热久久下载| 欧美精品免费在线| 亚洲自拍偷拍麻豆| 欧美破处大片在线视频| 亚洲伦理中文字幕| 国产精品任我爽爆在线播放| 午夜精品一区二区在线观看| 免费成人高清视频| 欧美一激情一区二区三区| 国产伦精品一区二区三区| 亚洲精品日韩综合观看成人91| 亚洲国产精品999| 久久久久久久久久久成人| 一区二区日韩伦理片| 国产视频久久久久| 在线成人免费视频| 欧美一区二区视频网站| 亚洲青色在线| 9人人澡人人爽人人精品| 国产在线观看91精品一区| 国内外成人在线| 久久综合色婷婷| 午夜精品久久久久久久久久久久| 国产自产女人91一区在线观看| 久久久精品久久久久| 国产亚洲精品7777| 性伦欧美刺激片在线观看| 久久久精品视频成人| 国产日产精品一区二区三区四区的观看方式| 久久综合色婷婷| 国产日韩视频一区二区三区| 夜夜躁日日躁狠狠久久88av| 亚洲精品永久免费精品| 欧美国产视频在线观看| 宅男噜噜噜66一区二区66| 亚洲网站视频福利| 欧美激情一区二区三区在线| 国产精品va在线| 激情六月婷婷综合| 国产精品高清免费在线观看| 亚洲在线日韩| 国产精品久久久久久久久免费樱桃| 国产精品国产精品国产专区不蜜| 国产亚洲人成a一在线v站| 鲁大师影院一区二区三区| 亚洲国产欧美在线| 亚洲无毛电影| 国产日本欧洲亚洲| 久久精品中文字幕一区二区三区| 欧美大片在线影院| 久久久久久91香蕉国产| 亚洲电影在线免费观看| 最新中文字幕一区二区三区| 亚洲电影自拍| 欧美日韩一区二区在线| 亚洲欧美不卡| 欧美日韩精品免费观看视频完整| 亚洲一区二区三区色| 欧美在线亚洲一区| 久久精品国产99国产精品澳门| 香蕉久久久久久久av网站| 国产精品美女xx| 国产亚洲精品自拍| 欧美日韩国产精品专区| 136国产福利精品导航网址应用| 欧美日韩亚洲一区二区三区在线| 亚洲成人在线视频网站| 在线欧美一区| 欧美三级电影精品| 国产精品亚洲аv天堂网| 亚洲第一页中文字幕| 国产精品www网站| 久久久亚洲影院你懂的| 欧美视频一区在线观看| 久久精品在线免费观看| 国产又爽又黄的激情精品视频| 亚洲狠狠丁香婷婷综合久久久| 亚洲高清三级视频| 一区二区免费在线播放| 国产精品高清一区二区三区| 亚洲欧美视频在线观看视频| 亚洲一级高清| 午夜综合激情| 亚洲精品一区在线观看| 亚洲欧洲视频| 欧美在线视频不卡| 伊人久久av导航| 亚洲福利国产精品| 亚洲精品在线看| 欧美xart系列高清| 久久av二区| 一区二区三区成人精品| 欧美精品 国产精品| 激情欧美一区二区三区在线观看| 欧美色视频一区| 久久国产精品99国产| 久久国产一二区| 日韩视频在线一区二区三区| 欧美日本免费一区二区三区| 国产精品日韩在线播放| 欧美精品日韩精品| 欧美极品欧美精品欧美视频| 国产精品久久久久久久久免费樱桃| 欧美日韩一区二区三区在线观看免| 欧美日韩三级在线| 国产精品免费网站在线观看| 国产中文一区| 亚洲电影在线免费观看| 亚洲一区一卡| 欧美福利专区| 亚洲电影中文字幕| 亚洲免费观看| 国产精品自在在线| 欧美精品福利在线| av成人免费在线观看| 久久久久久久久久久一区| 欧美日韩国产在线播放网站| 国产日韩欧美亚洲| 久久久777| 狂野欧美激情性xxxx| 免费在线视频一区| 国产亚洲精品久久久| 国产精品一区二区久久久| 亚洲视频精选| 国产精品久久久久久久午夜| 一本色道久久88亚洲综合88| 国产麻豆9l精品三级站| 欧美顶级艳妇交换群宴| 久久综合精品国产一区二区三区| 亚洲精品久久久久久久久久久| 国产精品久久久久久av下载红粉| 韩国精品主播一区二区在线观看| 欧美一区二区三区另类| 国产亚洲欧美日韩日本| 日韩西西人体444www| 韩国成人理伦片免费播放| 国产精品久久国产愉拍| 欧美一区二区大片| 欧美性感一类影片在线播放| 欧美色中文字幕| 欧美国产欧美亚州国产日韩mv天天看完整| 久久精品人人做人人综合| 亚洲国内自拍| 亚洲永久在线| 久久精品视频免费观看| 亚洲综合第一页| 国产精品亚洲综合天堂夜夜| 亚洲校园激情| 国产美女在线精品免费观看| 亚洲视频一区二区在线观看| 欧美三级日本三级少妇99| 亚洲激情亚洲| 欧美成人嫩草网站| 久久国产乱子精品免费女| 国产精品你懂得| 国产一区二区三区久久久| 国产色综合天天综合网| 国产精品一区免费视频| 在线精品视频在线观看高清| 国产裸体写真av一区二区| 一区二区三区精品国产| 欧美极品色图| 这里是久久伊人| 亚洲激情视频在线| 国产精品成人va在线观看| 亚洲第一福利视频| 亚洲国产日韩综合一区| 最新亚洲一区| 国产日韩欧美夫妻视频在线观看| 99精品国产在热久久婷婷| 亚洲综合色丁香婷婷六月图片| 午夜精品成人在线| 欧美精品国产一区| 亚洲成色999久久网站| 国内精品久久久久影院薰衣草| 国产精品男人爽免费视频1| 日韩亚洲欧美精品| 亚洲尤物视频网| 久久成人精品无人区| 欧美制服丝袜第一页| 欧美日韩一区二区视频在线观看| 欧美日韩在线一区二区三区| 欧美激情第一页xxx| 一本一本久久a久久精品牛牛影视| 亚洲第一区在线| 国产精品永久免费视频| 欧美在线观看天堂一区二区三区| 久久国产精品久久久久久电车| 欧美精品videossex性护士| 欧美成年视频| 国产精品久久久久久久久久直播| 久热成人在线视频| 国产精品视频久久一区| 亚洲一区二区三区久久| 欧美大片在线观看一区| 国产区欧美区日韩区| 久久久久久久久久久久久9999| 99re亚洲国产精品| 久久免费视频这里只有精品| 在线观看91精品国产麻豆| 99热在线精品观看| 亚洲电影在线| 久久免费视频在线| 亚洲一区二区av电影| 午夜精品一区二区三区电影天堂| 欧美精品成人一区二区在线观看| 久久久另类综合| 久久精品国产综合精品| 欧美一区二区精品| 欧美色播在线播放| 一区二区三区在线视频播放| 毛片av中文字幕一区二区| 亚洲欧洲日韩综合二区| 欧美+日本+国产+在线a∨观看| 国产日韩精品一区| 免费观看欧美在线视频的网站| 亚洲一区二区成人在线观看| 亚洲精品欧美日韩专区| 欧美三级精品| 欧美一区在线直播| 欧美一区二区三区电影在线观看| 亚洲精品国产精品国自产观看浪潮| 日韩视频在线观看一区二区| 国产精品电影观看| 欧美成人乱码一区二区三区| 欧美日韩国产不卡| 亚洲精品一区二区网址| 国产精品v片在线观看不卡| 久久国产一二区| 国产欧美日本一区视频| 国产精品一区二区三区成人| 亚洲永久免费观看| 欧美成人中文| 亚洲美女少妇无套啪啪呻吟| 国产女主播在线一区二区| 亚洲精品你懂的| 午夜在线电影亚洲一区| 国产精品永久免费视频| 国内精品福利| 国产主播精品在线| 欧美mv日韩mv国产网站| 亚洲一区二区三区在线播放| 亚洲欧美成人一区二区在线电影| 欧美一区二区三区免费观看| 欧美在线free| 一本大道久久精品懂色aⅴ| 欧美成人中文字幕在线| 激情久久久久久久| 国产精品久久久久久久app| 欧美一区二区视频在线观看| 欧美综合激情网| 国产午夜精品久久| 99精品视频免费观看视频| 亚洲欧美一区在线| 国产欧美亚洲精品| 国产亚洲欧美aaaa| 亚洲制服丝袜在线| 国内精品视频在线观看| 精品91免费| 欧美大片在线看免费观看| 欧美日韩一级大片网址| 亚洲精品少妇| 蜜桃av久久久亚洲精品| 欧美成人一区二区三区| 国语精品中文字幕| 国产日韩1区| 欧美午夜精品久久久久免费视| 亚洲国产免费看| 国产精品久久婷婷六月丁香| 亚洲欧美成人一区二区三区| 欧美fxxxxxx另类| 免费观看国产成人| 国产欧美精品在线观看| 噜噜爱69成人精品| 亚洲一区日韩在线| 国产精品国产三级国产aⅴ无密码| 欧美日韩在线一区| 国产伦精品一区二区| 欧美日精品一区视频| 欧美日韩成人综合天天影院| 亚洲国产精品999| 欧美一区二区三区视频| 卡通动漫国产精品| 欧美日韩免费一区二区三区视频| 老司机aⅴ在线精品导航| 国产精品福利网| 亚洲伊人第一页| 一本久久青青| 亚洲毛片一区二区| 国产精品美女www爽爽爽视频| 国产精品久久久久久久久动漫| 国产精品免费网站在线观看| 亚洲国产精品999| 免费观看30秒视频久久| 欧美一区二区三区久久精品茉莉花| 美女脱光内衣内裤视频久久影院| 亚洲欧洲日产国产综合网| 亚洲国产精品久久精品怡红院| 亚洲最黄网站| 午夜影院日韩| 欧美激情视频给我| 一本色道久久| 久久综合一区二区| 一区二区三区高清不卡| 亚洲第一精品夜夜躁人人躁| 在线免费观看日本一区| 国产精品色婷婷久久58| 亚洲午夜精品一区二区三区他趣| 国产精品入口麻豆原神| 亚洲二区在线| 亚洲精品免费一区二区三区| 欧美日韩久久不卡| 国产日韩欧美综合一区| 久久夜精品va视频免费观看| 亚洲电影成人| 久久精品系列| 国产精品一区一区三区| 国产精品第十页| 亚洲高清色综合| 欧美一区二区视频免费观看| 欧美成年网站| 国产一区二区三区av电影| 国产日韩一区欧美| 欧美午夜一区二区福利视频| 久久国产精品99国产精| 亚洲一区二区在线免费观看|