當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于嵌入式操作系統(tǒng)的控制系統(tǒng)平臺設(shè)計

 1 引言

  近年來,嵌入式系統(tǒng)在工業(yè)控制領(lǐng)域的應(yīng)用越來越廣泛。隨著嵌入式控制系統(tǒng)的發(fā)展,嵌入式控制系統(tǒng)將在一定程度上取代現(xiàn)有的工業(yè)PC控制系統(tǒng),在微型TDCS(集散控制系統(tǒng))、現(xiàn)場總線系統(tǒng)、PLC控制系統(tǒng)、智能化儀表等領(lǐng)域得到廣泛的應(yīng)用。由于其相對于大型的TDCS系統(tǒng)來說具有較強(qiáng)的成本優(yōu)勢和靈活性,其應(yīng)用領(lǐng)域正在進(jìn)一步擴(kuò)大。本文建立了一套完整的嵌入式控制系統(tǒng)軟件平臺,該平臺建構(gòu)于嵌入式硬件系統(tǒng)之上,包括嵌入式實(shí)時操作系統(tǒng)、軟PLC系統(tǒng)、嵌入式組態(tài)軟件等。

  平臺包括運(yùn)行環(huán)境和開發(fā)環(huán)境兩部分。使用開發(fā)環(huán)境,用戶可以方便組態(tài)和二次開發(fā),而將開發(fā)重點(diǎn)集中到具體的控制系統(tǒng)應(yīng)用上,而諸如系統(tǒng)的軟件架構(gòu)設(shè)計、實(shí)時性保證、通用的控制系統(tǒng)軟件如網(wǎng)絡(luò)通信、控制算法等復(fù)雜而繁瑣的軟件工作,則交由平臺完成。

  2.3平臺的總體框架

  嵌入式控制系統(tǒng)平臺是以嵌入式實(shí)時操作系統(tǒng)為核心,包括硬件平臺、硬件驅(qū)動、圖形庫運(yùn)行環(huán)境、實(shí)時數(shù)據(jù)庫管理與通信、人機(jī)界面、軟PLC、網(wǎng)絡(luò)通信、用戶應(yīng)用程序等。

  嵌入式控制系統(tǒng)平臺總體框架如圖1所示。

圖1嵌入式控制系統(tǒng)軟件平臺總體框架

  由圖1可知,嵌入式控制系統(tǒng)軟件平臺主要包括以下部分:

  (1) 嵌入式硬件平臺  (2) 嵌入式實(shí)時操作系統(tǒng)  (3) 硬件驅(qū)動程序 (4) 圖形庫與運(yùn)行環(huán)境  (5) 實(shí)時數(shù)據(jù)庫管理與通信  (6) 人機(jī)界面 (7) 軟PLC  (8) 網(wǎng)絡(luò)通信  (9) 用戶應(yīng)用程序

  3嵌入式控制系統(tǒng)軟件平臺主要模塊的實(shí)現(xiàn)

  嵌入式控制系統(tǒng)軟件平臺是個非常復(fù)雜的系統(tǒng),從總體框架圖可以看出平臺包括實(shí)時操作系統(tǒng)、實(shí)時數(shù)據(jù)庫管理與通信、圖形庫與運(yùn)行環(huán)境、人機(jī)界面等許多模塊,本章著重介紹嵌入式實(shí)時操作系統(tǒng)、實(shí)時數(shù)據(jù)庫管理與通信等模塊的實(shí)現(xiàn)。

  3.1嵌入式Linux實(shí)時操作系統(tǒng)

  Linux是一種能運(yùn)行于多種平臺、功能強(qiáng)大、源代碼公開、免費(fèi)的操作系統(tǒng),基于Linux開發(fā)一個開放的、標(biāo)準(zhǔn)的、高效廉價的實(shí)時操作系統(tǒng)是完全可行的。本文介紹的嵌入式控制系統(tǒng)軟件平臺就采用嵌入式Linux實(shí)時操作系統(tǒng),使用雙內(nèi)核RTAI解決方案。RTAI的實(shí)現(xiàn)方案類似于RT-Linux,是雙內(nèi)核系統(tǒng),即利用Linux內(nèi)核,同時增加一個實(shí)時內(nèi)核,兩個內(nèi)核共同工作。RTAI利用Linux提供的內(nèi)核模塊機(jī)制完成實(shí)時任務(wù),提供實(shí)時服務(wù)。模塊是內(nèi)核的一部分,但是沒有被編譯到內(nèi)核里去。模塊被編譯成一組目標(biāo)文件,根據(jù)需要,這些文件能夠被插入到正在運(yùn)行的內(nèi)核中,也可以從正在運(yùn)行的內(nèi)核中移去。RTAI實(shí)現(xiàn)的主要模塊有RTAI核心模塊、RTAI調(diào)度器模塊、RTAI先進(jìn)先出模塊、RTAI共享內(nèi)存模塊和LXRT模塊等。

  3.1.3基于RTAI的Linux實(shí)時操作系統(tǒng)的實(shí)現(xiàn)

  我們實(shí)現(xiàn)基于RTAI的Linux實(shí)時操作系統(tǒng)的過程是:在標(biāo)準(zhǔn)Linux的基礎(chǔ)上,打上RTAI的實(shí)時補(bǔ)丁包,根據(jù)特定硬件條件和運(yùn)行環(huán)境的要求進(jìn)行適當(dāng)?shù)呐渲?再對內(nèi)核進(jìn)行裁剪后編譯成一個支持實(shí)時性的內(nèi)核。

  3.1.4基于RTAI-Linux的應(yīng)用程序開發(fā)

  在編寫基于RTAI-Linux的應(yīng)用程序時,根據(jù)實(shí)時系統(tǒng)的具體要求,將應(yīng)用程序分為實(shí)時任務(wù)和非實(shí)時任務(wù)。實(shí)時任務(wù)是實(shí)時模塊,作為Linux核心可加載模塊運(yùn)行在核心態(tài)。一般地,定義init_module()函數(shù),它在執(zhí)行insmod命令裝載模塊時被調(diào)用,在該函數(shù)中一般是作一些初試化工作,并且啟動實(shí)時任務(wù)。同樣的,還需要定義cleanup_module()函數(shù),它在執(zhí)行rmmod卸載模塊時被調(diào)用,在該函數(shù)中一般是做一些資源釋放工作。實(shí)時任務(wù)的設(shè)計應(yīng)該盡可能簡單,僅包含那些有強(qiáng)實(shí)時要求的處理模塊,如實(shí)時數(shù)據(jù)采集、外部設(shè)備控制等。

  非實(shí)時任務(wù)是普通的Linux進(jìn)程,它在用戶態(tài)運(yùn)行,運(yùn)行那些對實(shí)時要求不高的任務(wù),如數(shù)據(jù)處理、圖形顯示等。

  實(shí)時任務(wù)(RTAI核心態(tài))并不能直接調(diào)用系統(tǒng)調(diào)用,它必須通過特定的方法和非實(shí)時任務(wù)(Linux進(jìn)程)進(jìn)行通信。它們可以通過共享內(nèi)存和FIFO等方法通信。

  基于RTAI應(yīng)用程序的結(jié)構(gòu)圖如圖2所示。

