如何提高定制嵌入式設(shè)備開發(fā)效率?
——
過去,嵌入式系統(tǒng)通常是由工程師自行利用匯編語言設(shè)計,在定制硬件上運行,不需任何通信技術(shù)或安全架構(gòu)。這些系統(tǒng)會像獨立設(shè)備一樣運行,在許多情況下甚至不用操作系統(tǒng)的支持。
事實上,這些系統(tǒng)只會運行一個專用的單任務(wù)或進(jìn)程,開發(fā)人員將負(fù)責(zé)系統(tǒng)的每個方面、系統(tǒng)與底層硬件的互動及用戶輸入和輸出(若有必要)。設(shè)備的每個方面都要由開發(fā)人員編碼。一般來說,應(yīng)用開發(fā)人員必須非常熟悉底層硬件,而且或許還曾經(jīng)參與硬件的設(shè)計。
隨著時間的推移,開發(fā)人員不再使用匯編語言自行設(shè)計操作系統(tǒng)程序,而是改用C/C++等高級語言或利用軟件庫開發(fā)字符串處理、文件I/O、圖形、視頻等常用軟件。
許多知名的軟件開發(fā)工具都提供軟件庫以協(xié)助應(yīng)用軟件開發(fā),我們可將這些軟件庫視為操作系統(tǒng)和應(yīng)用軟件間的中介層,但在許多情況下應(yīng)用開發(fā)人員仍需控制對象的生命周期、線程和內(nèi)存管理。
許多應(yīng)用開發(fā)軟件庫其實就是應(yīng)用軟件和底層操作系統(tǒng)間的中介層,而許多軟件庫還提供原代碼以方便設(shè)計人員了解軟件庫的工作方式,并通過檢查源代碼來確定軟件庫調(diào)用本地操作系統(tǒng)API的速度。
應(yīng)用開發(fā)軟件庫提供原代碼的另一優(yōu)點是設(shè)計人員可借此擴大軟件庫功能。只要將應(yīng)用開發(fā)和操作系統(tǒng)抽象模型往前推進(jìn)一步,我們就能得到 (多數(shù)情況下) 與操作系統(tǒng)和處理器無關(guān)的應(yīng)用開發(fā)模型,Java和.NET就是很好的例子。在這個模型里,應(yīng)用開發(fā)人員與底層操作系統(tǒng)的距離會更遠(yuǎn),對象生命周期是由應(yīng)用軟件的運行時間環(huán)境(JVM或.NET運行時間)、類別、對象、事件及與底層操作系統(tǒng)API無多大關(guān)系的方法處理的。從C/C++轉(zhuǎn)向管理應(yīng)用開發(fā)將帶來更多好處,這就像應(yīng)用開發(fā)人員從匯編語言轉(zhuǎn)到C/C++語言后,就能加快產(chǎn)品開發(fā)。
底層硬件的抽象化是將應(yīng)用軟件開發(fā)從匯編語言通過C/C++轉(zhuǎn)換到管理應(yīng)用開發(fā)環(huán)境的附帶效果之一。應(yīng)用開發(fā)人員多半不需知道硬件細(xì)節(jié),硬件抽象層則可搭配設(shè)備驅(qū)動程序?qū)?yīng)用軟件與實際硬件隔開。
但這與嵌入式操作系統(tǒng)的發(fā)展有什么關(guān)系呢?
嵌入式設(shè)備的開發(fā)人員可以選擇所需的設(shè)備開發(fā)工具和操作系統(tǒng)。但在選擇硬件、操作系統(tǒng)(如需要)和應(yīng)用開發(fā)工具時,需進(jìn)行一個平衡。相關(guān)因素可能很復(fù)雜,決策過程當(dāng)然是以商業(yè)和技術(shù)考慮為主,但最后多半仍然以時間、資源和成本為重點。
您的嵌入式系統(tǒng)價值在哪里?是運行設(shè)備的用戶界面、應(yīng)用軟件、程序或服務(wù),還是為設(shè)備傳送和接收數(shù)據(jù)的服務(wù)器?研發(fā)人員應(yīng)將時間用于增加產(chǎn)品價值的應(yīng)用軟件和技術(shù)上,但線程管理、內(nèi)存管理、網(wǎng)絡(luò)堆棧、媒體播放器、網(wǎng)絡(luò)瀏覽器和各種服務(wù)器技術(shù)該怎么辦?
這些技術(shù)通常是由操作系統(tǒng)提供,您的研發(fā)團隊是否能在數(shù)月內(nèi)開發(fā)出一套比市場上TCP/IP協(xié)議堆棧小5kb和快10%的TCP/IP協(xié)議堆棧?或是將時間用于更新操作系統(tǒng)的網(wǎng)絡(luò)服務(wù),以便符合最新規(guī)格?
問題在于讓您的研發(fā)團隊將時間用于編寫、開發(fā)、測試和維護操作系統(tǒng)層級的軟件組件是否是一種好的做法?
答案或許不是。那么,“發(fā)展嵌入式系統(tǒng)時,我要將時間和資源用在什么地方?”這個看似簡單的問題可以有很多答案。我們可將時間用于硬件方面,或許為您的嵌入式系統(tǒng)編寫硬件抽象層代碼(如果需要)以構(gòu)建操作系統(tǒng)基礎(chǔ)架構(gòu)代碼和其它低水平的支持代碼,或者您的團隊也會將時間用于高水平、定制的最終用戶體驗方面,并將您的產(chǎn)品特定的知識產(chǎn)權(quán)添加到現(xiàn)有的操作系統(tǒng)中。
希望您能看到應(yīng)用開發(fā)技術(shù)進(jìn)步和嵌入式系統(tǒng)設(shè)計與發(fā)展方向間的相似處。
有多種操作系統(tǒng)可以選擇。無論是自主開發(fā)的操作系統(tǒng)還是開源操作系統(tǒng)抑或是其他,您都要做出許多評估才能為嵌入式設(shè)備找出最合適的操作系統(tǒng)。
評估內(nèi)容包括程序大小、處理器支持、本地硬實時支持、硬件設(shè)備支持的范圍 (或參考硬件)、源代碼存取及是否有開發(fā)商和合作伙伴可以幫助您進(jìn)行嵌入式系統(tǒng)的開發(fā)。
上市時間越來越重要,加快上市時間的方法之一是將時間用于提高設(shè)備的附加價值部分。但操作系統(tǒng)怎么辦?嵌入式操作系統(tǒng)有不同的類型和大小,有些操作系統(tǒng)僅提供原代碼,研發(fā)人員必須先建立一套工具鏈,然后才開始發(fā)展設(shè)備;還有些操作系統(tǒng)則提供完整的操作系統(tǒng)鏡像文件,研發(fā)人員可直接開發(fā)應(yīng)用軟件。前者讓您將寶貴的人力和時間浪費在操作系統(tǒng)和工具鏈的建立及配置,后者才能加快設(shè)備的開發(fā)和上市時間。
讓我們分析兩種選擇,一是使用市場上銷售的操作系統(tǒng)和現(xiàn)成的參考電路板。這種做法的優(yōu)點是讓您得到操作系統(tǒng)的所有功能,只需把您的應(yīng)用、服務(wù)和驅(qū)動程序加在操作系統(tǒng)之上即可;缺點也正是您得到了所有功能,這表示操作系統(tǒng)會比所需龐大,其中包含許多您的嵌入式系統(tǒng)不會用到的功能,而且無法針對嵌入式系統(tǒng)應(yīng)用進(jìn)行定制。
第二種選擇是使用一個能夠進(jìn)行定制、滿足嵌入式設(shè)計需求的操作系統(tǒng)(可稱之為一種組件化的操作系統(tǒng))?;蛟S閃存引導(dǎo)能力、快速引導(dǎo)時間、支持多種處理器架構(gòu)、本地硬實時支持等對于您的設(shè)計很重要,除此外,還有許多其它理由讓功能完整的臺式操作系統(tǒng)或服務(wù)器市場專用的操作系統(tǒng)不適合您的嵌入式設(shè)備。
或許能夠提供設(shè)備相關(guān)功能的操作系統(tǒng)正是滿足各種嵌入式系統(tǒng)市場需求的理想選擇,Windows CE和Windows XP Embedded也許是組件化嵌入式操作系統(tǒng)的最好實例,它們可以通過所支持的處理器、硬件、實時、網(wǎng)絡(luò)和媒體技術(shù)彼此互補搭配。
定制不表示一定要花很多時間或克服許多困難才能完成操作系統(tǒng)配置以滿足設(shè)備需求。典型的Windows XP Embedded設(shè)計從概念到交貨通常僅需12~14周。這套組件化操作系統(tǒng)大約能分割為12000種軟件組件、9000個驅(qū)動程序及3000種系統(tǒng)功能。嵌入式系統(tǒng)開發(fā)人員可選擇嵌入式設(shè)備所需的個別組件或技術(shù),而不需安裝整套操作系統(tǒng)。
廣泛的硬件和軟件支持是使用Windows XP Embedded操作系統(tǒng)的優(yōu)點之一,只要操作系統(tǒng)鏡像文件包含適當(dāng)?shù)牟僮飨到y(tǒng)依賴性,任何能在Windows XP上運行的驅(qū)動程序就能在Windows XP Embedded上運行。就此而言,依賴性是開發(fā)人員必須考慮的重要問題之一。
您在建立嵌入式操作系統(tǒng)鏡像文件時或許已經(jīng)知道您的用戶界面、應(yīng)用軟件和服務(wù)都要依賴特定的操作系統(tǒng)功能,但增加這些功能和熟悉所有的操作依賴性卻需很長時間。Windows CE和Windows XP Embedded所提供的工具都包含許多操作系統(tǒng)功能(稱為組件),這些組件含有所需的依賴性信息。例如,假設(shè)您正在使用Windows CE,并想把80kb左右的HTTP Web Server加入操作系統(tǒng)。您只要從組件目錄把這個組件加入到工作區(qū)(workspace),該組件的依賴性信息也會自動地進(jìn)行添加。使用組件、依賴性和操作系統(tǒng)配置模板就能迅速完成嵌入式操作系統(tǒng)的配置和測試。
應(yīng)用開發(fā)人員可以通過使用合適的應(yīng)用開發(fā)工具和架構(gòu)來加速產(chǎn)品上市時間,也可以通過使用組件化的嵌入式操作系統(tǒng)加快產(chǎn)品的推出??梢宰龃送茢啵押线m的應(yīng)用開發(fā)工具和程序架構(gòu)以及組件化嵌入式操作系統(tǒng)融為一體,也許這是設(shè)計人員加快產(chǎn)品開發(fā)的一條最佳路徑。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
c++相關(guān)文章:c++教程
評論