專利名稱:跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法
技術領域:
本發(fā)明涉及嵌入式系統(tǒng)技術領域,尤其是涉及一種跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法。
背景技術:
嵌入式系統(tǒng)是一種根據特定用途所專門開發(fā)的系統(tǒng),它只完成預期要完成的功能,因此其開發(fā)過程和開發(fā)環(huán)境同傳統(tǒng)的軟件開發(fā)相比有著顯著的不同。
嵌入式系統(tǒng)發(fā)展到今天,對應于各種微處理器的硬件平臺一般都是通用的、固定的、成熟的,這就大大減少了由硬件系統(tǒng)引入錯誤的機會。此外,由于嵌入式操作系統(tǒng)屏蔽了底層硬件的復雜性,使得開發(fā)者通過操作系統(tǒng)提供的API函數就可以完成大部分工作,因此大大簡化了開發(fā)過程,提高了系統(tǒng)的穩(wěn)定性。嵌入式系統(tǒng)的開發(fā)者現在已經從反復進行硬件平臺設計的過程中解脫出來,從而可以將主要精力放在滿足特定的需求上。
嵌入式系統(tǒng)通常是一個資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺上編寫軟件比較困難,有時候甚至是不可能的。目前一般采用的解決辦法是首先在通用計算機上編寫程序,然后通過交叉編譯生成目標平臺上可以運行的二進制代碼格式,最后再下載到目標平臺上的特定位置上運行。
需要交叉開發(fā)環(huán)境(Cross Development Environment)的支持是嵌入式應用軟件開發(fā)時的一個顯著特點,交叉開發(fā)環(huán)境是指編譯、鏈接和調試嵌入式應用軟件的環(huán)境,它與運行嵌入式應用軟件的環(huán)境有所不同,通常采用宿主機/目標機模式。
宿主機(Host)是一臺通用計算機(如PC機或者工作站),它通過串口或者以太網接口與目標機通信。宿主機的軟硬件資源比較豐富,不但包括功能強大的操作系統(tǒng)(如Windows和Linux),而且還有各種各樣優(yōu)秀的開發(fā)工具(如WindRiver的Tornado、Microsoft的Embedded Visual C++等),能夠大大提高嵌入式應用軟件的開發(fā)速度和效率。
目標機(Target)一般在嵌入式應用軟件開發(fā)期間使用,用來區(qū)別與嵌入式系統(tǒng)通信的宿主機,它可以是嵌入式應用軟件的實際運行環(huán)境,也可以是能夠替代實際運行環(huán)境的仿真系統(tǒng),但軟硬件資源通常都比較有限。嵌入式系統(tǒng)的交叉開發(fā)環(huán)境一般包括交叉編譯器、交叉調試器和系統(tǒng)仿真器,其中交叉編譯器用于在宿主機上生成能在目標機上運行的代碼,而交叉調試器和系統(tǒng)仿真器則用于在宿主機與目標機間完成嵌入式軟件的調試。在采用宿主機/目標機模式開發(fā)嵌入式應用軟件時,首先利用宿主機上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調試目標機上的軟件,然后通過串口或者以網絡將交叉編譯生成的目標代碼傳輸并裝載到目標機上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調試器進行分析和調試,最后目標機在特定環(huán)境下脫離宿主機單獨運行。
建立交叉開發(fā)環(huán)境是進行嵌入式軟件開發(fā)的第一步,目前常用的交叉開發(fā)環(huán)境主要有開放和商業(yè)兩種類型。開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈、目前已經能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業(yè)的交叉開發(fā)環(huán)境則主要有Metrowerks CodeWarrior、ARM Software DevelopmentToolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded VisualC++等。
交叉調試(Cross Debug)又常常被稱為遠程調試(Remote Debug),是一種允許調試器以某種方式控制目標機上被調試進程的運行方式,并具有查看和修改目標機上內存單元、寄存器以及被調試進程中變量值等各種調試功能的調試方式。
嵌入式系統(tǒng)的硬件一般采用專門的測試儀器進行測試,而軟件則需要有相關的測試技術和測試工具的支持,并要采用特定的測試策略。測試技術指的是軟件測試的專門途徑,以及能夠更加有效地運用這些途徑的特定方法。在嵌入式軟件測試中,常常要在基于目標機的測試和基于宿主機的測試之間做出折衷,基于目標機的測試需要消耗較多的時間和經費,而基于宿主機的測試雖然代價較小,但畢竟是在仿真環(huán)境中進行的,因此難以完全反映軟件運行時的實際情況。這兩種環(huán)境下的測試可以發(fā)現不同的軟件缺陷,關鍵是要對目標機環(huán)境和宿主機環(huán)境下的測試內容進行合理取舍。
板級支持包(BSP)是在嵌入式系統(tǒng)中頻繁使用的一個概念。BSP是介于操作系統(tǒng)和系統(tǒng)硬件之間的一個抽象層,確切的說是操作系統(tǒng)的一部分。通常所指的BSP包括啟動代碼和系統(tǒng)相關的驅動和程序。BSP的作用使硬件對于操作系統(tǒng)變得透明,從而使嵌入式系統(tǒng)和它的應用程序能夠運行在不同的硬件平臺上。BSP的開發(fā)處在整個系統(tǒng)開發(fā)的初期,BSP部分在硬件和操作系統(tǒng)、上層應用程序之間,要求BSP設計人員對從硬件、軟件到操作系統(tǒng)都有一定的了解。
由于BSP開發(fā)的復雜性,在設計特定BSP時很少從零開始,通常采用以下兩種快捷方法。其一是在選擇與應用硬件環(huán)境最為相似的BSP參考設計,針對具體應用環(huán)境對參考設計進行必要的修改和增加;第二種方法是通過修改和填充操作系統(tǒng)提供的BSP模板相應內容來逐步完成特定BSP的開發(fā),很多操作系統(tǒng)都會提供相應的BSP模板。
通過設計實現一種具有圖形界面的BSP開發(fā)設計向導,由該向導指導設計者逐步完成BSP的設計和開發(fā),并最終由向導生成相應的BSP文件,而不再由設計人員直接對源文件進行修改的方法不僅可以大大縮短BSP的開發(fā)周期,也可以使系統(tǒng)的調試和維護變得簡單,因此,這種方法成了嵌入式BSP開發(fā)的一種趨勢。
在已有的板級支持包中,通常是針對特定操作系統(tǒng)的,比如,對于Windows操作系統(tǒng)專用,其全部代碼只能提供給Windows操作系統(tǒng)板級支持包的開發(fā)者使用,作為Linux操作系統(tǒng)板級支持包的開發(fā)者,只能從頭自己再開發(fā)一套;同時,由于共享性差,由某一個開發(fā)者開發(fā)的代碼,不能夠被其他開發(fā)者利用。這樣就降低了開發(fā)的效率,提高了開發(fā)的成本??绮僮飨到y(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法實現一套基于特定硬件平臺的軟件代碼,以加速BSP的開發(fā),設備驅動程序的開發(fā),和操作系統(tǒng)的移植。
發(fā)明內容
本發(fā)明的目的在于克服現有技術中的不足,提供一種跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法。
本發(fā)明解決其技術問題采用的技術方案如下本發(fā)明提供了一種跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,包括對硬件的抽象,對于將要訪問的大量寄存器采用“寄存器基址+偏移”的尋址模式尋址模式,以此替代對于將要被調用的應用環(huán)境或操作系統(tǒng)環(huán)境作假定。
作為本發(fā)明的一種改進,硬件抽象選擇與操作系統(tǒng)無關代碼,在易于使用與實現難度之間進行權衡,為底層硬件設定一個統(tǒng)一抽象接口。
作為本發(fā)明的一種改進,還包括中斷部分處理,在操作系統(tǒng)層實現中斷服務例程,將中斷處理部分從板級支持包中去掉。
作為本發(fā)明的一種改進,還包括DMA器件訪問,處理器的直接存儲器訪問DMA控制器。
作為本發(fā)明的一種改進,所述DMA操作完成產生兩級中斷,第一級中斷在跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包處理;第二級中斷在OS層處理,DMA構件與操作系統(tǒng)相關,它將向操作系統(tǒng)注冊第一級中斷處理函數。
作為本發(fā)明的一種改進,對于使用專有DMA的控制器不放在跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包處理。
與背景技術相比,本發(fā)明具有的有益的效果是跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法可大大加速嵌入式系統(tǒng)軟件包括操作系統(tǒng)和設備驅動的開發(fā)和測試流程,簡化系統(tǒng)維護和系統(tǒng)升級,并可顯著縮短嵌入式系統(tǒng)產品的上市時間,提高對新硬件設備的支持速度。
(1)兼容性。本發(fā)明是操作系統(tǒng)無關的,可以在ANSI C兼容操作系統(tǒng)如Linux,WinCE,Palm OS和Symbian OS上使用。
(2)可重用性??绮僮飨到y(tǒng)的嵌入式系統(tǒng)板級支持包通過對底層的硬件訪問、寄存器操作進行封裝,提供了一套穩(wěn)定的、可重用的、易于使用的函數庫,適合反復使用。
圖1是本發(fā)明實施方法流程示意圖。
具體實施方法下面結合附圖和實施例對本發(fā)明作進一步的說明。
一種跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,其具體實施方式
為1)對硬件的抽象跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法中,尋址模式采用如下的方法盡量少的對于將要被調用的應用環(huán)境尤其是操作系統(tǒng)環(huán)境作假定,對于將要訪問的大量寄存器采用“寄存器基址+偏移”的尋址模式。
以AC97音頻控制器為例,定義如下數據結構來表示所有操作AC97音頻的寄存器,每個成員變量的地址相對于該結構體實例起始地址的偏移即為實際寄存器地址相對于基址寄存器的便宜,對該結構體內成員變量進行賦值即可完成對寄存器的修改,而對其進行讀取則可獲得該寄存器的當前值。某些寄存器只讀或只寫,這將交由BSP程序員處理,對上層應用來說是透明的。
typedef struct{CPBF_VUINT32_T POCR;//PCM Out Control RegisterCPBF_VUINT32_T PICR;//PCM In Control RegisterCPBF_VUINT32_T MCCR;//Mic In Control RegisterCPBF_VUINT32_T GCR;//Global Control RegisterCPBF_VUINT32_T POSR;//PCM Out Status RegisterCPBF_VUINT32_T PISR;//PCM In Status RegisterCPBF_VUINT32_T MCSR;//Mic In Status RegisterCPBF_VUINT32_T GSR;//Global Status Register…}CPBF_AC97_T, *P_CPBF_AC97_T;而基址則是通過參數傳遞獲得的,參看如下AC97 Context Structure中的pAc97Reg,其內容即為AC97控制寄存器的基址。
typedef struct{P_CPBF_GPIO_T pGpioReg;P_CPBF_CLKMGR_T pClockReg;
P_CPBF_AC97_T pAc97Reg;P_CPBF_OST_T pOstRegs;P_CPBF_INTC_T pIntcReg;CPBF_UINT32_T maxSetupTimeOutUs;CPBF_BOOL_T useSecondaryCodec;}CPBF_AC97_CONTEXT_T, *P_CPBF_AC97_CONTEXT_T;在特定的應用環(huán)境中,比如Linux初始化音頻設備驅動時,首先生成特定的Context Structure,并根據當前系統(tǒng)狀態(tài)填充正確的pAc97Reg寄存器基址,這時使用的基址為虛地址。而在測試AC97音頻控制器的系統(tǒng)自檢程序中,由于沒有OS也沒有啟用MMU單元,這個基址則為實地址。
對硬件的抽象級別是每個跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包構件設計時需仔細考慮的問題。如果抽象的級別太低,將造成API過多,使用復雜,將失去設計跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的意義。而抽象的級別太高則難以實現操作系統(tǒng)無關,導致構件庫含有大量操作系統(tǒng)相關代碼,影響被移植到新的操作系統(tǒng)。所以在易于使用與實現難度之間需有一個權衡考慮,如跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包直接存儲器訪問DMA,Direct Memory Access,構件設計中就在抽象級別上進行了取舍,雖然DMA構件使用了部分操作系統(tǒng)服務,沒有嚴格的遵循操作系統(tǒng)無關標準,但是它使得DMA構件的API更為精簡和有效,容易被其他部分使用。
2)中斷部分處理中斷處理與具體操作系統(tǒng)的具體實現息息相關,中斷響應需有操作系統(tǒng)配合才能實現,中斷服務例程也必須在操作系統(tǒng)層實現,所以跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的設計中沒有涉及中斷處理,由開發(fā)人員在操作系統(tǒng)層實現,則將導致大量的操作系統(tǒng)相關代碼被引入跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包函數庫,違反了其設計原則。
3)DMA器件訪問處理器的DMA控制器是個很特別的硬件組成部分,在通常的初始化控制器、設置DMA通道等操作之外具有一些與操作系統(tǒng)密切相關的特性。
首先,由于DMA操作需要填充DMA描述符表,通常需要定義一個龐大的數據結構來表示該描述符表,不可避免的涉及到內存分配操作,如前所述,跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包不應該有任何內存分配操作,所以需要提供一個內存分配的回調函數,用來分配DMA描述符,而實際操作是通過回調函數調用操作系統(tǒng)層的內存分配函數的。
此外,由于DMA操作完成會產生中斷,并且此中斷分為兩級,第一級中斷需要馬上處理,以繼續(xù)數據傳輸,第二級中斷可以暫時被延遲,然后被驅動程序識別該中斷通道連接著的具體硬件設備,完成中斷響應服務。如前所述,中斷也是不能在跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包層處理的,而第一級DMA中斷需要馬上響應,否則整個跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包DMA構件內的函數都無從編寫,抽象級別太低將使該構件失去其實用意義。在權衡利弊之后,我們采用了如下方案,第一級中斷在跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包層處理,第二級中斷在OS層處理,這將讓跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包DMA構件操作系統(tǒng)相關,它將向OS注冊第一級中斷處理函數。由此帶來的益處是跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包DMA構件具有適度的抽象級別,便于其他構件使用和調試。
其次,某些控制器內使用了專有DMA控制器,如PXA27x內的LCD模塊使用了專有DMA控制器以加速framebuffer數據的顯示,下一代PXA處理器內的Camera控制器也采用了專有DMA控制器,它們沒有必要再調用跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包DMA構件內的函數來完成DMA操作。
權利要求
1.一種跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,包括對硬件的抽象,其特征在于,對于將要訪問的大量寄存器采用“寄存器基址+偏移”的尋址模式尋址模式,以此替代對于將要被調用的應用環(huán)境或操作系統(tǒng)環(huán)境作假定。
2.根據權利要求1所述的跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,其特征在于,硬件抽象選擇與操作系統(tǒng)無關代碼,在易于使用與實現難度之間進行權衡,為底層硬件設定一個統(tǒng)一抽象接口。
3.根據權利要求1所述的跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,其特征在于,還包括中斷部分處理,在操作系統(tǒng)層實現中斷服務例程,將中斷處理部分從板級支持包中去掉。
4.根據權利要求1所述的跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,其特征在于,還包括DMA器件訪問,處理器的直接存儲器訪問DMA控制器。
5.根據權利要求4所述的跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,其特征在于,所述DMA操作完成產生兩級中斷,第一級中斷在跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包處理;第二級中斷在OS層處理,DMA構件與操作系統(tǒng)相關,它將向操作系統(tǒng)注冊第一級中斷處理函數。
6.根據權利要求4所述的跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法,其特征在于,對于使用專有DMA的控制器不放在跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包處理。
全文摘要
本發(fā)明涉及嵌入式系統(tǒng)技術領域,旨在提供一種跨操作系統(tǒng)的嵌入式系統(tǒng)板級支持包的實現方法。該方法包括對硬件的抽象,對于將要訪問的大量寄存器采用“寄存器基址+偏移”的尋址模式尋址模式,以此替代對于將要被調用的應用環(huán)境或操作系統(tǒng)環(huán)境作假定。該方法具有兼容性和可重用性,可大大加速嵌入式系統(tǒng)軟件包括操作系統(tǒng)和設備驅動的開發(fā)和測試流程,簡化系統(tǒng)維護和系統(tǒng)升級,并可顯著縮短嵌入式系統(tǒng)產品的上市時間,提高對新硬件設備的支持速度。
文檔編號G06F9/46GK1877521SQ20061005222
公開日2006年12月13日 申請日期2006年6月30日 優(yōu)先權日2006年6月30日
發(fā)明者陳天洲, 沙峰, 趙懿, 謝斌 申請人:浙江大學