圖2 RTAI應(yīng)用程序結(jié)構(gòu)圖

  3.2實(shí)時數(shù)據(jù)庫管理與通信[!--empirenews.page--]

  本系統(tǒng)的實(shí)時數(shù)據(jù)庫管理著全局I/O數(shù)據(jù)。通過硬件驅(qū)動程序,將數(shù)據(jù)采集,并放入到實(shí)時數(shù)據(jù)庫中,同時,上層軟件從實(shí)時數(shù)據(jù)庫中獲得數(shù)據(jù)。

  3.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計

  實(shí)時數(shù)據(jù)庫與其他一般數(shù)據(jù)庫一樣,包含一組對象及其結(jié)構(gòu),由于目前對實(shí)時數(shù)據(jù)庫還沒有提出統(tǒng)一的數(shù)據(jù)模型,所以不同廠家開發(fā)的數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)都有很大差別。本系統(tǒng)的實(shí)時數(shù)據(jù)庫,一個基本的數(shù)據(jù)對象為“數(shù)據(jù)”,一個數(shù)據(jù)包含若干信息,如數(shù)據(jù)名稱、數(shù)據(jù)類型、數(shù)據(jù)位置、數(shù)據(jù)長度等。


  考慮到數(shù)據(jù)的存取效率,程序運(yùn)行一開始,我們將在內(nèi)存區(qū)開辟一段緩沖區(qū),緩沖區(qū)中只存放數(shù)據(jù),如果緩沖區(qū)大小不夠,即緩沖區(qū)的數(shù)據(jù)較多,可以自動擴(kuò)展緩沖區(qū)大小。實(shí)時數(shù)據(jù)存放在緩沖區(qū)時,我們采取這種思想:如果不是bit型數(shù)據(jù),由于數(shù)據(jù)長度都是字節(jié)的整數(shù)倍,存入緩沖區(qū)中以字節(jié)來進(jìn)行存儲,該數(shù)據(jù)的長度length是以字節(jié)來計算。如果是bit型數(shù)據(jù),存入緩沖區(qū)中,該數(shù)據(jù)的長度length是以位來計算,接著再存儲一個實(shí)時數(shù)據(jù),若為非bit型數(shù)據(jù),則從下一個字節(jié)開始存放,即原來的bit型數(shù)據(jù)占用一個字節(jié),若為bit型數(shù)據(jù),根據(jù)此數(shù)據(jù)的長度來判斷其存放位置,這里又分兩種情況,如果這兩個bit型數(shù)據(jù)的長度沒有超過8位,則緊接著前一個bit型數(shù)據(jù)后存儲這個bit型數(shù)據(jù),如果兩個bit型數(shù)據(jù)的長度超過8位,則從下一個字節(jié)開始存放,即原來的bit型數(shù)據(jù)占用一個字節(jié)。


  3.2.2數(shù)據(jù)存取設(shè)計

  為了存取方便,我們將所有的實(shí)時數(shù)據(jù)組成一個鏈表,鏈表的節(jié)點(diǎn)類型為上述的rtdb_data_t結(jié)構(gòu)。當(dāng)向?qū)崟r緩沖區(qū)中加入一條數(shù)據(jù)時,就自動會計算出數(shù)據(jù)存儲位置、長度等信息,并在實(shí)時數(shù)據(jù)庫鏈表中加上一個節(jié)點(diǎn)。這樣,取實(shí)時數(shù)據(jù)就非常靈活和方便,如果知道實(shí)時數(shù)據(jù)的名稱,則可以遍歷鏈表得到數(shù)據(jù),如果知道數(shù)據(jù)的存儲位置和長度,則可以利用實(shí)時數(shù)據(jù)庫提供的接口直接從緩沖區(qū)中獲得數(shù)據(jù),而不必遍歷鏈表,因?yàn)楸闅v鏈表需要花費(fèi)一些時間,這在實(shí)時性要求較高的本系統(tǒng)中不太適合,所以本系統(tǒng)常常采用后一種方法存取數(shù)據(jù)。實(shí)時數(shù)據(jù)庫鏈表結(jié)構(gòu)如圖3所示。

