我的嵌入式之旅 — 認識嵌入式開發



一、嵌入式系統

定義:嵌入式系統是以應用爲中心、計算機技術爲基礎,軟、硬件可剪裁,適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

特點

1)  嵌入式系統具有應用針對性。

2)  嵌入式系統硬件一般對擴展能力要求不高。

3)  嵌入式系統一般採用專門針對嵌入式應用設計的中央處理器。

4)  嵌入式系統中操作系統可能有也可能沒有,且嵌入式操作系統與桌面計算機操作系統有較大差別。

5)  嵌入式系統一般有實時性要求。

6)  嵌入式系統一般有較高的成本控制要求。

7)  嵌入式系統軟件一般有固化的要求。

8)  嵌入式系統軟件一般採用交叉開發的模式。

9)  嵌入式系統在體積、功耗、可靠性、環境適應性上一般有特殊要求。

10) 嵌入式系統技術標準化程度不高。

二、嵌入式操作系統 

特點

1.微內核結構:一般來說,操作系統內核只提供基本的功能,如建立和管理進程、管理設備等。但是,一些桌面操作系統,如Windows等,將許多功能引入內核,操作系統的內核變得越來越大。內核變大使得佔用的資源增多,剪裁起來很麻煩。嵌入式操作系統採用微內核結構,內核只提供基本的功能,比如:任務的調度、任務之間的通信與同步、內存管理、時鐘管理等。其它的應用組件,比如網絡功能、文件系統等均工作在用戶態,以系統進程或函數調用的方式工作。因而系統都是可裁減的,用戶可以根據自己的需要選用相應的組件。

2.任務調度:任務的調度有三種方式:可搶佔式調度、不可搶佔式調度和時間片輪轉調度。不可搶佔式調度:一個任務一旦獲得CPU就獨佔CPU運行,除非由於某種原因,它決定放棄CPU的使用權;可搶佔式調度:基於任務優先級,當前正在運行的任務可以隨時讓位給優先級更高的處於就緒態的其它任務;時間片輪轉調度:當兩個或兩個以上任務有同樣的優先級,不同任務輪轉地使用CPU,直到系統分配的CPU時間片用完。目前,大多數嵌入式操作系統對不同優先級的任務採用基於優先級的搶佔式調度法,對相同優先級的任務則採用時間片輪轉調度法。

3.硬實時和軟實時:多數嵌入式系統對時間的要求較高,稱之爲實時系統。有兩種類型的實時系統:硬實時系統和軟實時系統。軟實時系統並不要求限定某一任務必須在一定的時間內完成,只要求各任務運行得越快越好;硬實時系統對系統響應時間有嚴格要求,一旦系統響應時間不能滿足,就可能會引起系統崩潰或致命的錯誤,一般在工業控制中應用較多。

4.內存管理:一些桌面操作系統使用了虛擬存儲器的概念。採用段式管理、頁式管理、或段頁式管理。但是,大多數嵌入式系統不使用虛存技術,對內存的訪問是直接的,使用物理地址;而且,大多數嵌入式操作系統對內存空間沒有保護,各個進程共享同一個運行空間。一個進程在執行前,系統必須爲它分配足夠的連續地址空間,然後全部載入主存儲器。由此可見,嵌入式系統的開發人員必須參與系統的內存管理,對軟件中的一些內存操作必須格外小心。

5.內核加載方式:嵌入式操作系統內核可以在Flash上直接運行,也可以加載到內存中運行。Flash的運行方式,是把內核的可執行映像燒寫到Flash上,系統啓動時從Flash的某個地址開始執行。這種方法實際上是很多嵌入式系統所採用的方法。內核加載方式是把內核的壓縮文件存放在Flash上,系統啓動時讀取壓縮文件在內存裏解壓,然後開始執行。這種方式相對複雜一些,但是運行速度可能更快,因爲RAM的存取速率要比Flash高。

主流RTOS
第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平臺。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks佔據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。


