摘 要:嵌入式軟件技術是一種常用的計算機技術,并且已經在社會經濟發展中的生產生活領域得到了十分普遍的應用。不論是航空航天、軍事國防,還是醫療衛生、電子通訊等,嵌入式軟件技術隨處可見。就目前嵌入式軟件的發展情況來看,其擁有速度快、軟件代碼規模小等優勢,在未來的智能化領域中擁有十分廣闊的發展前景。現文章主要針對嵌入式軟件的現狀與發展趨勢進行研究,以期充分發揮嵌入式軟件技術對生產生活的貢獻。
關鍵詞:嵌入式軟件;發展現狀;發展趨勢
在計算機技術快速發展的現代化社會中,單一的計算機設備已經難以滿足人們的生活與生產需求,人們開始對各種類型的嵌入式軟件提出了新的要求。在日常生活中,嵌入式軟件隨處可見。網絡電視、智能家電、汽車電子控制、全球定位導航系統、智能手機、智能游戲機等等都是應用嵌入式軟件的產品。人們的日常生活已經離不開嵌入式軟件技術,嵌入式軟件的發展方向將會成為未來生產生活的關鍵。因此,針對嵌入式軟件的現狀與發展趨勢進行研究對于嵌入式軟件技術的發展進步有著十分重要的實際意義。
1 嵌入式軟件
軟件是為了滿足使用需求而設計開發的程序、文件與相關技術。從分類的角度來看,軟件可以分為系統軟件與應用軟件,從應用范圍來分可以分為數據庫軟件、嵌入式軟件等。從計算理論來看,一般軟件可以看作是一組過程化的數學函數,函數輸入數據隱射輸出數據。而嵌入式軟件同樣也是數學函數,但是其于嵌入式軟件的主要作用并非轉化數據,而是與物理領域進行聯通。簡單的說,就是利用相關技術將操作系統或者其他開發軟件嵌入到硬件之中。
1.1 嵌入式軟件的分類
嵌入式操作系統。嵌入式操作系統EOS(Embedded Operating System)是一種運用十分普及的系統軟件。以往該操作系統更多的是被用于工業生產以及國防管理控制領域當中。嵌入式操作系統需要完成嵌入系統中所有的硬件、軟件的調度、調整、控制與協調工作。嵌入式操作系統必須要充分體現系統的特點,通過安裝與卸載模塊的操作來完成系統的功能。一般來說,嵌入式操作系統主要在商業運作中應用更為合適。20世紀80年代開始,商業化的嵌入式操作系統就得到繁榮的發展。目前,全球主要的嵌入式操作系統有Windows CE、Palm OS、Linux、VxWorks等等[1]。其中在我國得到了普及應用的軟件有WindRiver、Microsoft、QNX。相對于國外來說,我國嵌入式操作系統的發展起步時間較晚,與國外還存在一定的距離。國內該類型產品主要是在自主版權的Linux操作系統上實現的,使用較為普及的有紅旗Linux、東方Linux等。
嵌入式支撐軟件。嵌入式支撐軟件的功能是輔助軟件開發行為,為軟件開發提供一定的幫助與支持。嵌入式支撐軟件一般涵蓋數據庫、常用開發工具等。其中,數據庫是十分關鍵的。目前,嵌入式數據庫技術的應用已經十分普及。同時,伴隨著移動互聯網技術的成熟,人們對移動數據的需求與要求也逐漸提高。嵌入式數據庫技術已經在工業生產、軍事部門等得到了重視。而嵌入式移動數據庫則是用于輔助計算的數據庫管理系統。嵌入在移動設備中的數據庫系統牽涉到數據庫技術、分布式計算技術、通訊技術等不同技術領域,并且就當前發展現狀來看已經成為了一個研究氛圍濃厚,活躍進步的領域[2]。
嵌入式應用軟件。嵌入式應用軟件是針對某一特定領域而形成的,基于某一特定硬件平臺的軟件,其能夠實現用戶的與其目標。鑒于用戶任務在時間與其他細節上的要求,因此部分嵌入式應用軟件在應用過程中需要指定的嵌入式操作系統。嵌入式應用軟件相對于普通軟件來說有著十分顯著的區別,其不單單對精確性、穩定性、安全性等方面有著更高的要求,同時還要盡可能的進行優化處理,從而減少對系統資源的占用,降低硬件的投入成本。目前,市場上已經存在各種類型的嵌入式應用軟件,常用的嵌入式軟件有瀏覽器、辦公處理軟件、多媒體軟件、人機控制軟件等等。在嵌入式系統中應用軟件是最為活躍、最為積極的類型,每一款應用軟件都擁有其指定的背景,雖然規模較小,但是技術含量高,因此嵌入式應用軟件并沒有與操作系統與支撐軟件一樣被國外產品壟斷,而是擁有十分廣闊的發展前景。因此,嵌入式應用軟件是我國嵌入式軟件的絕對優勢領域。
1.2 嵌入式軟件開發的特點
相對于一般計算機軟件來說,嵌入式軟件開發存在一定的特殊性,主要體現在:第一,開發規模較小,難度較大。普通的嵌入式軟件規模相對較小,大部分都在若干MB以內。雖然軟件規模不大,但是開發難度卻較大。在桌面機上完成開發,在目標機上順利運行。嵌入式軟件開發需要涵蓋板級初始化程序、驅動程序、應用程序以及測試程度等等。通常都是牽涉到低層軟件的開發[3]?;谶@一需求,嵌入式軟件的開發難度較大,在開發過程中需要使用各種來寫的開發技術與開發工具來完成。第二,快速啟動,立即運行。在通電后若干秒內就需要進入正常的工作環境。所以大部分的嵌入式軟件往往都已經被實現固化帶NorFlash等快速啟動的主存當中,在通電后即可以立即運行?;蛘咧苯觿覰orFlash調入內存后直接進行運行。或者直接被存儲在計算機電子盤中,在通電后即可快速調入至RAM的運行當中。第三,實時性與可靠性要求高。嵌入式軟件不論當前系統內部狀態情況如何在遇到外部事件時需要快速做出反應。同時,還需要處理一異步并發事件的能力以及處理出錯以及自動復位的功能。使用容錯、出錯處理手段,在軟件運行出現錯誤或死機的時候可以自動恢復到原先的正常運行狀態。第四,程序一體化。嵌入式軟件是一種一體化程度,是基于應用程序與操作系統整合的程序,因此其開發過程中需要做到程序一體化。
1.3 嵌入式軟件的開發環境
在個人計算機上運行的程序的開發過程與運行環境大致相同。而嵌入式軟件則是在交叉的開發環境下進行的,主要目的在于讓軟件開發過程中更加安全、更加可靠,全面提升開發的效率與質量,降低軟件開發成本的難度與投入成本。嵌入式軟件的交叉開發環境即為用于編譯、鏈接、調試應用程序的代碼環境與開展運行應用程序的代碼環境是不一致的,分別處于不同的設備裝置上。其中,進行編譯、鏈接、調試環境的設備為宿主機,而進行應用程序代碼運行的設備為目標機。圖1位嵌入式軟件開發環境的示意圖。
從嵌入式軟件的開發手段來看,交叉開發環境主要是由宿主機與目標機一同構成的,其兩者之間是基于物理連接基礎而形成的邏輯連接。其中,宿主機主要是用于開發嵌入式系統的計算機,該計算機軟件資源十分豐富,不單單擁有十分強大的桌面操作系統以及人機交互體系,同時還擁有各種類型的開發工具,以便給編輯、鏈接、調試、測試等提供強力的支持。目標機主要是所開發的嵌入式系統,即為嵌入式軟件運行的工作環境,通常是不具備任何資源與功能的裸機。在嵌入式軟件開發過程中,目標機的功能在于接收以及執行宿主機發出的各項指令,例如讀取內存、寫入內存等。然后將最終定價結果發送反饋給宿主機,在旁配合宿主機開展的各項工作。宿主機與目標機之間存在著一定的物理連接,即為通過物理線路,經過串口與OCD的方式相連接。邏輯連接是指宿主機與目標機之間通過既定的通信協議所形成的通信連接[4]。在開發嵌入式軟件的過程中則必須要以物理連接與邏輯連接為基礎。
1.4 嵌入式軟件開發過程
(1)嵌入式軟件的形成
嵌入式軟件形成主要是在宿主機上進行的。軟件開發人員使用各類型工具來對應用程序開展編輯、鏈接等工作,以形成可以被調試或固化的程序。相對于普通軟件開發過程,嵌入式軟件開發較為特殊,其交叉編譯器在宿主機上編譯形成另外一種嵌入式微處理器的二進制程序。同時,交叉鏈接器會按照宿主機上的技術與手段來對目標程序程序的運行方式與內存定位進行選擇,調整相應的信息配置,并且模塊對象與庫文件中的模塊轉變成為目標程序。
(2)嵌入式軟件的調試過程
嵌入式軟件在調試過程中需要使用交叉調試器,該設備即為需要調試的程序以及調試的程序分別在不同設備上工作。調試器根據實際情況來使用某一種方式對目標機上的調式對象進行控制,并且對目標機的內存、寄存器以及調試程序對象進行核實與挑戰。在開發嵌入式軟件過程中,交叉調試器是使用最為頻繁的工具,往往會占據軟件開發時間30%-50%。因此,交叉調試器的使用功能與效率將會直接影響到嵌入式軟件技術的開發的周期以及市場效應。
(3)嵌入式軟件的固化運行
嵌入式軟件在完成調試后,程序代碼需要完全被拷貝紙目標機中的非易失性存儲器當中,并且在物理硬件環境上開展運行工作。這一過程即為嵌入式軟件的固化處理。因此,計算機系統啟動會將數據遷移至計算機的RAM當中,程序代碼將在ROM、Flash Memory 中運行。然后固化程序將會建立Boot模塊。在真實的物理目標環境中使得應用程序開展工作,實現對計算機中央處理器環境的初始化。當用戶打開目標機時,該應用程序即會被自動嵌入運行。
1.5 嵌入式軟件的主要開發技術
(1)交叉開發技術
相對于其他通用軟件開發來說,嵌入式軟件并不存在自主開發的能力,在嵌入式軟件開發過程中需要宿主機與目標機相互分配任務。宿主機的主要任務是開展編譯、鏈接、定址等過程,而目標機則是嵌入式軟件實際運行的平臺。首先,需要將應用程序轉變成為可以在目標機上開展工作的二進制代碼。這一整體過程需要開展編譯、鏈接以及定址。其中編譯是交由交叉編譯器來實現。在編譯過程中所形成的目標文件將會被鏈接成為指定的目標文件,這一過程即為鏈接過程。而定址則是將物理存儲器地質指定給目標文件相對偏移處。這一過程形成的文件就是能夠在嵌入式平臺中工作的二進制文件[5]。
(2)IP構件庫技術
構件技術,即為組件技術。其能夠有效改善軟件威脅,使得軟件工廠化生產起到一定的積極作用。因此,IP構件庫技術在嵌入式軟件開發中的應用已經越來越普遍。嵌入式系統實現的最佳形式是單一的芯片系統(SOC,SystemonChip),而單一芯片系統的核心就是即為IP核(Intelleetual Poperty KernelS)。其中,IP核包括硬件核、軟件核以及固件核。其中,硬件核即為MPU核或DSP核,軟件核則為將單一芯片系統所要求的功能軟件等構件標準API方式與IP核構件形式調制成為可以執行的代碼單元,推動SOC的嵌入式系統的開發。當前很多嵌入式軟件生產廠家已經將成熟RTOS內核以及功能擴展件通過IP核構件的形式賣出??梢钥闯?,正在不斷發展成熟的IP構件軟件技術在未來的發展過程中將會為中小型高技術的軟件公司提供發展空間。
1.6 嵌入式軟件的應用
伴隨著嵌入式技術的進步與成熟,嵌入式系統產品正在普及應用至各個行業當中,嵌入式軟件的開發與應用面臨著重大的發展給予。目前,嵌入式軟件在移動終端、互聯網、通訊設備、汽車電子、工業生產等領域發揮著不可或缺的重要作用。嵌入式軟件在在消費電子領域中的數字電視、掌上電腦、數碼相機、視頻電話等其他家用電器運用廣泛。尤其是在數字電視市場中,我國上千萬用戶的有線電視都是通過嵌入式軟件來實現的;在通信領域中,嵌入式軟件在移動終端、電話交換系統、電纜系統、全球定位系統等領域運用廣泛;在工業生產領域中,嵌入式軟件在數控機床、智能儀器儀表、污水處理系統、電力傳輸系統、石油制造行業、建筑工程技術、計算機輔助制造系統等領域中運用廣泛;在金融商業行業中的自動柜員機、信用卡系統、售貨端系統等方面中運用廣泛;在交通行業中的運輸系統、檢票系統、行李檢查系統、汽車電子、交通監控系統等方面運用廣泛[6]。在上述眾多嵌入式軟件運用的領域來看,終端是其運用最為廣泛的領域,占據了嵌入式軟件應用的50%以上。尤其是在4G時代,移動終端與智能終端的成熟發展給嵌入式軟件帶來了十分光明的前景。另外,移動設備與智能設備中很多基層功能都是通過嵌入式應用軟件來完成的。例如,常用的多媒體、詞典、計算器等等。
2 嵌入式軟件技術的發展趨勢
伴隨著計算機技術與電子技術的成熟發展,電子設備之間的差異性越來越低,怎樣滿足市場需求,使得自己的產品在市場競爭中突圍而出成為了電子設備生產企業以及嵌入式系統設計面對的重大問題。軟件差異化的優勢已經逐漸凸顯,傳統3C行業(Communication, Consumer Electronics, Computer; 通信、消費電子、計算機)、工業生產領域、汽車生產行業、醫療電子商業、通信行業等都已經普及使用了嵌入式軟件技術??梢钥闯?,新的一輪嵌入式軟件技術應用熱潮已經席卷而來。
2.1 傳統行業應用將繼續保持主流
從上文的論述已經得知,嵌入式軟件技術即為嵌入硬件中的操作系統以及開發個工具軟件,其在產業的中的關系直接為芯片設計與制造——嵌入式系統軟件——嵌入式設備的開發與制造。其中,嵌入式系統是一種可以獨立執行操作的計算機系統,其涵蓋了微處理器、定時器、傳感器等一系列元件與芯片,與已經存在于存儲器中的微型操作系統、控制應用軟件組合而成,能夠同時實現實時控制管理、數據處理計算等自動化工作。嵌入式系統始終圍繞著應用,將微電子技術、計算機技術、控制技術作為基礎,使得軟件硬件一同協同整合,并且軟件與硬件能夠實時調整,以滿足系統對投入成本、使用功能的需求。最為簡易的嵌入式系統僅僅只能夠完成單一的控制功能,在其中唯一的ROM中實現單一的控制程序,不具備微型操作系統。復雜的嵌入式系統。其中包括個人數字助理、手持電腦等,則可以與個人計算機實現同樣的功能[7]。實際上嵌入式系統與個人計算機本質區別在于微型操作系統以及應用軟件嵌入在ROM、RAM存儲器當中,并不是存儲在磁盤的存儲載體中。而眾多復雜式的系統則是由數個微小嵌入式系統構成的。作為嵌入式軟件應用最為普遍的領域,3C與工業生產已經離不開嵌入式軟件。在選擇嵌入式系統硬件的過程中則需要針對實際情況,根據不同的應用任務,充分考慮到成本、體積、可靠性、處理效率等方面。嵌入式系統的關鍵核心是應用軟件以及系統軟件。然而由于存儲空間不足,因此對軟件代碼可靠、安全、緊湊有著較高的要求。值得注意的是,嵌入式多媒體處理軟件在3C終端產品中的應用已經相對普及,例如智能手機、路由器、移動游戲設備等,這些常見的終端產品都能夠通過連接網絡來實現語音與視頻通訊,而嵌入式多媒體處理軟件則可以顯著優化網絡狀態,避免網絡出現丟包、延時、抖動等情況,以便讓用戶獲得更高質量的在線服務。對于嵌入式軟件來說,高級用戶界面與交互功能正在快速發展,在未來的發展中伴隨著智能家庭電器的普及以及便攜式設備的發展,嵌入式軟件將會給用戶帶來更加新奇、更加豐富的體驗。同時,嵌入式軟件技術為了滿足人們的個性化需求,還會朝著人工智能技術的方向發展。人工智能技術與嵌入式軟件相結合,可以深入的實現人機交互過程,使得嵌入式軟件可以得到更加廣泛的應用。智能儀表實現自動化、自動化溫度控制、自動化壓力控制等等都將為人類的進步發展做出貢獻。
2.2 汽車應用擁有巨大的發展潛力
在汽車行業與電子工業持續發展的現代社會,電子技術在汽車行業的應用愈加廣泛,現代的汽車行業已經邁入計算機控制時代。汽車電子可以實現發動機控制、底盤應用等各項功能。在汽車電子逐漸朝向網絡化、智能化、人性化趨勢發展的過程中,對相關控制軟件的需求也必然會有所增加,并且有需要進一步進行計算機聯網,需要應用各種類型的嵌入式軟件,并且開發設計出能夠通用的高水平語言,以滿足不同硬件的控制需求。嵌入式軟件作為一種可以移植的應用技術,在未來的發展過程中必然將在汽車行業應用上發揮著不可替代的作用。在電子設備市場處于爆炸式增長的背景下,汽車電子產業僅僅只是一個細分市場。在應用嵌入式軟件的情況,汽車必然將朝著智能化發展,從當前的實現與手機同步訪問發展到手機被置入汽車系統中,以獲取更強大的計算能力與顯示屏幕[8]。
2.3 為醫療電子商業錦上添花
在人們生活質量不斷提升的現代化社會,醫療電子產品的市場正在不斷擴大,特別是對于計算機斷層掃描、超聲波診斷儀器、磁共振儀器等醫療影像設備的需求正在快速增加。相對于同樣的高端產品來說,嵌入式軟件擁有獨特的優勢,其硬件的低功耗以及高效處理能力能夠為推廣產品有著十分重要的積極作用。相對于軟件系統來說,嵌入式軟件不單單可以滿足需求,同時還能夠提供更佳的實施方案。在未來若干年的發展過程中,嵌入式軟件必然在醫療電子領域有著更加深入的應用[9]。面對便攜式、智能式醫療電子設備帶來的全新發展機遇,全球電子醫療廠商都加大了研究開發的力度,積極面對半導體技術帶來的挑戰與發展機遇,而軟件供應商則相應的推出了各類型的產品,以支持半導體廠商的技術,使得嵌入式軟件支持的產品能夠快速的面向市場。醫療行業在朝向電子技術方向發展過程中需要更加智能、更加可靠的系統提供支持。其中,微軟Windows Embedded系列操作系統如Windows Embedded CE和Windows XP Embedded,在工具中提供了安全穩定的架構、行業標準的支持、完善穩定的網絡支持等,為醫療行業電子設備的發展掃除障礙。在未來醫療發展領域中,具有連接選項功能的,更加完善、更加智能的醫療設備將會持續保持增長狀態,醫療設備制造廠商將可以使用Windows Embedded技術來開發醫療設備,其中包括血糖儀、患者監護設備、超聲波設備、遠程診斷、本地診斷設備等。
2.4 嵌入式軟件發展面臨挑戰和機遇
當前嵌入式軟件技術正在面臨著不可規避的挑戰,主要集中在產品的功能要求越來越多,越來越復雜,開發周期越來越短。MCU馬上就朝著32位轉移,工程師要面臨著操作系統編程的全新挑戰。嵌入式微處理器持續處于升級優化狀態中,面臨著多核、虛擬技術的帶來的挑戰。嵌入式操作系統、JAVA語言、中間件、嵌入式操作系統等技術對嵌入式軟件的開發、測試與管理都帶來了巨大的挑戰。一般來說,一個嵌入式系統設備同時通過嵌入式計算機系統與執行裝置而構成的,嵌入式計算機系統作為嵌入式系統的核心的架構包括硬件層、中間層、系統軟件層以及應用軟件層。被控制對象能夠直接接收到嵌入式計算機系統所發出的指令,執行相關的操作與任務。執行裝置的設計可以進行簡單化處理,例如智能手機中的微小型點擊,在手機處于震動狀態時打開;執行裝置的設計也可以進行復雜化處理,例如SONY的智能機器狗上集成組合了多個微、小型的控制點擊與傳感器,能夠執行傳達的各種指令,完成各種動作[10]。
軟件測試也是當前嵌入式軟件技術面臨的重大問題之一。當前國際上的嵌入式軟件技術及其相關產品相對于國內技術與產品的穩定性有著十分明顯的優勢。造成這一差距的重要原因之一就是我國對嵌入式軟件測試工作不夠重視。我國對軟件測試的重視程度,軟件測試工作人員的素質、軟件測試工作的科學化管理都是導致產品生產不穩定,使用出現問題的重要原因,有很多BUG往往在投入商業使用之后頻繁出現。
就目前來看,嵌入式軟件技術必然存在一些難以跨越的鴻溝,但是面對技術難題,嵌入式軟件技術開發人員的綜合素質也是十分關鍵的。目前,在嵌入式軟件開發過程中往往存在過于樂觀的情況,經常制定一些不切實際的項目管理進度表,對軟件開發工程師要求較高,對項目開發的難度進行了錯誤的評估。這種種因素都會導致項目失敗。
3 結束語
在嵌入式產業不斷成熟發展的背景下,嵌入式軟件技術也必然會朝著無線網絡技術、智能化的趨勢發展,成為我國計算機軟件產業中不可或缺的重要領域,并且廣泛的運用在日常生產生活領域中,為改善人民生活,提升工業生產效率,推動我國經濟發展做出更多的貢獻。
參考文獻
[1]羅剛,郭兵,沈艷.源程序級和算法級嵌入式軟件功耗特性的分析與優化方法研究[J].計算機學報,2009(9):1869-1875.
[2]殷永峰,鄭本燾,陸民燕.基于UML實時擴展的嵌入式軟件測試用例生成技術[J].系統工程與電子技術,2011(3):694-699.
[3]宋文,于林宇,劉軍.通用嵌入式軟件測試環境在武器裝備軟件測試中的應用[J].測控技術,2005(10):65-68.
[4]肖健宇,張德運,陳海詮.基于UML狀態機與B方法的高可信嵌入式軟件開發[J].計算機工程,2006(8):64-66.
[5]Rodrigo Pastl Pontes , Paulo Claudino Véras, Ana Maria Ambrosio.Contributions of model checking and CoFI methodology to the development of space embedded software[J].Empirical Software Engineering,2014,19(1):39-68S.
[6]王艷娜.自動售票機嵌入式軟件可復用測試框架的研究與實現[J].上海電力學院學報,2007(4):363-366+370.
[7]楊芳,賀紅衛,謝鵬.嵌入式軟件目標碼仿真測試平臺的研究與設計[J].計算機工程與設計,2009(19):4364-4367.
[8]Jani Mets?覿, Shahar Maoz, Mika Katara.Using aspects for testing of embedded software: experiences from two industrial case studies[J].Software Quality Journal,2014,22(2):185-213.
[9]黃百喬,賴婧,張虹.基于IPO功能分解的嵌入式軟件故障樹分層構建方法[J].沈陽工業大學學報,2013(2):204-211.
[10]王恒,王 ,李敏.一種高可靠的嵌入式軟件遠程自更新機制的研究與實現[J].工業控制計算機,2007(9):39-40+43.
作者簡介:張琦(1992-),男,漢族,山東濱州,曲阜師范大學信息科學與工程學院2013級本科生在讀,研究方向:軟件工程。