嵌入式系統開發

嵌入式系統開發

嵌入式開發就是對於除了電腦之外的所有電子設備上作業系統的開發,開發對象有手機,掌上電腦,機電系統等。

基本信息

簡介

嵌入式系統開發嵌入式開發就是對於除了電腦之外的所有電子設備上作業系統的開發,開發對象有手機掌上電腦,機電系統等。
嵌入式系統是以套用為中心,以計算機技術為基礎,並且軟硬體可裁剪,適用於套用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬體設備、嵌入式作業系統以及用 戶的應用程式等四個部分組成,用於實現對其他設備的控制、監視或管理等功能。嵌入式系統和具體套用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式系統產品一旦進 入市場,具有較長的生命周期。
嵌入式系統一般指非PC系統,它包括硬體和軟體兩部分。硬體包括處理器/微處理器存儲器及外設器件和I/O連線埠、圖形控制器等。軟體部分包括作業系統軟體(OS)(要求實時和多任務操作)和應用程式編程。有時設計人員把這兩種軟體組合在一起。套用程式控制著系統的運作和行為;而作業系統控制著應用程式編程與硬體的互動作用。

嵌入式計算機系統的特點

嵌入式計算機系統同通用型計算機系統相比具有以下特點:
1.嵌入式系統通常是面向特定套用的嵌入式CPU與通用型的最大不同就是嵌入式CPU大多工作在為特定用戶群設計的系統中,它通常都具有低功耗、體積小、集成度高等特點,能夠把通用CPU中許多由板卡完成的任務集成在晶片內部,從而有利於嵌入式系統設計趨於小型化,移動能力大大增強,跟網路的耦合也越來越緊密。
2.嵌入式系統是將先進的計算機技術、半導體技術和電子技術與各個行業的具體套用相結合後的產物。這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創新的知識集成系統。
3.嵌入式系統的硬體和軟體都必須高效率地設計,量體裁衣、去除冗餘,力爭在同樣的矽片面積上實現更高的性能,這樣才能在具體套用中對處理器的選擇更具有競爭力。
4.嵌入式系統和具體套用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式系統產品一旦進入市場,具有較長的生命周期。
5.為了提高執行速度和系統可靠性,嵌入式系統中的軟體一般都固化在存儲器晶片或單片機本身中,而不是存貯於磁碟等載體中。
6.嵌入式系統本身不具備自舉開發能力,即使設計完成以後用戶通常也是不能對其中的程式功能進行修改的,必須有一套開發工具和環境才能進行開發。

核心技術

