?

基于ARM-Core4x 嵌入式軟件平臺的實現方法

2017-05-24 14:45王永剛應站煌陳玉峰
計算機測量與控制 2017年5期
關鍵詞:調用代碼驅動

王永剛,應站煌,陳玉峰

(許繼電氣股份有限公司,河南 許昌 461000)

基于ARM-Core4x 嵌入式軟件平臺的實現方法

王永剛,應站煌,陳玉峰

(許繼電氣股份有限公司,河南 許昌 461000)

針對基于ARM-Core4x微處理器的管腳功能可配置的特點,降低應用業務模塊對硬件驅動層關注度及業務代碼與驅動代碼耦合性,提出了一種基于ARM-Core4x微處理器的嵌入式軟件開發平臺設計方法,該平臺可提供了基于POSIX標準的硬件操作接口和操作系統及網絡協議基本應用的接口,并通過子模塊間邏輯調用機制的合理設計,實現了平臺核心模塊和應用模塊獨立編譯且運行期間相互調用功能模塊,實現開發平臺的整體功能;通過對該平臺軟件的應用模塊二次開發,減少用戶應用開發對ARM微處理器硬件的關注度,使用戶開發重點聚焦在應用及業務的實現上;實踐證明,該軟件平臺可方便應用在低壓繼電保護裝置以及智能化設備產品的開發,提高了用戶應用開發效率和降低開發難度。

ARM-Core4x;嵌入式系統;可視化開發;中間層

0 引言

近年來,嵌入式應用領域中以ARM處理器發展最為突出,ARM被公認為業界領先、優秀的32位嵌入式處理器結構[1]。ARM系列處理器憑借高性能、低成本和低功耗等特點,在嵌入式應用領域中占據了絕對的市場份額,在建筑安全系統、工廠自動化、家庭娛樂、太陽能面板、測試與計量得到廣泛的應用[2-4]。隨著業務應用領域的擴展,在產品開發時面臨業務多樣化,業務功能實現代碼與底層驅動代碼耦合性高,不利于公共業務功能的代碼的重用和迭代,對其產品質量產生不利影響。

本文提出了一種基于ARM-M4處理器的軟件開發平臺設計方法,通過將ARM硬件及通用功能開發和應用業務開發分離,提供一種易用、通用的開發平臺,使產品開發者關注業務的實現,而平臺開發者注重于硬件驅動及平臺的開發,兩者協作一致完成產品的開發,有效縮短產品開發周期,并有利于開發平臺復用性。

1 軟件框架總體設計

1.1 設計要求

為解決業務模塊代碼與硬件驅動層代碼的耦合性,業務代碼模塊中不應含有驅動層代碼,硬件驅動層代碼由平臺模塊實現,并其功能函數以指針方式集中存放可查找到數據特殊區域,以便應用業務模塊所調用。因此,需要平臺模塊和應用模塊相互獨立,可單獨編譯和升級,以達到降低應用業務代碼與驅動代碼耦合性。

為實現平臺模塊和應用模塊升級或更新,需要獨立升級模塊,升級模塊獨立平臺和應用模塊之外,以便其實現升級功能。

為了使整個開發平臺框架能夠盡可能滿足不同產品硬件配置要求,平臺模塊中驅動設計時應將驅動有關功能函數和硬件配置進行必要分離,以便于不同應用背景下對硬件進行選擇性配置功能的實現,提高開發平臺應用范圍。

1.2 總體框架

基于以上設計原則的考慮,軟件框架設計如圖1所示,整個軟件框架包括4個部分:驅動庫、引導模塊、平臺模塊和應用模塊。

圖1 總體框架結構示意圖

1)驅動庫模塊。驅動模塊是以庫文件方式,提供給引導模塊、平臺模塊所使用。

2)引導模塊。引導模塊負責平臺模塊、應用模塊的下載。

