基於構件技術的嵌入式系統複用軟體設計

來源:互聯網
上載者:User

引 言

對嵌入式軟體構件平台而言,其支撐平台首先是一個嵌入式即時多任務作業系統,其次為整個軟體構件的設計提供開發工具和Integration Environment。在支撐平台的設計過程中,可以借鑒領域工程的思想,將整個嵌入式即時多任務作業系統設計成一個系統級的軟體構件庫。這樣不但實現了嵌入式作業系統的可裁剪性,而且由於從嵌入式作業系統到應用程式的設計都是基於離散化的軟體構件,因此方便了嵌入式控制應用軟體設計時的整合和調試。為了方便軟體構件的管理,可以將系統級和應用級的軟體構件庫綜合成一個功能完備的軟體構件庫。它包括從嵌入式控制系統的系統層、支撐層和應用程式層所需的一切軟體構件,因而具有功能的完整性。

1 嵌入式軟體構件平台的體繫結構

嵌入式軟體構件平台的體繫結構1所示,它包括系統層、串連層(支撐層)和應用程式層3個部分。系統層屬於領域工程的範疇,它利用領域工程的分析方法對嵌入式控制系統進行分析、抽象和提煉,並分解成相應的系統類別和應用類功能模組。串連層是一個嵌入式軟體構件平台,它實現系統層和應用程式層之間的無縫串連,即提供軟體構件一個整合開發平台。應用程式層屬於應用工程的範疇,使用者根據實際的嵌入式控制系統的控制要求和目標,從軟體構件庫中選取所需軟體構件,經整合後產生實際的嵌入式控制應用程式。

2 嵌入式軟體構件平台的設計

該軟體構件平台是基於TMS320F2812 DSP晶片構建的一個構件化的嵌入式即時多任務作業系統。在設計時充分利用了平台體繫結構所述的設計思想,程式的可讀性和裁剪性非常好。其特點是:

①設計了作業系統和系統兩個資料結構。為了方便支撐平台的設計和對系統資源的集中管理,設計了作業系統資料結構,該資料結構為平台設計者獨佔,使用者沒有訪問該資料結構的許可權;另外,為了便於使用者程式與作業系統之間的互動以及對系統資源的訪問、申請,設計了系統資料結構。該資料結構使用者是可見的,也是應用程式訪問作業系統的唯一途徑。

②配置了一個最小系統。其主要功能是當接到啟動指令後對指令進行確認並判斷啟動方式;然後,根據啟動方式完成微處理器的CPU寄存器和一些外圍寄存器的初始化,並且對作業系統和系統兩個資料結構進行初始賦值。但它不能實現任何的控制功能,完成初始化後就處於系統掃描狀態。

③系統設計的任務數小於或等於16(即一個字長),這樣一來任務的調度演算法相對比較簡單,而且完全能夠滿足嵌入式即時控制系統應用的要求。每一個任務指定唯一的優先順序,其任務優先順序與任務標識一致,優先順序越高的任務其優先順序ID就越低。可供任務選擇的優先順序ID範圍是0~15,其中系統保留了最高和最低優先順序任務。通訊及系統同步採用了訊號量方式(可以擴充),設計了P操作和V操作兩種軟體構件,對系統進行通訊和同步管理;同時,設計了建立任務和任務開始兩個軟體構件,分別為任務的建立和結束提供系統管理。

④設計了任務調度、任務切換、任務上鎖、虛擬訊息等軟體構件,實現系統對多任務的控制和管理。為了方便系統的任務切換,整個支撐平台系統設計了兩類堆棧——系統堆棧和任務堆棧。

2.1 構件介面軟體的設計

