基于構件技術(shù)的嵌入式系統復用軟件設計
引 言
本文引用地址:http://dyxdggzs.com/article/85346.htm對嵌入式軟件構件平臺而言,其支撐平臺首先是一個(gè)嵌入式實(shí)時(shí)多任務(wù)操作系統,其次為整個(gè)軟件構件的設計提供開(kāi)發(fā)工具和集成環(huán)境。在支撐平臺的設計過(guò)程中,可以借鑒領(lǐng)域工程的思想,將整個(gè)嵌入式實(shí)時(shí)多任務(wù)操作系統設計成一個(gè)系統級的軟件構件庫。這樣不但實(shí)現了嵌入式操作系統的可裁剪性,而且由于從嵌入式操作系統到應用程序的設計都是基于離散化的軟件構件,因此方便了嵌入式控制應用軟件設計時(shí)的集成和調試。為了方便軟件構件的管理,可以將系統級和應用級的軟件構件庫綜合成一個(gè)功能完備的軟件構件庫。它包括從嵌入式控制系統的系統層、支撐層和應用層所需的一切軟件構件,因而具有功能的完整性。
1 嵌入式軟件構件平臺的體系結構
嵌入式軟件構件平臺的體系結構如圖1所示,它包括系統層、連接層(支撐層)和應用層3個(gè)部分。系統層屬于領(lǐng)域工程的范疇,它利用領(lǐng)域工程的分析方法對嵌入式控制系統進(jìn)行分析、抽象和提煉,并分解成相應的系統類(lèi)和應用類(lèi)功能模塊。連接層是一個(gè)嵌入式軟件構件平臺,它實(shí)現系統層和應用層之間的無(wú)縫連接,即提供軟件構件一個(gè)集成開(kāi)發(fā)平臺。應用層屬于應用工程的范疇,用戶(hù)根據實(shí)際的嵌入式控制系統的控制要求和目標,從軟件構件庫中選取所需軟件構件,經(jīng)集成后生成實(shí)際的嵌入式控制應用程序。
2 嵌入式軟件構件平臺的設計
該軟件構件平臺是基于TMS320F2812 DSP芯片構建的一個(gè)構件化的嵌入式實(shí)時(shí)多任務(wù)操作系統。在設計時(shí)充分利用了平臺體系結構所述的設計思想,程序的可讀性和裁剪性非常好。其特點(diǎn)是:
?、僭O計了操作系統和系統兩個(gè)數據結構。為了方便支撐平臺的設計和對系統資源的集中管理,設計了操作系統數據結構,該數據結構為平臺設計者獨占,用戶(hù)沒(méi)有訪(fǎng)問(wèn)該數據結構的權限;另外,為了便于用戶(hù)程序與操作系統之間的交互以及對系統資源的訪(fǎng)問(wèn)、申請,設計了系統數據結構。該數據結構用戶(hù)是可見(jiàn)的,也是應用程序訪(fǎng)問(wèn)操作系統的唯一途徑。
?、谂渲昧艘粋€(gè)最小系統。其主要功能是當接到啟動(dòng)指令后對指令進(jìn)行確認并判斷啟動(dòng)方式;然后,根據啟動(dòng)方式完成微處理器的CPU寄存器和一些外圍寄存器的初始化,并且對操作系統和系統兩個(gè)數據結構進(jìn)行初始賦值。但它不能實(shí)現任何的控制功能,完成初始化后就處于系統掃描狀態(tài)。
?、巯到y設計的任務(wù)數小于或等于16(即一個(gè)字長(cháng)),這樣一來(lái)任務(wù)的調度算法相對比較簡(jiǎn)單,而且完全能夠滿(mǎn)足嵌入式實(shí)時(shí)控制系統應用的要求。每一個(gè)任務(wù)指定唯一的優(yōu)先級,其任務(wù)優(yōu)先級與任務(wù)標識一致,優(yōu)先級越高的任務(wù)其優(yōu)先級ID就越低??晒┤蝿?wù)選擇的優(yōu)先級ID范圍是0~15,其中系統保留了最高和最低優(yōu)先級任務(wù)。通信及系統同步采用了信號量方式(可以擴展),設計了P操作和V操作兩種軟件構件,對系統進(jìn)行通信和同步管理;同時(shí),設計了創(chuàng )建任務(wù)和任務(wù)開(kāi)始兩個(gè)軟件構件,分別為任務(wù)的建立和結束提供系統管理。
?、茉O計了任務(wù)調度、任務(wù)切換、任務(wù)上鎖、虛擬消息等軟件構件,實(shí)現系統對多任務(wù)的控制和管理。為了方便系統的任務(wù)切換,整個(gè)支撐平臺系統設計了兩類(lèi)堆棧——系統堆棧和任務(wù)堆棧。
2.1 構件接口軟件的設計
由于本構件裝配是采用語(yǔ)言組態(tài)的軟件構件集成方式,因此接口的定義類(lèi)似于組態(tài)入口參數序列。它主要包含軟件構件標識信息、軟件構件注冊信息及軟件構件的配置信息。標識信息識別目前所用的是哪一個(gè)軟件構件,并給出了軟件構件的切入點(diǎn)(虛擬地址指針);注冊信息包含軟件構件向操作系統申請的系統服務(wù)和系統資源,操作系統在得到注冊信息后,為軟件構件提供相應的系統服務(wù)和分配所需的系統資源;配置信息包括軟件構件在不同的系統狀態(tài)下所需的參數信息,它可以以數據或地址的狀態(tài)給出。接口類(lèi)軟件主要是完成應用程序與支撐平臺的交互,起到一個(gè)系統接口界面的作用,方便了用戶(hù)對支撐平臺的訪(fǎng)問(wèn)。它包括錯誤觀(guān)察WatchErr()、參數注冊SysCom-pReg、獲取整型量*GetAddN()、獲取浮點(diǎn)數*GetAddF()、獲取結構體*GetAddS()、取開(kāi)關(guān)量Sys_GetBit()、存開(kāi)關(guān)量Sys_BitGetvalue()、浮點(diǎn)數上/下限限幅Sys_Fmaxmin()、整型量上/下限限幅Sys_Nmaxmin()等函數。
2.2 系統配置類(lèi)軟件構件的設計
這類(lèi)構件在系統軟件集成時(shí)最多只能使用一次,主要完成系統資源的配置以及一些系統功能的啟用,包括系統開(kāi)始、系統結束、擴展、擴展內存等構件。
2.2.1 設計系統開(kāi)始構件
一個(gè)嵌入式控制應用程序必須包括且僅包括一個(gè)系統開(kāi)始構件,而且該構件位于軟件構件組態(tài)集成序列的末端。系統循環(huán)掃描一開(kāi)始時(shí),首先進(jìn)入的便是該構件。該構件的功能是根據系統所處的系統狀態(tài),對系統參數、程序空間進(jìn)行配置。其接口定義如下:
接口說(shuō)明:構件號是該構件的唯一標識和切入點(diǎn)(該構件入口虛擬程序地址指針);啟動(dòng)選擇方式主要用于設定系統的啟動(dòng)方式;缺省通信方式主要是從CAN、MORDBUS和工業(yè)以太網(wǎng)中選擇一種作為系統默認的通信方式;外部高速和低速時(shí)鐘頻率用于設置高速和低速外圍所需的時(shí)鐘頻率,即可以修改最小系統中的初始配置;系統口令主要保證系統的安全性,不允許隨意修改組態(tài)集成格式;系統型號和裝配日期給出了系統軟件集成的一些文本信息。設計者可以根據系統設計需要,在構件組態(tài)集成時(shí)自由配置。
2.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)行初始化設置。
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ō)可以在支撐平臺添加郵箱或消息隊列構件,采用哪種通信和同步方式主要根據系統的設計需要而定。
3 集成開(kāi)發(fā)環(huán)境
本課題組采用微型消息總線(xiàn)MMB嵌入式系統集成開(kāi)發(fā)環(huán)境(MMBIDE)應用程序編程語(yǔ)言引入IEC611 31-3標準,將結構化語(yǔ)句(Structured Text)描述程序設計語(yǔ)言作為自身嵌入式系統應用軟件的編程語(yǔ)言。這主要是考慮到MMB嵌入式系統應用于工業(yè)控制領(lǐng)域,要求能夠自身可以完成較復雜的控制運算,同時(shí)要求語(yǔ)句清晰、易懂,具有編程任務(wù)高度壓縮化的表達格式。采用交叉開(kāi)發(fā)方法,在Windows主機平臺上開(kāi)發(fā)與之連接的目標機。開(kāi)發(fā)環(huán)境包括自己的可裁剪的微內核實(shí)時(shí)多任務(wù)操作系統,主機上的編譯、調試、查看等工具,以及串口、網(wǎng)絡(luò )與目標機的連接工具。其主要功能包括面向工業(yè)應用領(lǐng)域的應用程序基本框架、可重用的構件庫、源程序編譯器、組態(tài)下載用戶(hù)工具、參數下載用戶(hù)工具、參數實(shí)時(shí)監控界面等用于支撐應用程序開(kāi)發(fā)的各類(lèi)用戶(hù)工具,是用戶(hù)開(kāi)發(fā)應用程序的重要基礎,強調知識成果的積累和重用,是平臺開(kāi)發(fā)模式思想的集中體現。
結 語(yǔ)
本軟件開(kāi)發(fā)平臺應用軟件構件技術(shù)主要解決下列問(wèn)題:軟件構件的接口定義,提供軟件構件與系統以及軟件構件之間的交互機制,同時(shí)為軟件構件的設計和封裝提供依據。軟件構件的開(kāi)發(fā)和集成,為軟件構件的設計和集成提供必要的開(kāi)發(fā)工具。本文介紹了其中主要的系統級軟件構件的開(kāi)發(fā)方法,為系統集成各種應用級軟件提供了總體框架,解決了控制系統應用軟件難維護、難繼承的問(wèn)題,為控制類(lèi)應用軟件的開(kāi)發(fā)提供了依據。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論