3)平臺模塊。平臺模塊是該軟件平臺的核心模塊,也是應用模塊工作環境和資源,能夠提供給用戶足夠多的接口,以便用戶開發業務應用。

4)應用模塊。 應用模塊是用戶主要業務功能開發模塊,但由于要調用平臺庫所提供的資源以及系統正常工作的需要,必須滿足一些設計框架的要求,否則應用模塊無法正常的工作。

從邏輯結構來說,引導模塊可以視為一個單獨應用。在引導模塊中,可實現程序下載和授權管理以及引導模塊向平臺模塊的切換。鑒于開發的分層設計的考慮,平臺模塊和應用模塊,雖以獨立的應用程序而存在,但在邏輯上平臺模塊是應用模塊實現業務功能基礎模塊。

2 各子模塊的設計

2.1 驅庫設計

驅動庫主要提供給引導模塊和平臺模塊進行有關硬件操作的驅動接口。從引導模塊的通用性和平臺模塊的可移植性考慮,驅動庫提供對外硬件接口在接口定義要統一性,即不同ARM-Core4x處理器,對外提供相同的接口驅動庫,驅動接口的差異性僅在驅動庫執行體不同。驅動接口的統一化可有效簡化不同ARM-Core4x處理器的引導模塊和平臺模塊的生成過程,有利于各子模塊的通用性和可移植性設計目標的實現。

ARM-Core4x 微處理器的管腳功能具備可配置性,即同一管腳可配置模擬量采樣開入,亦可配置成開出管腳。而管腳的可配置性決定于產品業務的硬件要求,因此基于業務應用的硬件驅動只能在平臺模塊,故驅動庫接口僅限于單個類型硬件驅動的實現,而板卡類的驅動只能在驅動庫接口基礎之上實現。

在硬件驅動庫內容上,包括ARM-Core4x處理器支持所有的硬件驅動,即按照可允許最大化配置的硬件類型進行硬件驅動的設計,即支持所有可能配置方式。

在ARM-Core4x生產廠商中,大部分已經提供了基于微處理器硬件驅動庫或者提供基于這些硬件各個操作接口,這些接口需要通過適當二次封裝,形成統一、規范對外驅動接口,其開發工作量相對較小。

2.2 引導模塊設計

為了軟件平臺的通用化和兼容性目標的實現,引導模塊的設計必須保證其通用化和可移植性??紤]到ARM-Core4x微處理器硬件的差異性,尤其是各廠商生產基于ARM-Core4x標準的微處理器,但其硬件配置和硬件控制寄存器地址,均存在一定差異性[5-6]。因此,引導業務代碼中不應含有硬件的任何信息,否則,無法保證引導業務代碼的通用性。

為了實現引導業務代碼通用性,將其引導業務代碼中硬件操作接口進行抽象化,且在初始化時將硬件抽象化接口進行實例化。抽象化處理硬件操作接口,僅能保證引導代碼的通用性,并不能保證編譯后的引導程序可以適用任何硬件環境下引導功能,但可以簡單通過替換不同ARM-Core4x處理器的驅動庫,可以方便生成適用不同ARM-Core4x處理器的引導模塊。

硬件操作接口抽象化對象范圍需要充分考慮引導模塊需要的實現功能以及與功能相關的硬件對象。引導模塊的基本功能是下載功能和引導功能。上電后需要從引導模塊運行,并在許可協議合法和平臺模塊滿足安全運行的條件下,切換到平臺模塊運行進行用戶應用業務的處理。因此,與引導業務模塊相關的硬件包括:①以太網或者UART,下載功能所必須通信硬件;②FLASH模塊,平臺和應用程序保存介質;③其他模塊,如時鐘模塊、中斷控制模塊、網絡協議模塊,處理器運行所必需基本模塊。