圖3實(shí)時數(shù)據(jù)庫鏈表結(jié)構(gòu)

  3.3人機(jī)界面軟件

  人機(jī)界面模塊是本系統(tǒng)重要的部分,它提供用戶與底層控制的交互平臺。

  3.3.1人機(jī)界面數(shù)據(jù)庫

  人機(jī)界面數(shù)據(jù)是指與界面相關(guān)的數(shù)據(jù),包括全局I/O數(shù)據(jù)和內(nèi)存數(shù)據(jù)。I/O數(shù)據(jù)指的是需要系統(tǒng)和其它應(yīng)用程序(包括I/O服務(wù)程序)交換數(shù)據(jù)的變量,與實(shí)時數(shù)據(jù)庫中的全局I/O數(shù)據(jù)相似。內(nèi)存變量是只在系統(tǒng)內(nèi)需要的變量,比如計算過程的中間變量。為了存取方便,我們使用鏈表來組織人機(jī)界面數(shù)據(jù),形成兩個鏈表:I/O數(shù)據(jù)鏈和內(nèi)存數(shù)據(jù)鏈。人機(jī)界面數(shù)據(jù)庫也是依據(jù)XML配置文件hmidb.xml來填充的,XML配置文件來自于開發(fā)環(huán)境。

  3.2.2界面圖元

  圖元是構(gòu)成畫面的基本元素,包括基本圖元,如線條、矩形、橢圓等,以及組合圖元,如油罐、閥門等,它們是由基本圖元組合而成。本系統(tǒng)提供了大量的圖元,這些圖元的繪制將調(diào)用特定系統(tǒng)下的平臺函數(shù),如Linux系統(tǒng)和Windows CE系統(tǒng),即對于用戶來說,不管使用哪個系統(tǒng),這一層是相同的。

  描述人機(jī)界面需要一個XML配置文件,如hmiwidget.xml,這個配置文件是用戶在開發(fā)環(huán)境中設(shè)計界面時生成的。系統(tǒng)還支持圖元的變化,即動態(tài)屬性,以及事件響應(yīng)。因此人機(jī)界面圖元還有動態(tài)屬性和事件屬性,解析配置文件hmiwidget.xml時,會分析這些屬性,并將其鏈起來。

  在系統(tǒng)初始化時,MiniGUI分為兩種情況:服務(wù)器(Server)和客戶端(Client)。這主要取決于全局變量mgServer的值,如果為TRUE,表示為服務(wù)端,如果為FALSE,表示為客戶端。我們將MiniGUI應(yīng)用程序名改為mginit,則該應(yīng)用程序?yàn)榉?wù)端,如果MiniGUI應(yīng)用程序名作為客戶端運(yùn)行,則必須先運(yùn)行MiniGUI提供的服務(wù)端程序mginit。

圖4 MiniGUI應(yīng)用程序流程

  本文作者創(chuàng)新點(diǎn):

  本文討論的嵌入式控制系統(tǒng)軟件平臺是一個復(fù)雜、龐大的系統(tǒng),而且每個組成部分其內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)也非常復(fù)雜。我在此課題中做了很多研究,提出了系統(tǒng)設(shè)計的框架,如今已經(jīng)實(shí)現(xiàn)部分為: 嵌入式Linux實(shí)時操作系統(tǒng)、實(shí)時數(shù)據(jù)庫管理與通信、圖形庫與運(yùn)行環(huán)境等,取得了優(yōu)秀的成果。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