由於本構件裝配是採用語言群組態的軟體構件整合方式,因此介面的定義類似於組態入口參數序列。它主要包含軟體構件標識資訊、軟體構件註冊資訊及軟體構件的配置資訊。標識資訊識別目前所用的是哪一個軟體構件,並給出了軟體構件的切入點(虛擬位址指標);註冊資訊包含軟體構件向作業系統申請的系統服務和系統資源,作業系統在得到註冊資訊後,為軟體構件提供相應的系統服務和分配所需的系統資源;配置資訊包括軟體構件在不同的系統狀態下所需的參數資訊,它可以以資料或地址的狀態給出。介面類軟體主要是完成應用程式與支撐平台的互動,起到一個系統介面介面的作用,方便了使用者對支撐平台的訪問。它包括錯誤觀察WatchErr()、參數註冊SysCom-pReg、擷取整型量*GetAddN()、擷取浮點數*GetAddF()、擷取結構體*GetAddS()、取開關量Sys_GetBit()、存開關量Sys_BitGetvalue()、浮點數上/下限限幅Sys_Fmaxmin()、整型量上/下限限幅Sys_Nmaxmin()等函數。

2.2 系統配置類軟體構件的設計

這類構件在系統軟體整合時最多隻能使用一次,主要完成系統資源的配置以及一些系統功能的啟用,包括系統開始、系統結束、擴充、擴充記憶體等構件。

2.2.1 設計系統開始構件

一個嵌入式控制應用程式必須包括且僅包括一個系統開始構件,而且該構件位於軟體構件組態整合序列的末端。系統迴圈掃描一開始時,首先進入的便是該構件。該構件的功能是根據系統所處的系統狀態,對系統參數、程式空間進行配置。其介面定義如下:

介面說明:構件號是該構件的唯一標識和切入點(該構件入口虛擬程式地址指標);啟動選擇方式主要用於設定系統的啟動方式;預設通訊方式主要是從CAN、MORDBUS和工業乙太網路中選擇一種作為系統預設的通訊方式;外部高速和低速時鐘頻率用於設定高速和低速外圍所需的時鐘頻率,即可以修改最小系統中的初始配置;系統口令主要保證系統的安全性,不允許隨意修改組態整合格式;系統型號和裝配日期給出了系統軟體整合的一些文本資訊。設計者可以根據系統設計需要,在構件組態整合時自由配置。

2.2.2 設計擴充構件

由於系統設計時,在系統總配置表單中規定了最大的原始構件數小於或等於511,因此當系統構件數目超過原始構件個數時,必須通過擴充構件來擴充系統構件。擴充構件的介面定義如下:

介面說明:為了方便擴充構件,該介面設計為比較靈活的方式。它僅指出了擴充構件的地址,而擴充的構件個數由組態整合結束標識0來終結組態介面參數的設定。

2.2.3 設計擴充記憶體構件

在支撐平台的設計中,根據嵌入式控制應用程式的需要,將系統的整個記憶體空間劃分為4大塊,每一塊有固定的長度和使用域。當應用程式對記憶體的需求超出設計範圍時,可以利用擴充記憶體構件對記憶體進行擴充。其介面定義如下:

2.2.4 設計系統結束構件

系統結束構件固定位於軟體組態整合序列的前端,即組態整合號為0。它在系統軟體構件組態整合完畢後、即將進入系統運行時啟用該構件,即處於系統迴圈的最後。它在系統工作狀態工作,執行返回軟體組態整合序列起始地址的功能。在系統初始化狀態時,完成標定資料和一般資料的擷取和儲存,並執行啟動系統時鐘和看門狗,以及返回組態序列起始地址等系統功能。介面參數僅有一個標識該構件的構件號0。

2.3 系統任務類軟體構件的設計

任務建立構件Task:一般的多任務作業系統運行之前,系統必須至少建立一個任務,一般是一個空閑任務,其他任務可以在程式啟動並執行過程中建立。但在本支撐平台的設計中,鑒於一個實際的嵌入式控制應用程式的任務數事先是可以確定的,因而設計了任務建立構件,可以利用該構件在應用程式的軟體整合過程中建立所需的任務。該構件的組態整合介面定義如下:

