嵌入式系統開發的基本流程是什麼

cdfarsight發表於2021-04-12

嵌入式系統開發是對於除了電腦之外的所有電子裝置上作業系統的開發,開發物件有手機,掌上電腦,機電系統等,一般由嵌入式微處理器、外圍硬體裝置、嵌入式作業系統以及用 戶的應用程式等四個部分組成。

嵌入式系統是以應用為中心,以計算機技術為基礎,並且軟硬體可裁剪,適用於應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬體裝置、嵌入式作業系統以及用 戶的應用程式等四個部分組成,用於實現對其他裝置的控制、監視或管理等功能

嵌入式系統一般指非PC系統,它包括硬體和軟體兩部分。硬體包括處理器/微處理器、儲存器及外設器件和I/O埠、圖形控制器等。軟體部分包括作業系統軟體(OS)(要求實時和多工操作)和應用程式程式設計。有時設計人員把這兩種軟體組合在一起。應用程式控制著系統的運作和行為;而作業系統控制著應用程式程式設計與硬體的互動作用。

一、軟體方面的知識:

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

特點

編輯

嵌入式計算機系統同通用型計算機系統相比具有以下特點:

1.嵌入式系統通常是面向特定應用的嵌入式CPU與通用型的最大不同就是嵌入式CPU大多工作在為特定使用者群設計的系統中,它通常都具有低功耗、體積小、整合度高等特點,能夠把通用CPU中許多由板卡完成的任務整合在晶片內部,從而有利於嵌入式系統設計趨於小型化,移動能力大大增強,跟網路的耦合也越來越緊密。

2.嵌入式系統是將先進的計算機技術、半導體技術和電子技術與各個行業的具體應用相結合後的產物。這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創新的知識整合系統。

3.嵌入式系統的硬體和軟體都必須高效率地設計,量體裁衣、去除冗餘,力爭在同樣的矽片面積上實現更高的效能,這樣才能在具體應用中對處理器的選擇更具有競爭力。

4.嵌入式系統和具體應用有機地結合在一起,它的升級換代也是和具體產品同步進行,因此嵌入式系統產品一旦進入市場,具有較長的生命週期。

5.為了提高執行速度和系統可靠性,嵌入式系統中的軟體一般都固化在儲存器晶片或微控制器本身中,而不是存貯於磁碟等載體中。

6.嵌入式系統本身不具備自舉開發能力,即使設計完成以後使用者通常也是不能對其中的程式功能進行修改的,必須有一套開發工具和環境才能進行開發。

開發流程:

第一步:建立開發環境

作業系統一般使用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的方式。

第八步:燒寫核心

根檔案系統和應用程式,釋出產品

相關文章