- 嵌入式系統設計與實踐:Linux篇
- 季江民
- 1461字
- 2020-04-03 09:21:43
1.6 嵌入式系統的開發流程
以Linux操作系統為例,論述嵌入式系統的開發流程。
1.6.1 建立開發環境
安裝操作系統與交叉編譯器,操作系統一般使用Redhat Linux,選擇定制安裝或全部安裝,通過網絡下載相應的GCC交叉編譯器進行安裝(比如,arm-1inux-gcc、arm-uclibc-gcc),或者安裝產品廠家提供的相關交叉編譯器。
1.6.2 配置開發主機的參數
配置MINICOM參數,MINICOM軟件的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。一般情況下的參數為波特率115200 Baud/s,數據位8位,停止位為1,無奇偶校驗,軟件硬件流控設為無。在Windows下的超級終端的配置也是這樣。配置網絡主要是配置NFS網絡文件系統,需要關閉防火墻以簡化嵌入式網絡調試環境設置過程。
1.6.3 建立引導裝載程序BOOTLOADER
從網絡上下載一些公開源代碼的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-Boot、RED-Boot等,根據具體芯片進行移植修改。有些芯片沒有內置引導裝載程序,比如三星的ARV17、ARM9系列芯片,這樣就需要編寫開發板上FLASH的燒寫程序,也可以在網上下載相應的燒寫程序,如Linux下的公開源代碼的J-FLASH程序。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行源代碼修改。這是讓系統可以正常運行的第一步。如果用戶購買了廠家的仿真器,則比較容易燒寫FLASH,雖然無法了解其中的核心技術,但對于需要迅速開發自己的應用的人來說可以極大提高開發速度。
1.6.4 下載已經移植好的Linux操作系統內核
如MCLiunx、ARM-Linux、PPC-Linux等,如果有專門針對所使用的CPU移植好的Linux操作系統那是再好不過,下載后再添加特定硬件的驅動程序,然后進行調試修改,對于帶MMU的CPU可以使用模塊方式調試驅動,而對于MCLiunx這樣的系統只能編譯內核進行調試。
1.6.5 建立根文件系統
可以從http://www.busy.box.net下載使用BUSYBOX軟件進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他的程序。由于默認的啟動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啟動腳本,它的存放位置位于/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile及自動掛裝文件系統的配置文件/etc/fstab等,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用mkcramfs genromfs等工具產生燒寫映像文件。
1.6.6 建立應用程序的FLASH磁盤分區
一般使用JFFS2或YAFFS文件系統,這需要在內核中提供這些文件系統的驅動。有的系統使用一個線性FLASH(NOR型)512KB~32MB,有的系統使用非線性FLASH(NAND型)8MB~512MB,有的系統兩種同時使用,需要根據應用規劃FLASH的分區方案。
1.6.7 開發應用程序
根據需要開發應用程序,把開發成功的應用程序可以放入根文件系統中,也可以放入YAFFS、JFFS2文件系統中,有的應用不使用根文件系統,直接將應用程序和內核設計在一起,這有點類似于μC/OS-II的方式。
1.6.8 燒寫內核、根文件系統和應用程序,發布產品。
如圖1.12所示,列出了嵌入式系統的開發流程。

圖1.12 嵌入式系統的開發流程
思考與實驗
一、思考題
1.什么是嵌入式系統?
2.嵌入式系統有哪些主要特點?
3.常用嵌入式處理器有哪些?
4.常用嵌入式操作系統有哪些?
5.嵌入式有哪些應用領域?
6.嵌入式開發流程如何?
二、判斷題
1. MCU指嵌入式微控制器。( )
2. DSP是專門用于信號處理方面的嵌入式微處理器。( )
3. SoC指的是嵌入式片上系統。( )
4. ARM是指Advanced RISC Machines Limited的英文縮寫。( )
三、選擇題
1.嵌入式系統的三個基本要素包含( )。
A.存儲性
B.嵌入性
C.通用性
D.高性能
2.在目前,下列( )屬于嵌入式計算機。
A.嵌入式DSP處理器
B.CS8900A
C.MMC
D.SD
3.通常基于ARM系統的Linux開發步驟中,如有以下操作:
①開發目標硬件系統:如選擇微處理器,FLASH及其他外設等;
②開發BOOTLOADER;
③開發一個根文件系統:如rootfs的制作;
④開發上層的應用程序;
⑤開發相關硬件的驅動程序:如LCD等;
⑥移植Linux內核;
⑦建立交叉編譯工具。
4.嵌入式系統開發按照上述7步來考慮,開發BOOTLOADER應該屬于( )步。
A.1
B.2
C.3
D.4
E.5
F.6
G.7