基于構件技術(shù)的嵌入式系統復用軟件設計
接口說(shuō)明:構件號是該構件的唯一標識和切入點(diǎn)(該構件入口虛擬程序地址指針);啟動(dòng)選擇方式主要用于設定系統的啟動(dòng)方式;缺省通信方式主要是從CAN、MORDBUS和工業(yè)以太網(wǎng)中選擇一種作為系統默認的通信方式;外部高速和低速時(shí)鐘頻率用于設置高速和低速外圍所需的時(shí)鐘頻率,即可以修改最小系統中的初始配置;系統口令主要保證系統的安全性,不允許隨意修改組態(tài)集成格式;系統型號和裝配日期給出了系統軟件集成的一些文本信息。設計者可以根據系統設計需要,在構件組態(tài)集成時(shí)自由配置。
本文引用地址:http://dyxdggzs.com/article/83653.htm2.2.2 設計擴展構件
由于系統設計時(shí),在系統總配置表單中規定了最大的原始構件數小于或等于511,因此當系統構件數目超過(guò)原始構件個(gè)數時(shí),必須通過(guò)擴展構件來(lái)擴展系統構件。擴展構件的接口定義如下:
接口說(shuō)明:為了方便擴展構件,該接口設計為比較靈活的方式。它僅指出了擴展構件的地址,而擴展的構件個(gè)數由組態(tài)集成結束標識0來(lái)終結組態(tài)接口參數的設置。
2.2.3 設計擴展內存構件
在支撐平臺的設計中,根據嵌入式控制應用程序的需要,將系統的整個(gè)內存空間劃分為4大塊,每一塊有固定的長(cháng)度和使用域。當應用程序對內存的需求超出設計范圍時(shí),可以利用擴展內存構件對內存進(jìn)行擴展。其接口定義如下:
2.2.4 設計系統結束構件
系統結束構件固定位于軟件組態(tài)集成序列的前端,即組態(tài)集成號為0。它在系統軟件構件組態(tài)集成完畢后、即將進(jìn)入系統運行時(shí)啟用該構件,即處于系統循環(huán)的最后。它在系統工作狀態(tài)工作,執行返回軟件組態(tài)集成序列起始地址的功能。在系統初始化狀態(tài)時(shí),完成標定數據和一般數據的獲取和保存,并執行啟動(dòng)系統時(shí)鐘和看門(mén)狗,以及返回組態(tài)序列起始地址等系統功能。接口參數僅有一個(gè)標識該構件的構件號0。
2.3 系統任務(wù)類(lèi)軟件構件的設計
任務(wù)創(chuàng )建構件Task:一般的多任務(wù)操作系統運行之前,系統必須至少建立一個(gè)任務(wù),一般是一個(gè)空閑任務(wù),其他任務(wù)可以在程序運行的過(guò)程中創(chuàng )建。但在本支撐平臺的設計中,鑒于一個(gè)實(shí)際的嵌入式控制應用程序的任務(wù)數事先是可以確定的,因而設計了任務(wù)創(chuàng )建構件,可以利用該構件在應用程序的軟件集成過(guò)程中創(chuàng )建所需的任務(wù)。該構件的組態(tài)集成接口定義如下:
設計說(shuō)明:每定義一個(gè)任務(wù)使用一次該構件。任務(wù)號是外指針,用戶(hù)可見(jiàn),里面包含虛擬程序地址指針、任務(wù)優(yōu)先級等信息;系統為每個(gè)任務(wù)分配了堆??臻g,由于任務(wù)的不同,可能對系統資源的需求也不同,為了節省整個(gè)系統的內存空間,用戶(hù)可以從組態(tài)集成接口直接指定任務(wù)堆棧的大??;為了跟蹤任務(wù)的運行時(shí)間和任務(wù)定時(shí),在接口中設計了時(shí)間單位和時(shí)間長(cháng)度2個(gè)參數,對任務(wù)的運行時(shí)間進(jìn)行統計和定時(shí)計數。另外,為了方便任務(wù)切換,整個(gè)支撐平臺設計了兩類(lèi)堆棧,即系統堆棧和任務(wù)堆棧。因此在建立任務(wù)時(shí),要根據所處的系統狀態(tài),對每一個(gè)任務(wù)的任務(wù)堆棧進(jìn)行初始化設置[4]。
2.4 通信和同步管理類(lèi)軟件構件的設計
任務(wù)間的通信有2種途徑:通過(guò)全程變量,或發(fā)消息給另一個(gè)任務(wù)。使用全程變量時(shí),必須保證每個(gè)任務(wù)或中斷服務(wù)程序獨享該變量。中斷服務(wù)中保證獨享的唯一辦法是關(guān)中斷。如果兩個(gè)任務(wù)共享某變量,各任務(wù)實(shí)現獨享該變量的辦法可以是關(guān)中斷再開(kāi)中斷,或使用信號量。在支撐平臺的設計中,采用了信號量方式進(jìn)行系統的通信和同步管理,包括P操作PSema和V操作VSema兩種軟件構件。
P操作軟件構件實(shí)現下列功能:在系統注冊狀態(tài)完成注冊表的填寫(xiě),向系統申請所需的系統資源;在系統參數初始化狀態(tài)完成信號量數據結構的初始化;在系統工作狀態(tài),如果信號量大于零(即信號量可用),則信號量減1,否則表示信號量不可用,進(jìn)行任務(wù)懸掛操作和任務(wù)切換。其接口定義如下:
接口說(shuō)明:信號量地址是外指針,用戶(hù)可見(jiàn),是信號量數據結構的入口點(diǎn);信號量初值若設為1,則表示任務(wù)通信,若為0,則表示任務(wù)同步。
V操作軟件構件只在系統工作狀態(tài)下工作,與P操作軟件構件公用一個(gè)數據結構。它首先將信號量減1,然后判斷信號量是否大于零。若大于零,表示公共資源可用,則使所給定任務(wù)就緒,并進(jìn)行任務(wù)調度和切換。其接口如下:
由于采用構件化的設計方式,系統通信和同步方式可以自由擴展。比如說(shuō)可以在支撐平臺添加郵箱或消息隊列構件,采用哪種通信和同步方式主要根據系統的設計需要而定。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論