從實現業務需要考慮,引導模塊還包括下載通信協議等其他中間層模塊,通信協議中涉及到通信硬件驅動也采用抽象化硬件操作接口,并在通信協議初始時對抽象化硬件操作接口進行實例化,保證下載通信協議通用性。在面臨不同的微處理器硬件的引導模塊的移植時,可以替換硬件驅動庫,可簡單快捷生成基于新的硬件引導模塊。

2.3 平臺模塊的設計

為了實現用戶業務的實現,作為資源庫和應用環境的平臺模塊包含以下幾部分功能:

(1)標準的硬件操作接口。硬件的操作是應用模塊實現其業務最基本的硬件操作要求,也是平臺模塊必須提供基本功能之一。為了減少用戶模塊開發時對硬件操作難度,平臺模塊在驅動庫的基礎上,并結合硬件設計要求,提供基于POSIX標準的硬件操作接口。為了實現硬件驅動庫的標準化操作,所有的硬件均支持open、close、read、write和iocrl五種類型接口,各個接口的真正的實現與否視具體的硬件類型而定。

(2)操作系統接口。操作系統接口提供有關任務管理、信號量、互斥量、郵箱、事件組等系統級接口??紤]到成本問題,本平臺操作系統選擇FreeRTOS。鑒于內存動態申請不利于平臺編譯期間發現內存溢出問題[7],移植FreeRTOS操作系統時,對任務內存管理進行適當的調整,所有內存申請的由動態申請修改為靜態申請,并規定任務創建個數限制,以免出現程序在編譯期和運行期出現內存使用不一致性,保證系統的可靠性。

(3)網絡協議解析接口。為了控制平臺程序大小,網絡協議層選用UIP協議代碼,UIP具備代碼量少、占用內存少有利于在資源稀少的ARM處理器中使用[8-10]。為了進一步控制協議層內存使用,對TCP協議所中由內置基于連接個數的數據緩存內存申請,改由外部用戶使用自己申請,增強UIP對用戶要求連接個數的適應性。

(4)數據表操作接口。數據表操作接口提供基于數據庫方式的數據訪問方式,并針對不同任務訪問數據表采取安全措施,提高數據表訪問的安全性。

(5)其他功能模塊。如遠程調試功能模塊支持、自我發現協議實現。

2.4 應用模塊的設計

應用模塊是對用戶開放模塊,其功能是在遵循基本應用框架之上,實現用戶業務及應用需要。應用模塊框架包括3個主要功能模塊:

(1)用戶初始化模塊。

用戶初始化模塊主要為用戶提供一些初始化操作,如初始化應用需要內存以及應用任務的創建?;跇I務創建的任務處理時,需要統籌考慮各任務的優先級別,以便在整體上保持較高運行效率。

(2)用戶層驅動加載模塊。

用戶層驅動加載模塊,提供用戶設計驅動模塊在符合一些特殊要求情況下,可以被被平臺庫模塊所加載,用戶模塊以標準設備操作的方式去控制設備,從而保證用戶操作硬件設備標準化。

(3)用戶業務循環處理模塊。

用戶業務循環處理模塊,用于非任務模式下常規事務處理與調用,循環模塊會被平臺模塊相應部分執行。在操作系統運行的條件下,本循環模塊沒有被調用的可能,其原因在于操作系統的任務調度是通過中斷調用和任務調度策略相結合運行模式下,平臺的循環模塊體幾乎沒有時間被調用可能,從而導致本模塊被調用機會很少。

3 關鍵問題的實現

3.1 平臺模塊業務流程的設計

開發平臺是一個完整業務處理的平臺,其子模塊承擔各自功能,并通過業務流程來規定各子模塊主要業務實現流程,以其整體上實現整個開發平臺設計目標。

開發平臺的業務流程圖如圖2所示,其中引導模塊和平臺模塊進行存在切換控制功能,而平臺模塊和應用模塊關系相對復雜,這種復雜性主要體現:應用模塊中主要功能模塊被平臺模塊所調用而運行,而應用模塊中任何功能模塊都可隨時調用平臺模塊資源庫接口函數,以便應用業務功能的實現,因此需要對平臺和應用模塊之間調用控制邏輯進行合理規劃和設計。

