嵌入式系統開發

嵌入式系統開發

對于除了電腦之外的所有電子設備上操作系統
嵌入式開發就是對于除了電腦之外的所有電子設備上操作系統的開發,開發對象有手機,掌上電腦,機電系統等。
    中文名:嵌入式系統開發 外文名: 所屬學科: 屬性:電腦開發

簡介

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

嵌入式系統是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,适用于應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。嵌入式系統和具體應用有機地結合在一起,它的升級換代也是和具體産品同步進行,因此嵌入式系統産品一旦進入市場,具有較長的生命周期。

嵌入式系統一般指非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,嵌入式開發領域,驅動人才非常缺乏。寫驅動必須掌握操作系統的内部工作原理,包括相關的硬件知識,即所謂的軟硬通吃,所以這方面的人才是一将難求。

開發流程

第一步:建立開發環境

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

第二步:配置開發主機

配置MINICOM,一般的參數為波特率115200 Baud/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,具體情況會随系統不同而不同。根文件系統在嵌入式系統中一般設為隻讀,需要使用mkcramfs genromfs等工具産生燒寫映像文件。

第六步:建立應用程序的FLASH磁盤分區

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

第七步:開發應用程序

可以放入根文件系統中,也可以放入YAFFS、JFFS2文件系統中,有的應用不使用根文件系統,直接将應用程序和内核設計在一起,這有點類似于μC/OS-II的方式。

第八步:燒寫内核

根文件系統和應用程序,發布産品。

相關詞條

相關搜索

其它詞條