1.處理器技術
處理器技術與實現系統功能的計算引擎結構有關,很多不可程式的數字系統也可以視為處理器,這些處理器的差別在於其面向特定功能的專用化程度,導致其設計指標與其它處理器不同。
(1)通用處理器
這類處理器可用於不同類型的套用,一個重要的特徵就是存儲程式,由於設計者不知道處理器將會運行何種運算,所以無法用數字電路建立程式。另一個特徵就是通用的數據路徑,為了處理各類不同的計算,數據路徑是通用的,其數據路徑一般有大量的暫存器以及一個或多個通用的算術邏輯單元。設計者只需要對處理器的存儲器編程來執行所需的功能,即設計相關的軟體。 在嵌入式系統中使用通用處理器具有設計指標上的一些優勢。提前上市時間和NRE成本較低,因為設計者只需編寫程式,而不需要做任何數字設計,靈活性高,功能的改變通過修改程式進行即可。與自行設計處理器相比,數量少時單位成本較低。
當然,這種方式也有一些設計指標上的缺陷,數量大時的單位成本相對較高,因為數量大時,自行設計的NRE成本分攤下來,可降低單位成本。同時,對於某些套用,性能可能很差。由於包含了非必要的處理器硬體,系統的體積和功 耗可能變大。
(2)單用途處理器
單用途處理器是設計用於執行特定程式的數字電路,也指協處理器、加速器、外設等。如JPEG編碼解碼器執行單一程式,壓縮或解壓視頻信息。嵌入式系統設計者可通過設計特定的數字電路來建立單用途的處理器。設計者也可以採用預先設計好的商品化的單用途處理器。
在嵌入式系統中使用單用途處理器,在指標上有一些優缺點。這些優缺點與通用處理器基本相反,性能可能更好,體積與功率可能較小,數量大時的單位成本可能較低,而設計時間與NRE成本可能較高,靈活性較差,數量小時的單位成本較高,對某些套用性能不如通用處理器。
(3)專用處理器
專用指令集處理器(ASIP)是一個可程式處理器,針對某 一特定類型的套用進行最最佳化。這類特定套用具有相同的特徵,如嵌入式控制、數位訊號處理等。在嵌入式系統中使用ASIP可以保證良好的性能、功率和大小的 情況下,提供更大的靈活性,但這類處理器仍需要昂貴的NRE成本建立處理器本身和編譯器,單片機數位訊號處理器是兩類套用廣泛的ASIP,數位訊號處理器是一種針對數位訊號進行常見運算的微處理器,而單片機是一種針對嵌入式控制套用進行最佳化的微處理器,通常控制套用中的常見外設,如串列通信外設、定時 器、計數器、脈寬調製器及數/模轉換器等都集成到了微處理器晶片上,從而使得產品的體積更小、成本更低。
2.IC技術
(1)全定製/VLSI
在全定製IC技術中,需要根據特定的嵌入式系統的數字實現來最佳化各層,設計人員從電晶體的版圖尺寸、位置、連線開始設計以達到晶片面積利用率高、速度快、功耗低的最最佳化性能。利用掩膜在製造廠生產實際晶片,全定製的IC設計也常稱為大規模積體電路設計,具有很高的NRE成本、很長的製造時間,適用於大量或對性能要求嚴格的套用。
(2)半定製ASIC
半定製ASIC是一種約束型設計方法,包括門陣列設計法和 標準單元設計法。它是在晶片製作好一些具有通用性的單元元件和元件組的半成品硬體,設計者僅需要考慮電路的邏輯功能和各功能模組之間的合理連線即可。這種設計方法靈活方便、性價比高,縮短了設計周期,提高了成品率。
(3)可程式ASIC
可程式器件中所有各層都已經存在,設計完成後,在實驗室里即可燒制出設計的晶片,不需要IC廠家參與,開發周期顯著縮短。 可程式ASIC具有較低的NRE成本,單位成本較高,功耗較大,速度較慢。
3.設計/驗證技術
嵌入式系統的設計技術主要包括硬體設計技術和軟體設計技術兩大類。其中,硬體設計領域的技術主要包括晶片級設計技術和電路板級設計技術兩個方面。
晶片級設計技術的核心是編譯/綜合、庫/IP、測試/驗證。編譯/綜合技術使設計者用抽象的方式描述所需的功能,並自動分析和插入實現細節。庫/IP技術將預先設計好的低抽象級實現用於高級。測試/驗證技術確保每級功能正確,減少各級之間反覆設計的成本。

基礎知識

一、軟體方面的知識:
1、嵌入式微處理器結構與套用:
或傳統的“微機原理接口”課程,嵌入式是軟硬體結合的技術,搞嵌入式系統的人應對ARM處理器工作原理和接口技術有充分了解,包括彙編指令系統。不了解處理器原理,就沒辦法寫出驅動程式。在嵌入式開發的一些關鍵部分,如Bootloader等,目前主要靠彙編寫程式。
2、嵌入式作業系統類課程:
從事嵌入式系統的人至少須掌握一個嵌入式作業系統(當然越多越好),目前最重要的RTOS主要包括:
(1)、傳統的經典RTOS:最主要的是Vxworks作業系統,以及其Tornado開發平台。Vxworks出現早,實時性很強,並且核心可極微,可靠性較高。特別在通信設備等實時性要求較高的系統中,有比較廣泛的套用。
(2)、嵌入式Linux作業系統:嵌入式Linux廣泛套用的原因當然是免費、開源、支持軟體多、支持者多,成本也低。
(3)、 Windows CE嵌入式作業系統:Windows CE是微軟的作業系統,目前也有很大的市場份額,特別是在PDA、手機等界面要求較高或者要求快速開發的場合。
3、嵌入式開發的其它相關軟體課程:
(1)、數字圖像壓縮技術:嵌入式最熱門的套用領域之一,要掌握MPEG編解碼算法和技術,如DVD、MP3、PDA、高畫質電視、機頂盒等都涉及MPEG高速解碼問題。
(2)、通信協定編程技術:大多數嵌入式設備都要連入區域網路或Internet,所以首先應掌握TCP/IP協定及其編程;另外,掌握無線通信協定及編程也是是很重要的。
(3)、網路與信息安全技術:如加密技術,數字證書CA等。
二、硬體方面的知識:
模擬電路、數字電路、計算機組成原理、微處理器結構、單片機等硬體課程是從事嵌入式開發要掌握的。
嵌入式本身就是從單片機發展過來的,現在的很多單片機都已經帶OS,嵌入式開發領域,驅動人才非常缺乏。寫驅動必須掌握作業系統的內部工作原理,包括相關的硬體知識,即所謂的軟硬通吃,所以這方面的人才是一將難求。