圖2 開發平臺業務流程圖

3.2 子模塊間邏輯調用的實現

1)平臺模塊與引導模塊。

引導模塊與平臺模塊兩者處理關系為切換功能和引導功能,引導模塊在啟動以后,在滿足一定的條件下,可直接切換到平臺模塊運行,而平臺模塊在外部某種干預下,可以切換到引導模塊。前一種是整個軟件正常運行的模式,而后一種模式是進行平臺模塊或應用模塊進行升級程序模式。切換方式采用直接跳轉相應模塊入口地址實現。

2)平臺模塊與應用模塊。

平臺模塊與應用模塊邏輯關系為接口函數相互調用,即相互獨立模塊接口函數相互調用的實現。平臺模塊和應用模塊關系復雜性是由平臺與應用模塊獨立設計以及應用與平臺模塊相互調用功能要求所決定的,因此需要對平臺和應用模塊進行嚴謹的設計,保證相互調用功能的實現。

圖3說明模塊間調用功能實現邏輯方法,應用模塊和平臺模塊相互調用邏輯的實現步驟如下:

A)在平臺模塊內部,聲明一數據結構,其成員為開發接口函數的類型。定義該數據結構的常量,其成員為開發接口函數的指針,并將該常量數據結構的地址存放到平臺模塊中斷向量表一個固定位置中。

圖3 應用模塊調用平臺實現圖

B)應用模塊調用平臺模塊接口函數時,通過以下幾個步驟:首先,獲取平臺模塊的存放接口函數的數據結構地址的中斷向量表,通過其內容獲得接口函數數據結構所在的位置;其次,通過聲明獲取平臺模塊接口函數在數據結構中偏移位置,進而獲取到平臺模塊中被調用接口函數地址,被調用函數執行完畢,繼續處理應用模塊其他相關業務。

通過以上步驟,調用模塊可方便調用到被調用模塊提供的接口函數,進一步為實現用戶業務創建提供必要資源和驅動支持。

平臺模塊調用應用模塊實現機制和應用模塊調用平臺模塊實現機制相似,差別僅在于調用函數接口對象的數據結構成員定義、數據結構和數據結構地址存放的中斷向量表的位置不同。為了避免平臺模塊和應用模塊相互調用而導致模塊內存數據被改寫,平臺模塊和應用模塊分配獨立內存模塊,確保平臺模塊和應用模塊各自內存數據不會被對方修改,從而保證平臺模塊和應用模塊相互調用功能的實現。

3.3 可視化開發模式的實現

可視化開發模式是指用戶將平臺模塊提供的各類接口作為資源,加載到可視化開發工具中,并在可被調用。為了保證可視化開發工具生成的代碼能有效運行,并具備調用平臺模塊提供各類資源接口函數處理應用業務,可視化開發工具生成的代碼必須是在一定應用模塊框架基礎進行操作。

圖4 平臺軟件與可視化工具邏輯

圖4為可視化開發工具與平臺軟件邏輯生成示意圖。平臺軟件提供基本接口資源,而可視化工具將接口作為資源加載到工具中,開發時可通過拖入功能函數到目標視圖區,并對函數輸入輸出進行適當圖形連接,同時生成與此圖形邏輯對應的C代碼,寫入到相應的用戶業務開發模塊框架中,調用相應編譯器最終完成由圖形到代碼、代碼到機器碼生成的任務。

4 結論

通過應用軟件平臺設計開發方法,較方便實現基于TI和Freescale廠商不同硬件的軟件開發平臺,實現平臺模塊和應用模塊獨立編譯和單獨升級,降低應用業務代碼和底層驅動代碼耦合性,加快產品開發進度和提高開發質量。

