新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于DeltaOS的系統軟件設計

        基于DeltaOS的系統軟件設計

        作者: 時間:2011-08-18 來源:網絡 收藏

        雙星定位是我國自主開發的定位導航,它的用戶手持終端對實時性要求高,考慮到價格以及開發周期的因素,用戶機的開發選用了具有國內自主知識產權的.

        本文引用地址:http://www.104case.com/article/150332.htm

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

          1 系統功能

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

           嵌入式系統和外設之間的關系圖

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

          2 提高系統的實時性

          2.1 任務劃分的優化

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

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

          ①I/O依賴性原則

         ?、跁r間關鍵性原則

         ?、鄞笥嬎懔吭瓌t

          ④功能內聚

         ?、輹r間內聚

         ?、拗芷谛栽瓌t

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

          圖2為入站信息處理的數據流圖,圖3位出站信息處理的數據流圖。

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

          

          圖2 入站信息處理數據流圖

          圖3 出站信息處理數據流圖

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

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

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

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

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

          

          圖4 優化后的出入站任務劃分和數據流圖

          2.2 中斷優化

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

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

          為了提高系統的實時性,本系統軟件在中斷處理上主要做了以下兩方面的優化:

         ?、僦袛鄡炏燃壴O置的優化,將觸發頻率高的中斷和重要的中斷設為高優先級來保證其及時響應。

         ?、陉P中斷時間應該盡可能地小,ISRs只完成一些必要的操作,如:輸入數據、輸出數據或將控制信息傳遞給任務,對中斷的進一步處理通過任務來完成[2]。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绵阳市| 江山市| 那曲县| 丹寨县| 温宿县| 资阳市| 东安县| 保山市| 共和县| 东台市| 邵东县| 自治县| 临沭县| 宁陕县| 应城市| 滁州市| 铜陵市| 乐陵市| 无为县| 大冶市| 枞阳县| 西吉县| 铜陵市| 荆门市| 化德县| 永宁县| 莱西市| 历史| 桂阳县| 扎鲁特旗| 广南县| 桦南县| 贵州省| 繁峙县| 北流市| 博野县| 方正县| 宁德市| 钟山县| 清远市| 武鸣县|