設計說明:每定義一個任務使用一次該構件。任務號是外指標,使用者可見,裡麵包含虛擬程式地址指標、任務優先順序等資訊;系統為每個任務分配了堆棧空間,由於任務的不同,可能對系統資源的需求也不同,為了節省整個系統的記憶體空間,使用者可以從組態整合介面直接指定任務堆棧的大小;為了跟蹤任務的已耗用時間和任務定時,在介面中設計了時間單位和時間長度2個參數,對任務的已耗用時間進行統計和定時計數。另外,為了方便任務切換,整個支撐平台設計了兩類堆棧,即系統堆棧和任務堆棧。因此在建立任務時,要根據所處的系統狀態,對每一個任務的任務堆棧進行初始化設定。

2.4 通訊和同步管理類軟體構件的設計

任務間的通訊有2種途徑:通過全程變數,或發訊息給另一個任務。使用全程變數時,必須保證每個任務或中斷服務程式獨享該變數。中斷服務中保證獨享的唯一辦法是關中斷。如果兩個任務共用某變數,各任務實現獨享該變數的辦法可以是關中斷再開中斷,或使用訊號量。在支撐平台的設計中,採用了訊號量方式進行系統的通訊和同步管理,包括P操作PSema和V操作VSema兩種軟體構件。

P操作軟體構件實現下列功能:在系統註冊狀態完成註冊表的填寫,向系統申請所需的系統資源;在系統參數初始化狀態完成訊號量資料結構的初始化;在系統工作狀態,如果訊號量大於零(即訊號量可用),則訊號量減1,否則表示訊號量不可用,進行任務懸掛操作和任務切換。其介面定義如下:

介面說明:訊號量地址是外指標,使用者可見,是訊號量資料結構的進入點;訊號量初值若設為1,則表示任務通訊,若為0,則表示任務同步。

V操作軟體構件只在系統工作狀態下工作,與P操作軟體構件公用一個資料結構。它首先將訊號量減1,然後判斷訊號量是否大於零。若大於零,表示公用資源可用,則使所給定任務就緒,並進行任務調度和切換。其介面如下:

由於採用構件化的設計方式,系統通訊和同步方式可以自由擴充。比如說可以在支撐平台添加郵箱或訊息佇列構件,採用哪種通訊和同步方式主要根據系統的設計需要而定。

3 整合式開發環境

本課題組採用微型訊息匯流排MMB嵌入式系統整合式開發環境(MMBIDE)應用程式程式設計語言引入IEC611 31-3標準,將結構化語句(Structured Text)描述程式設計語言作為自身嵌入式系統應用軟體的程式設計語言。這主要是考慮到MMB嵌入式系統應用於工業控制領域,要求能夠自身可以完成較複雜的控制運算,同時要求語句清晰、易懂,具有編程任務高度壓縮化的表達格式。採用交叉開發方法,在Windows主機平台上開發與之串連的目標機。開發環境包括自己的可裁剪的微核心即時多任務作業系統,主機上的編譯、調試、查看等工具,以及串口、網路與目標機的串連工具。其主要功能包括面向工業應用領域的應用程式基底本架構、可重用的構件庫、來源程式編譯器、組態下載使用者工具、參數下載使用者工具、參數即時監控介面等用於支撐應用程式開發的各類使用者工具,是使用者開發應用程式的重要基礎,強調知識成果的積累和重用,是平台開發模式思想的集中體現。

結 語

本軟體開發平台應用軟體構件技術主要解決下列問題:軟體構件的介面定義,提供軟體構件與系統以及軟體構件之間的互動機制,同時為軟體構件的設計和封裝提供依據。軟體構件的開發和整合,為軟體構件的設計和整合提供必要的開發工具。本文介紹了其中主要的系統級軟體構件的開發方法,為系統整合各種應用級軟體提供了總體架構,解決了控制系統應用軟體難維護、難繼承的問題,為控制類應用軟體的開發提供了依據。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.