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