嵌入式系統(tǒng)是硬件與軟件結(jié)合而構(gòu)成的一個專門的計算裝置,完成特定的功能或任務(wù)。它是一個大系統(tǒng)或重大電子設(shè)備中的一部分,工作在一個與外界發(fā)生交互并受到時間約束的環(huán)境中,在沒有人干預(yù)的情況下進(jìn)行實時控制。
目前,嵌入式技術(shù)在嵌入式應(yīng)用中占主導(dǎo)地位,主要涉及三種技術(shù):
嵌入式系統(tǒng)設(shè)計即軟件與硬件相協(xié)同驗證技術(shù);
與基于UML的實時軟件、實時操作系統(tǒng)應(yīng)用開發(fā)等密切相關(guān)的嵌入式軟件開發(fā)技術(shù);
目前嵌入式應(yīng)用亟待解決的嵌入式軟件測試技術(shù)。
上述工具的靈活應(yīng)用為嵌入式軟件開發(fā)提供了完整的解決方案。但我國目前嵌入式應(yīng)用的基礎(chǔ)和水平還達(dá)不到這個要求,國內(nèi)自主研發(fā)的產(chǎn)品還很少,甚至還是空白。因此,無論是對嵌入式軟件開發(fā)人員,還是對國內(nèi)廠商來說,任重道遠(yuǎn)。
系統(tǒng)設(shè)計:應(yīng)用要靈活
嵌入式系統(tǒng)的主要工作模式是響應(yīng)外部事件。它在軟件控制下通過硬件來高速地獲取數(shù)據(jù),并進(jìn)行處理,而后產(chǎn)生響應(yīng)動作。而實時特征是嵌入式系統(tǒng)的主要特征,并根據(jù)截止時間的要求,可將實時分為硬實時和軟實時。
硬件/軟件協(xié)同技術(shù) 嵌入式系統(tǒng)的設(shè)計與當(dāng)前的硬件所能提供的支持及軟件技術(shù)的發(fā)展緊密相連。應(yīng)用先進(jìn)的硬件設(shè)計和開發(fā)技術(shù),我們可以獲得所需的性能。另外,軟件的設(shè)計離不開硬件的支持,高性能、多功能的硬件允許我們在軟件開發(fā)和設(shè)計上采用好的方法,應(yīng)用好的語言,使用好的工具。
實時理論概念 嵌入式系統(tǒng)的軟件設(shè)計與一般的軟件設(shè)計有很大的不同,它涉及到更多的計算機(jī)理論和基于這些理論的算法以及有關(guān)的模型技術(shù)。實時設(shè)計在概念上除了通常的軟件設(shè)計概念外,有限狀態(tài)機(jī)、并發(fā)任務(wù)等概念對于實時嵌入式系統(tǒng)的設(shè)計相當(dāng)重要。
實時設(shè)計表示 實時嵌入式應(yīng)用的多樣性,是指實時嵌入式應(yīng)用的不同,所涉及到的問題也不同,所采用的設(shè)計方法和設(shè)計手段也不同,但從設(shè)計角度來決定實時設(shè)計中仍要涉及一些具體問題。
實時構(gòu)件 通過構(gòu)件組裝軟件這種方式,可以大大提高軟件的開發(fā)效率,保證軟件的質(zhì)量。特別是對于實時嵌入式軟件,涉及到大量的和時間相關(guān)的算法,如果將它們模塊化或構(gòu)件化,并按照特定的模式/定式和框架在軟件開發(fā)中重用它們,其意義不言而喻。另外,基于構(gòu)件進(jìn)行軟件開發(fā),還有利于軟件開發(fā)的自動化。
設(shè)計定式和框架 兩者都是通過收集成功的軟件開發(fā)策略來推動重用,其主要差別表現(xiàn)為框架的重點是在具體的設(shè)計、算法及應(yīng)用特定編程語言進(jìn)行實現(xiàn)的重用上,而定式的重點則是放在抽象設(shè)計和軟件小型結(jié)構(gòu)的重用上。顯然,應(yīng)用設(shè)計定式和框架技術(shù),能夠改進(jìn)軟件質(zhì)量,縮短軟件開發(fā)時間,也有利于軟件開發(fā)的自動化。
軟件開發(fā):實時是關(guān)鍵
嵌入式應(yīng)用軟件典型的開發(fā)方式是“宿主機(jī)/目標(biāo)機(jī)”方式,首先利用宿主機(jī)上豐富的資源、良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件,然后通過串口、網(wǎng)絡(luò)或其它接口將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上,并用交叉調(diào)試器在監(jiān)控程序或?qū)崟r操作系統(tǒng)的支持下進(jìn)行運行調(diào)試。最后,目標(biāo)機(jī)在特定的環(huán)境下運行。
實時編程及最小編程環(huán)境 運用軟件設(shè)計方法進(jìn)行實時嵌入式軟件的設(shè)計,應(yīng)用編程語言完成實時嵌入式軟件的實現(xiàn)。而應(yīng)用高級語言或?qū)崟r編程語言開發(fā)實時嵌入式軟件,最基本的要求是要有一個最小編程環(huán)境,如交叉編譯、交叉調(diào)試器、宿主機(jī)和目標(biāo)機(jī)間的通信工具、目標(biāo)代碼裝載工具、目標(biāo)機(jī)內(nèi)駐監(jiān)控程序或?qū)崟r操作系統(tǒng)等。
實時操作系統(tǒng) 實時操作系統(tǒng)是指能進(jìn)行實時處理的操作系統(tǒng),它分為兩類:一類是專為實時應(yīng)用設(shè)計的專用操作系統(tǒng),其核心是實時內(nèi)核;另一類則是在通用操作系統(tǒng)的基礎(chǔ)上增加實時功能,如實時Linux、實時UNIX等,其擴(kuò)展部分是實時執(zhí)行程序。
實時數(shù)據(jù)庫 在實時數(shù)據(jù)庫中,除了通常對邏輯要求一致以外,還有事務(wù)處理完成時間的約束及數(shù)據(jù)訪問和更新時間的約束等。為了滿足時間約束和結(jié)果可確定的基本需求,開發(fā)者不僅要對通常的調(diào)度方法和事物管理進(jìn)行重新設(shè)計,而且還要提出在通常數(shù)據(jù)庫系統(tǒng)中沒有考慮到或者在實時系統(tǒng)中要增加的新概念,以及對應(yīng)的新技術(shù)。
實時中間件 提高軟件生產(chǎn)率和軟件質(zhì)量的需求激發(fā)了人們使用中間件的愿望。中間件位于應(yīng)用和底層之間。它能夠使系統(tǒng)設(shè)計人員從部件位置、編程語言、OS平臺通信協(xié)議和互連以及硬件依賴中解放出來,從而大大地簡化了軟件的開發(fā)。
目前,分布式實時系統(tǒng)開發(fā)趨勢是:編程采用可重用部件,對整個分布式應(yīng)用部件采用遠(yuǎn)程方法調(diào)用,并在異構(gòu)環(huán)境下盡量定義標(biāo)準(zhǔn)的軟件底層基礎(chǔ),在系統(tǒng)中確保QoS的需求。
軟件測試:把好開發(fā)關(guān)
軟件測試在整個軟件開發(fā)過程中處于非常重要的地位,其測試費用占項目總費用的25%以上,對于嵌入式軟件則花費更大。嵌入式應(yīng)用軟件的測試同人們通常使用的傳統(tǒng)的軟件測試相比有較大的差別,除了要考慮和運用傳統(tǒng)的測試技術(shù)外,還要考慮與時間和硬件密切相關(guān)的測試技術(shù)運用,如:對外部事件響應(yīng)的測試問題。
軟件分析技術(shù) 實時嵌入式系統(tǒng)最大的特點是具有一組動態(tài)屬性,即中斷處理和上下文切換、響應(yīng)時間、數(shù)據(jù)傳輸率和吞吐量、資源分配和優(yōu)先級處理、任務(wù)同步和任務(wù)通信等。所有這些性能屬性可以很容易地說清楚,但要測試或驗證它們(特別是時間確認(rèn))是很困難的。因此,對實時嵌入式系統(tǒng)進(jìn)行分析需要建模和仿真,以及對數(shù)學(xué)工具的支持。
軟件測試技術(shù) 測試技術(shù),指的是軟件測試的專門途徑,以及提供能夠更加有效地運用這些途徑的特定技術(shù)。這些技術(shù)可分別用在軟件開發(fā)過程中的不同階段,如:開發(fā)方的內(nèi)部測試、第三方的驗證和確認(rèn)測試和維護(hù)中的修改和升級測試等。
測試策略主要針對軟件測試?yán)锏闹T多問題而言。對于測試,首先要建立一個好且實用的測試文檔標(biāo)準(zhǔn)和開發(fā)方及測試方的協(xié)作關(guān)系,然后明確測試需求和目的及測試過程,制訂測試計劃,最后進(jìn)行測試的開發(fā)、實施、分析和報告。
軟件調(diào)試技術(shù) 軟件調(diào)試是在軟件測試之后進(jìn)行,用以定位和排除錯誤。對于嵌入式應(yīng)用,無論是測試還是調(diào)試,有效的方法仍是借助硬件仿真的手段輔助軟件來進(jìn)行測試和調(diào)試。
仿真器一般是由硬件和軟件構(gòu)成。硬件提供低級的監(jiān)控、控制和保護(hù)功能,而在仿真器里的軟件提供狀態(tài)和控制功能以及與宿主機(jī)的通信。人們通過調(diào)試器用戶接口同仿真器的硬件和軟件打交道來控制和監(jiān)督微處理器的工作,從而定位或發(fā)現(xiàn)軟件的錯誤。
實際上,仿真器既可用來發(fā)現(xiàn)軟件錯誤,也可用來查找硬件錯誤。這就是仿真器和調(diào)試器的主要區(qū)別。
摘自《中國計算機(jī)報》