當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于DeltaOS的系統(tǒng)軟件設計

雙星定位系統(tǒng)是我國自主開發(fā)的定位導航系統(tǒng),它的用戶手持終端對實時性要求高,考慮到價格以及開發(fā)周期的因素,用戶機系統(tǒng)軟件的開發(fā)選用了具有國內(nèi)自主知識產(chǎn)權(quán)的DeltaOS.

  本系統(tǒng)的系統(tǒng)軟件在DeltaCORE內(nèi)核上構(gòu)建,選擇采用C語言編寫,來提高軟件的執(zhí)行效率和可讀性;圖形界面基于DeltaGUI設計,采用C++編寫,以縮短開發(fā)周期。該系統(tǒng)軟件設計的重點在于穩(wěn)定性和可靠性,關(guān)鍵和難點在于實時性的保證。作為一個完善的系統(tǒng),軟件功能的可擴展性也是必不可少的。本文從總體設計入手,針對性地解決了以上問題。

  1 系統(tǒng)功能

  雙星用戶機是一個定位和通信終端,它除了必須完成定位、通信功能外,還需要有友善的人機交互界面以及測試設備接口。嵌入式系統(tǒng)和外設之間的關(guān)系如圖1所示。

  

 

  嵌入式系統(tǒng)的硬件平臺是通用性的平臺,算法實現(xiàn)和設備各部分的協(xié)調(diào)控制都由嵌入式軟件來實現(xiàn)。軟件部分需要完成的具體功能有:界面輸入輸出控制、入站數(shù)據(jù)段打包、入站信息加密、入站幀打包、出站幀拆包、出站信息解密和提供測試接口。

  2 提高系統(tǒng)的實時性

  2.1 任務劃分的優(yōu)化

  在設計一個較為復雜的多任務應用時,進行的合理的任務劃分對系統(tǒng)的運行效率、實時性和吞吐量影響極大。任務分解過細會引起任務頻繁切換的開銷增加,而任務分解不夠徹底會造成原本可以并行的操作只能按順序串行完成,從而減少了系統(tǒng)的吞吐量。

  在將一個軟件系統(tǒng)分解成并行任務時,主要需考慮的是系統(tǒng)功能的異步性。分析數(shù)據(jù)流圖中的變換,確定哪些變換可以并行,哪些變換在本質(zhì)上是順序的,通過這種方法,劃分出任務:一個變換對應一個任務,或者一個任務包括幾個變換。一個變換是應該成為一個獨立的任務,還是應該和其他變換一起組成一個任務,本軟件中遵循了H-Gomma原則[1],即:

 ?、買/O依賴性原則

  ②時間關(guān)鍵性原則

 ?、鄞笥嬎懔吭瓌t

  ④功能內(nèi)聚

 ?、輹r間內(nèi)聚

 ?、拗芷谛栽瓌t

  本系統(tǒng)的軟件分為應用軟件和系統(tǒng)軟件兩大部份。應用軟件部分位于系統(tǒng)軟件上層,它完成圖形界面的輸入及顯示功能。應用軟件部分具有處理時間長、實時性要求不高和不存在并行性的特點,因此作為一個GUI任務并且賦予最低優(yōu)先級。系統(tǒng)軟件需要完成所有出入站信息處理,處理過程復雜,實時性要求高,順序處理顯然不能滿足要求,因此必須進行任務劃分優(yōu)化。

  圖2為入站信息處理的數(shù)據(jù)流圖,圖3位出站信息處理的數(shù)據(jù)流圖。

  根據(jù)I/O依賴性原則,直接和I/O設備打交道的功能都應該成為獨立的任務,因為它的運行速度受制于與它交互的I/O設備的速度。在入站流程中,向IC卡發(fā)指令、接收IC卡響應信息和送入站數(shù)據(jù)幀至基帶均存在I/O操作,應該獨立劃分為一個任務。同理,出站信息處理過程中的主通道數(shù)據(jù)讀取、次通道數(shù)據(jù)讀取、向IC卡發(fā)指令和接收IC卡響應信息分別劃分為獨立的任務。

  

 

  圖2 入站信息處理數(shù)據(jù)流圖

 

  圖3 出站信息處理數(shù)據(jù)流圖

  根據(jù)功能內(nèi)聚原則,功能緊密相關(guān)的變換組成一個任務,它們共享資源或相同事件的驅(qū)動。定位數(shù)據(jù)段打包和通信數(shù)據(jù)段打包具有相似功能,它們均由有效輸入的指令觸發(fā),可以合并為一個數(shù)據(jù)段打包任務,針對不同類別的請求使用不同的功能模塊來處理。這樣,當系統(tǒng)需要增加新的功能時只需在該任務中增加相應的處理模塊即可,可擴展性得到了保證。

  根據(jù)時間內(nèi)聚原則,同一時間內(nèi)完成的功能,即使這些功能不相關(guān)也可組成一個任務。數(shù)據(jù)段的打包在輸入指令解釋完成之后立即被處理,在時間上具有連續(xù)性,合并成一個任務可以減少任務間通信開銷,有利于提高系統(tǒng)實時性。

  主通道數(shù)據(jù)幀拆包、次通道數(shù)據(jù)幀拆包和入站數(shù)據(jù)幀打包的運算量大,適合作為獨立的任務。然而,主通道和次通道出站數(shù)據(jù)幀格式相同,完全可以共用一個任務:出站幀數(shù)據(jù)拆包。

  雖然加密指令打包和解密指令打包分別處于入站信息處理流程和出站信息處理流程,但是它們同屬IC卡指令打包,具有很強的功能內(nèi)聚性,合并為一個任務共用IC卡驅(qū)動。

  任務重新劃分如圖4所示。優(yōu)化之后,不但系統(tǒng)軟件實時性和可擴展性得到增強,而且由于充分的代碼重用,代碼尺寸減小,節(jié)省存儲空間。

  

 

  圖4 優(yōu)化后的出入站任務劃分和數(shù)據(jù)流圖

  2.2 中斷優(yōu)化

  任務的切換是由操作系統(tǒng)來調(diào)度的,操作系統(tǒng)的干預會浪費CPU時間。特別是對于時間關(guān)鍵性很強任務,例如基帶主通道數(shù)據(jù)讀取、次通道數(shù)據(jù)讀取、向IC卡發(fā)指令、接收IC卡相應信息任務,頻繁的任務調(diào)度會使系統(tǒng)的效率低下。因此,這些處理直接由中斷服務子程序來完成。

  雖然中斷服務響應速度快,但是當一個中斷服務執(zhí)行時,其它同優(yōu)先級或較低優(yōu)先級的中斷以及任意優(yōu)先級的任務均得不到執(zhí)行。因此如果中斷服務所占用的時間過長,同樣會降低系統(tǒng)的實時性。

  為了提高系統(tǒng)的實時性,本系統(tǒng)軟件在中斷處理上主要做了以下兩方面的優(yōu)化:

  ①中斷優(yōu)先級設置的優(yōu)化,將觸發(fā)頻率高的中斷和重要的中斷設為高優(yōu)先級來保證其及時響應。

  ②關(guān)中斷時間應該盡可能地小,ISRs只完成一些必要的操作,如:輸入數(shù)據(jù)、輸出數(shù)據(jù)或?qū)⒖刂菩畔鬟f給任務,對中斷的進一步處理通過任務來完成[2]。[!--empirenews.page--]3 可靠性保證和可擴展性的提高

 

  對于任何軟件來說,可靠性都是至關(guān)重要的。軟件的可靠性在任務內(nèi)是容易做到,通常問題都是出在任務間的接口之上。接口設計也關(guān)系到軟件可擴展性能。在多任務操作系統(tǒng)中,任務間的接口是通過同步和通信機制來實現(xiàn)的,因此同步和通信機制必須認真選取。

  DeltaCORE提供了消息隊列(message queue)、信號量(semaphore)、異步信號(signal)、事件(event)這四種通信和同步機制。其中,消息隊列和事件機制可以同時實現(xiàn)通信和同步,信號量機制可以實現(xiàn)同步和互斥,異步信號(又叫軟中斷機制)可以實現(xiàn)同步。

  為了滿足系統(tǒng)通信和同步的需要,可以采用兩種方案:第一種方案是信號量等同步機制實現(xiàn)同步,用全局數(shù)組或其他的共享數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)各任務間的通信,如圖5;另一種是采用消息隊列來同時實現(xiàn)通信和同步,如圖6。

  

 

  對比兩種方案,各有優(yōu)缺點:方案一實時性強,但存在可重入性問題;方案二實現(xiàn)簡單而且可靠,但是消息隊列機制通信的實時性相對較弱。本系統(tǒng)中出站信息的突發(fā)性強,如果采用方案一,則可能導致第二個通道的數(shù)據(jù)失效或者第一個通道的數(shù)據(jù)被覆蓋;如果采用方案二雖然數(shù)據(jù)的處理延時稍大,但是數(shù)據(jù)能夠完整存儲到消息隊列中不被損壞。此外,利用消息隊列為任務提供唯一的入口,能簡化接口設計和方便功能擴展。因此,本文采用消息隊列方案,其實現(xiàn)方法如下:

  每個任務都對應一個消息隊列,任務只處理與之相對應的消息隊列中的消息。對于發(fā)送方(task1),當它需要將發(fā)送緩沖區(qū)buffer中的數(shù)據(jù)交給task2處理時,只須將buffer中的數(shù)據(jù)發(fā)送到與task2對應的消息隊列Q2中就行了。

  ret = delta_message_queue_send ( Queue_id[ 2 ], buffer, size );

  其中Queue_id[2]為消息隊列Q2的ID,size為消息大小(單位字節(jié))。

  對于接收方(task2),將接收消息函數(shù)的等待時間參數(shù)設為永久等待,達到當消息隊列為空時阻塞任務的目的。task2的代碼如下:

  delta_task task1()

  {

  delta_status_code ret;

  …… // 定義其他局部變量

  while(1)

  {

  ret = delta_message_queue_receive(

  Queue_id[ 2 ], /*消息隊列ID*/

  RecBuff, /*指向接收緩沖區(qū)的指針*/

  &size,/*接收消息的尺寸(單位字節(jié))*/

  DELTA_DEFAULT_OPTIONS, /*屬性集*/

  DELTA_NO_TIMEOUT /*等待時間*/

  );

  …… //完成task1功能的代碼

  }

  }

  通過這種方式,任務與任務之間、任務與中斷之間的通信和同步都得以實現(xiàn)。任務的狀態(tài)轉(zhuǎn)換如圖7:

  

  4 致命錯誤的防止和解決

  通常異常是由兩種情況引起的:一種是數(shù)組越界或使用指針不當;另一種是任務棧溢出。為避免以上情況發(fā)生,數(shù)組和任務棧的大小必須設置恰當,修改數(shù)組元素的時候要保證下標是在合法范圍內(nèi)的,使用指針要特別小心。不過,DeltaOS提供了異常處理機制,用戶可以編寫自己的擴展例程,當出現(xiàn)致命錯誤的時候?qū)嵭幸欢ǖ耐炀却胧?,比如復位程序整個系統(tǒng)軟件或者重新起動指定任務。

  DeltaOS是一個強實時性的操作系統(tǒng),通過優(yōu)化任務劃分、有效的利用中斷機制滿足了系統(tǒng)的強實時要求。利用本文提出的通信和同步方案,實現(xiàn)了任務的標準化接口,方便地進行了多次功能擴展,并且顯示了它可靠性強的優(yōu)點。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(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)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

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

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(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 半導體

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

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

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

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

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(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ù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

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