第二類、嵌入式Linux操作系統:Linux的前途除作爲服務器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟件多、呼擁者衆,這樣嵌入式產品成本會低。Linux本身不是一個爲嵌入式設計的操作系統,不是微內核的,並且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專爲嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前佔較大應用份額,可在ARM7上跑;另一類是跑在ARM 9上的,一般是將Linux 2.4.18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM 9上)。很多人預測,嵌入式Linux預計將佔嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II爲教學用實時操作系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但由於ucOS/II功能有限,實用用得較少,要學習就應學直接實用的,比如 uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟件,對加深操作系統的認識也有幫助,可謂一舉多得。目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。

 

第三類、 Windows CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及爲客戶裁減WinCE)。WinCE目前主要爲4.2版(.NET),開發平臺主要爲WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點 ,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用於PDA上(掌上電腦),另一個是MS SmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平臺。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁衝擊下,Palm和Symbian來日還能有多長?

三、嵌入式處理器分類

嵌入式微處理器(Micro Processor Unit,MPU )

嵌入式微控制器(Microcontroller Unit,MCU )

嵌入式DSP(Embedded Digital Signal Processor,EDSP )

嵌入式片上系統(System On Chip,SOC)

四、嵌入式開發

由於嵌入式系統的目標機資源受限,不可能在其上建立龐大、複雜的開發環境,因而其開發環境和目標運行環境相互分離。因此,嵌入式應用軟件的開發方式一般是,在宿主機(Host)上建立開發環境,進行應用程序編碼和交叉編譯,然後宿主機同目標機(Target)建立連接,將應用程序下載到目標機上進行交叉調試,經過調試和優化,最後將應用程序固化到目標機中實際運行。開發語言的選擇

不同於一般形式的軟件編程,嵌入式系統編程建立在特定的硬件平臺上,勢必要求其編程語言具備較強的硬件直接操作能力。無疑,彙編語言具備這樣的特質。但是,歸因於彙編語言開發過程的複雜性,它並不是嵌入式系統開發的一般選擇。而與之相比,C 語言--一種"高級的低級"語言,則成爲嵌入式系統開發的最佳選擇。據統計,在嵌入式系統設計中,最受歡迎的前3種編程語言分別是C(74.6%)、彙編(69.6%)和C++ (50.1%)。

嵌入式系統開發工具

編譯器:GNU編譯器
調試工具:GNU調試工具
集成開發環境(IDE)
繪圖入門工具
算法開發工具:UML/SDL工具庫
網絡/通信協議
配置管理工具
需求管理工具
DSP開發工具
器件驅動器開發工具
軟硬件協同驗證工具
Java工具
存儲器分析工具
軟件仿真/建模工具
Win CE工具
測試軟件事件跟蹤工具
內電路仿真器(ICE)
ROM仿真器
JTAG仿真器
邏輯分析器
示波器

嵌入式系統的調試

1.源程序模擬器方式

  源程序模擬器(Simulator)是在PC機上,通過軟件手段模擬執行爲某種嵌入式處理器編寫的源程序的測試工具。

  注意:模擬器的功能畢竟是以一種處理器模擬另一種處理器的運行,在指令執行時間、中斷響應、定時器等方面很有可能與實際處理器有相當大的差別。另外,它無法仿真嵌入式系統在應用系統中的實際執行情況。

   比如:ARM公司的ARMulator模擬器
2.監控器方式

    監控器(Monitor)調試方式需要目標機與宿主機協調。首先,在宿主機和目標機之間通過串口、以太口等建立物理連接,然後在宿主機上運行調試器,目標機運行監控程序和被調試程序,從而建立宿主機與目標機的邏輯連接。宿主機通過調試器與目標機的監控器建立通信連接,它們相互間的通信遵循遠程調試協議。比如ARM公司的Angel。
3.仿真器方式

    仿真器調試方式是在微處理器的內部嵌入額外的控制模塊。當特定的觸發條件滿足時,系統將進入某種特殊狀態。在這種狀態下,被調試的程序暫時停止運行,宿主機的調試器通過微處理器外部特設的通信口訪問各種寄存器、存儲器資源,並執行相應的調試指令。
    在宿主機的通信端口和目標板調試通信接口之間,通信接口的引腳信號可能存在差異,因此在這兩者之間往往可以通過一塊信號轉換電路板連接。
    一般高檔的微處理器都帶JTAG (Joint Test Action Group,聯合測試行動組)接口,它是一種邊界掃描標準,只需5根引腳就可以實現在線仿真的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章