開發流程

第一步:建立開發環境

作業系統一般使用RedhatLinux,選擇定製安裝或全部安裝,通過網路下載相應的GCC交叉編譯器進行安裝(比如,arm-linux-gcc、arm-uclibc-gcc),或者安裝產品廠家提供的相關交叉編譯器;

第二步:配置開發主機

配置MINICOM,一般的參數為波特率115200Baud/s,數據位8位,停止位為1,9,無奇偶校驗,軟體硬體流控設為無。在Windows下的超級終端的配置也是這樣。MINICOM軟體的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。配置網路主要是配置NFS網路檔案系統,需要關閉防火牆,簡化嵌入式網路調試環境設定過程。

第三步:建立引導裝載程式BOOTLOADER

從網路上下載一些公開原始碼的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據具體晶片進行移植修改。有些晶片沒有內置引導裝載程式,比如,三星的ARV17、ARM9系列晶片,這樣就需要編寫開發板上FLASH的燒寫程式,可以在網上下載相應的燒寫程式,也有Linux下的公開原始碼的J-FLASH程式。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行原始碼修改。這是讓系統可以正常運行的第一步。如果用戶購買了廠家的仿真器比較容易燒寫FLASH,雖然無法了解其中的核心技術,但對於需要迅速開發自己的套用的人來說可以極大提高開發速度。

第四步:下載已經移植好的Linux作業系統

如MCLiunx、ARM-Linux、PPC-Linux等,如果有專門針對所使用的CPU移植好的Linux作業系統那是再好不過,下載後再添加特定硬體的驅動程式,然後進行調試修改,對於帶MMU的CPU可以使用模組方式調試驅動,而對於MCLiunx這樣的系統只能編譯核心進行調試。

第五步:建立根檔案系統

下載使用BUSYBOX軟體進行功能裁減,產生一個最基本的根檔案系統,再根據自己的套用需要添加其他的程式。由於默認的啟動腳本一般都不會符合套用的需要,所以就要修改根檔案系統中的啟動腳本,它的存放位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝檔案系統的配置檔案/etc/fstab,具體情況會隨系統不同而不同。根檔案系統在嵌入式系統中一般設為唯讀,需要使用mkcramfsgenromfs等工具產生燒寫映像檔案。

第六步:建立應用程式的FLASH磁碟分區

一般使用JFFS2或YAFFS檔案系統,這需要在核心中提供這些檔案系統的驅動,有的系統使用一個線性FLASH(NOR型)512KB~32MB,有的系統使用非線性FLASH(NAND型)8MB~512MB,有的兩個同時使用,需要根據套用規劃FLASH的分區方案。

第七步:開發應用程式

可以放入根檔案系統中,也可以放入YAFFS、JFFS2檔案系統中,有的套用不使用根檔案系統,直接將應用程式和核心設計在一起,這有點類似於μC/OS-II的方式。

第八步:燒寫核心

根檔案系統和應用程式,發布產品。

相關詞條

相關搜尋

熱門詞條