實踐證明,通過分層分模塊設計,軟件平臺實現系統預期設計目標。通過配置信息的調整,可以滿足基于同一ARM-Core4x 微處理器而不同配置板卡產品開發的需要。平臺軟件分模塊設計,可引導產品開發進行分層開發,平臺人員側重平臺的開發,而產品應用人員開發注重業務的實現,整體提高產品開發效率。

[1] 竇曉波,徐 科,胡敏強,等.基于 ARM 處理器的低壓微機保護裝置[J].電力系統自動化, 2005,29(20): 93-96,99.

[2] 孟艷清,趙宏偉,鄒育霖.基于ARM的開關柜智能監控裝置研究[J].高壓電器,2014,50(3):29-35.

[3] 孫延嶺,趙雪飛,張紅芳,等.基于ARM嵌入式系統的微型智能可編程控制器[J].電力系統自動化,2010,34(10):101-103.

[4] 舒雙寶,羅家融,王勤湧,等. 基于DSP和ARM便攜式電能質量監測系統的設計與實現[J]. 電力系統保護與控制,2010,38(24):185-189.

[5] 范蟠果,邢保毫,米曉亮,等. 基于嵌入式S3C2440系統Bootloader設計與實現[J] 計算機測量和控制,2016,24(9):12-14.

[6] 呂 敏,沙 莎.可視化編程數字圖像處理平臺的界面設計與實現[J].計算機系統應用,2010,19(9): 211-213.

[7] 郭開榮,溫渤嬰. FreeRTOS在微機繼電保護實驗裝置中的應用[J].繼電器,2006,34(19):4-6.

[8] 伊文斌,周賢娟,鄢化彪,等.Uip TCP/IP 協議分析及其在嵌入式系統中的應用[J].計算機技術與發展,2007,17(9):240-243.

[9] 周邵文.一種基于UIP協議棧的多應用層協議支持方案的設計[J]. 電力系統保護與控制,2010,38(9):109-112.

[10] 徐林峰,李 星. 基于ARM Cortex-M3微控制器與QDUC的嵌入式激勵器設計[J]. 計算機測量和控制,2016,24(2):182-185.

Implementation Method of Embedded Software Platform Based on ARM-Core4x

Wang Yonggang, Ying Zhanhuang,Chen Yufeng

(XJ Electric Co., Ltd.Automatic Protection Corporation,Xuchang 461000,China)

According to the characteristics of the pin configuration function based on ARM-Core4x microprocessor can be reduced, application service module of hardware driver layer attention and business code and driver code coupling, proposes a design method of embedded software development platform based on ARM-Core4x microprocessor, the platform can provide a standard POSIX hardware interface and operating system and network protocol the basic application interface based on reasonable design and the sub module between logical call mechanism, the platform to achieve the core module and Application module independently compile and run the mutual call function module, the realization of the overall function of development platform. Through the application of the platform software module two development, reduce the user application development of ARM microprocessor hardware attention, the user development focus on the application and implementation of the business. Practice has proved that the software platform can be used in low voltage relay protection devices and intelligent equipment product development, improve the user application development efficiency and reduce the difficulty of development.

ARM-Core4x; embedded system; visualization development; middle layer

2016-11-03;

2017-01-05。

王永剛(1969-)男,上海人,博士,高級工程師,主要從事嵌入式系統微處理器方向的研究。

1671-4598(2017)05-0143-04

10.16526/j.cnki.11-4762/tp.2017.05.040

TP3

A

猜你喜歡
調用代碼驅動
數據驅動世界。你得懂它 精讀
基于模糊PI控制的驅動防滑仿真系統分析
屈宏斌:未來五年,雙輪驅動,砥礪前行
核電項目物項調用管理的應用研究
深入實施創新驅動發展戰略
系統虛擬化環境下客戶機系統調用信息捕獲與分析①
創世代碼
創世代碼
創世代碼
創世代碼
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合