如何學習嵌入式開發比較好?

1王亞坤


首先從瞭解嵌入式開始,嵌入式是什麼呢?嵌入式系統是一種專用的計算機系統,作為裝置或設備的一部分。國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。舉些例子,手機、電子時鐘、智能報警裝置、自動監控器、出租車計費器等等都屬於嵌入式系統。

從事嵌入式開發要掌握哪些技能?

需要:精通嵌入式Linux C語言編程、嵌入式Linux C語言數據結構、嵌入式Linux項目開發流程、嵌入式 Linux併發程序設計、嵌入式 Linux應用編程、嵌入式 Linux網絡編程、嵌入式數據庫開發;若是Android設備的應用開發,那就必須要了解java編程,Android應用編程。

需要學習的內容有哪些?

1、入式高級C語言

2、嵌入式設備及GUI開發

3、嵌入式Linux高級程序設計

4、Linux高級網絡程序設計

5、數據庫開發

6、C++面向對象高級語言程序設計

7、物聯網

8、CotexA53 Linux平臺驅動開發

對於嵌入式的前景和薪資大家可能都瞭解的很清楚了,那麼學習嵌入式什麼樣的方法更好呢?對於有基礎,有毅力也有天賦的同學,可以跟著大綱和視頻教程學習,但是沒有基礎又沒有毅力堅持下去的同學我建議還是參加培訓機構學習會比較好一些,因為培訓機構有專業的老師帶你學習,課堂氛圍好,學習更有熱情,我相信這樣的環境下更適合學員學習。

不管選擇什麼樣的方法,適合自己的才是重要的,想要快速的學習,一定不要自己閉門造車,多看多模仿,多跟有經驗的人去學,我相信這樣的學習方式才是更好的。更利於我們學習的。


杭州千鋒


隨著近幾年物聯網的深入發展,嵌入式系統在經歷了幾十年的發展歷程後,又進入了一個新的歷史發展階段,即從普遍低端應用進入到一個高、低端並行發展,並且不斷提升低端應用技術水平的時代,其標誌就是32位嵌入式系統的發展,比如:鼎易鴻基&萬酷電子的掃描模組就是一個典型。

嵌入式系統的大規模運用,在使用頻率上已經大大超過了個人計算機,人們已經擁有大大小小各種嵌入式技術的電子產品,小到手錶、MP3等微型數字化產品,大到車輛導航、家用電器等,嵌入式系統現今已在各行各業發揮著它的獨特作用。

嵌入式操作系統(EOS)是指用於嵌入式系統的操作系統。嵌入式操作系統是一種用途廣泛的系統軟件,通常包括與硬件的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等。嵌入式系統分為4層:硬件層、驅動層、操作系統和應用層。嵌入式操作系統負責嵌入式系統的全部軟、硬件資源的分配、任務調度、控制、協調併發活動。它必須體現其所在系統的特徵,能夠通過裝卸某些模塊來達到系統所要求的功能,是一種用途廣泛的系統軟件。

溫總理用經典的四個字“感知中國”全面描述和定義了物聯網產業的內涵。從字面上來理解,“感”既是信息採集(傳感器);“知”信息處理(運算、處理、控制、通信並通過互聯網進行信息傳遞和控制)。這些都是嵌入式系統的特徵表現。如果歸納一句話來理解總理“感知中國”的含義,既是通過嵌入式系統智能終端產品網絡化的過程可以實現感和知的目的。

【嵌入式操作系統的主要特點】

1.可裝卸性。開放性、可伸縮性的體系結構。

2.強實時性。EOS實時性一般較強,可用於各種設備控制當中。

3.統一的接口。提供各種設備驅動接口。

4.操作方便、簡單、提供友好的圖形GUI,圖形界面,追求易學易用。

5.提供強大的網絡功能,支持TCP/IP協議及其它協議,提供TCP/UDP/IP/PPP協議支持及統一的MAC訪問層接口,為各種移動計算設備預留接口。

6.強穩定性,弱交互性。嵌入式系統一旦開始運行就不需要用戶過多的干預,這就要負責系統管理的EOS具有較強的穩定性。嵌入式操作系統的用戶接口一般不提供操作命令,它通過系統的調用命令向用戶程序提供服務。

7.固化代碼。在嵌入式系統中,嵌入式操作系統和應用軟件被固化在嵌入式系統計算機的ROM中。輔助存儲器在嵌入式系統中很少使用,因此,嵌入式操作系統的文件管理功能應該能夠很容易地拆卸,而用各種內存文件系統。

8.更好的硬件適應性,也就是良好的移植性。

【嵌入式操作系統的種類】

國際上常見的嵌入式操作系統大約有40種左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。他們基本可以分為兩類,一類是面向控制、通信等領域的實時操作系統,如windriver公司的vxworks、isi的psos、qnx系統軟件公司的qnx、ati的nucleus等;另一類是面向消費電子產品的非實時操作系統,這類產品包括個人數字助理(pda)、移動電話、機頂盒、電子書、webphone等,系統有Microsoft的WinCE,3Com的Palm,以及Symbian和Google的Android等。

1.VxWorks

VxWorks操作系統是美國WindRiver公司於1983年設計開發的一種嵌入式實時操作系統(RTOS),是Tornado嵌入式開發環境的關鍵組成部分。良好的持續發展能力、高性能的內核以及友好的用戶開發環境,在嵌人式實時操作系統領域逐漸佔據一席之地。

VxWorks實時操作系統由400多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統;提供基於優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,內建符合POSIX(可移植操作系統接口)規範的內存管理,以及多處理器控制程序;並且具有簡明易懂的用戶接口,在核心方面甚至可以微縮到8 KB。

2.WindowsCE

Windows CE與Windows系列有較好的兼容性,無疑是Windows CE推廣的一大優勢。其中WinCE3.0是一種針對小容量、移動式、智能化、32位、瞭解設備的模塊化實時嵌入操作系統。對建立針對掌上設備、無線設備的動態應用程序服務提供了一種功能豐富的操作系統平臺,它能在多種處理器體系結構上運行,並且通常適用於那些對內存佔用空間具有一定限制的設備。它是從整體上為有限資源的平臺設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對從掌上電腦到專用的工業控制器的用戶電子設備進行定製。操作系統的基本內核需要至少200KB的ROM。由於嵌入式產品的體積、成本等方面有較嚴格的要求,所以處理器部分佔用空間應儘可能的小。系統的可用內存和外存數量也要受限制,而嵌入式操作系統就運行在有限的內存(一般在ROM或快閃存儲器)中,因此就對操作系統的規模、效率等提出了較高的要求。從技術角度上講,Windows CE作為嵌入式操作系統有很多的缺陷:沒有開放源代碼,使應用開發人員很難實現產品的定製;在效率、功耗方面的表現並不出色,而且和Windows一樣佔用過的系統內存,運用程序龐大;版權許可費也是廠商不得不考慮的因素。

3.嵌入式Linux

這是嵌入式操作系統的一個新成員,其最大的特點是源代碼公開並且遵循GPL協議,在近年來成為研究熱點,據IDG預測嵌入式Linux將佔未來兩年的嵌入式操作系統份額的50%。

Linux是開放源代碼,不存在黑箱技術,遍佈全球的眾多Linux愛好者優勢Linux開發者的強大技術支持;並且Linux的內核小、效率高,內核的更新速度很快,Linux是可以定製的,其系統內核最小隻有約134KB。Linux還是免費的OS,在價格上極具競爭力。因為它的開放性對於技術方面的要求不高只要懂Unix/Linux和C語言即可。隨著Linux在國內的普及,這類人才越來越多。所以軟件的開發和維護成本很低,優秀的網絡工能,這在Internet時代尤其重要,穩定是Linux本身具備的一個很大的優點,內核精悍,運行所需資源少,十分適合嵌入式應用。

支持的硬件數量龐大,嵌入式Linux和普通的Linux沒有本質區別,PC上用到的硬件嵌入式Linux幾乎都支持,而且各種硬件的驅動程序源代碼都可以得到,為用戶編寫自己專有硬件的驅動程序帶來了很大方便。

4.μC/OS一Ⅱ

μC/OS一Ⅱ是著名的源代碼公開的實時內核,是專為嵌入式應用設計的,可用於8位,16位和32位單片機或數字信號處理器(DSP)。它是在原版本μC /OS的基礎上做了重大改進與升級,並有了近十年的使用實踐,有許多成功應用該實時內核的實例。它的主要特點如下:

1)公開源代碼,容易就能把操作系統移植到各個不同的硬件平臺上;

2)可移植性,絕大部分源代碼是用C語言寫的,便於移植到其他微處理器上;

可固化;

3)可裁剪性,有選擇的使用需要的系統服務,以減少鬥所需的存儲空間;

4)佔先式,完全是佔先式的實時內核,即總是運行就緒條件下優先級最高的任務;

5)多任務,可管理64個任務,任務的優先級必須是不同的,不支持時間片輪轉調度法;

6)可確定性,函數調用與服務的執行時間具有其可確定性,不依賴於任務的多少;

7)實用性和可靠性,成功應用該實時內核的實例,是其實用性和可靠性的最好證據;

由於μC/OS一Ⅱ僅是一個實時內核,這就意味著它不像其他實時存在系統那樣提供給用戶的只是一些API函數接口,還有很多工作需要用戶自己去完成。

5.QNX

QNX是一種商用的類Unix實時操作系統,遵從POSIX規範,目標市場主要是嵌入式系統。QNX的應用範圍極廣,包含了控制保時捷跑車的音樂和媒體功能,核電站和美國陸軍無人駕駛Crusher坦克的控制系統,還有RIM公司的BlackBelly PlayBook平板電腦。QNX是一個分佈式、嵌入式、可規模擴展的實時操作系統。它遵循POSⅨ.1 (程序接口)和POSⅨ.2 (Shell和工具)、部分遵循POSⅨ.1b(實時擴展)。

QNX操作系統核心僅包含了CPU任務排程、進程間通訊、中斷重導向以及定時器等部份,而除此之外包含驅動程序、檔案系統堆疊協議以及使用者應用程序的所有程序都是屬於在使用者階段執行。QNX操作系統有個相當特殊的Proc階段,專門負責程序process的建立,以及存儲器管理等交集在系統微核心中的組件。基本上,QNX所有的組件都能透過消息傳遞這個函式來進行溝通,而具有良好定義的通訊機制,也能保障所有的組件都有完全獨立且被保護的儲存及執行空間。因此有問題的應用程序不會影響到其它組件的穩定性,發生問題的程序將會被自動終止並重新啟動。

與傳統的操作系統架構相較起來,微核心架構可以讓嵌入式系統獲得更為快速的平均回覆時間(MTTR),當硬件驅動程序失效,QNX可以在數毫秒之內,就對該驅動程序進行終止、回收資源並重新啟動的步驟,讓嵌入式設備可接近無停擺時間表現。

不過微核心RTOS的架構除了優點以外,由於其process間的訊息傳遞功能將會佔用存儲器頻寬,影響到校能表現,因此在實際應用上,就必須採用特殊的最佳化手段,以避免掉訊息傳遞功能所帶來的性能耗損。

6.、Nucleus Plus

這款嵌入式操作系統主要特徵就是輕薄短小,其架構上的延展性,可以讓Nucleus RTOS所佔的儲存空間壓縮到僅有13K左右,而且Nucleus Plus是一款不需授權費的操作系統,並且提供了原始碼。

Nucleus Plus本身只是Acclerated Technology公司完整解決方案裡面的其中一環,這個RTOS本身架構屬於先佔式多工設計,有超過95%的原始碼是用標準的ANSI C語言所編寫,因此可以非常有效率的移植到各種不同的平臺。Nucleus Plus在CISC架構處理器中,核心部份大約佔去20KB左右的儲存空間,而在RISC處理器上則是40KB左右,核心資料結構僅佔約1.5KB,由於其即時回應、先佔式多工、以及多process並行,並且開放原始碼等特性,在國防、工控、航天工業、鐵路、網絡、POS、自動化控制以及信息家電等領域廣泛受到應用。

就如同QNX一般,Nucleus Plus也可以根據目標產品的需求,來自行剪裁所需要的系統功能,達到精簡體積的目的。而配合相對應的編譯器(Borland c/c++、Microsoft c/c++)以及動態連結程序庫和各種底層驅動程序,在開發上擁有非常相當大的便利性。諸如飛思卡爾(Freescale)、羅技(Logitech)公司、美國NEC、SK Telecom等公司,都有采用Nucleus Plus嵌入式操作系統作為開發產品使用。

7.WinCE

WinCE是微軟公司嵌入式、移動計算平臺的基礎,它是一個開放的、可升級的32位嵌入式操作系統,是基於掌上型電腦類的電子設備操作系統,它是精簡的Windows 95,Win CE的圖形用戶界面相當出色。WinCE是從整體上為有限資源的平臺設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對於從掌上電腦到專用的工業控制器的用戶電子設備進行定製。操作系統的基本內核需要至少200K的ROM。

一般來說,一個WinCE系統包括四層結構:應用程序、WinCE內核映像、板級支持包(BSP)、硬件平臺。而基本軟件平臺則主要由WinCE系統內核映像(OS Image)和板卡支持包(BSP)兩部分組成。因為WinCE系統是一個軟硬件緊密結合的系統,因此即使CPU處理器相同,但是如果開發板上的外圍硬件不相同,這個時候還是需要修改BSP來完成一個新的BSP。因此換句話說,就是WinCE的移植過程主要是改寫BSP的過程。

8.Android

Android是一個包括操作系統、中間件以及一些重要應用程序的專門針對移動設備的層次結構的軟件集。Android作為一個完全開源的操作系統,是由操作系統Linux、中間件以及核心應用程序組成的軟件棧,通過Android SDK提供的API以及想用的開發工具,程序員可以很方便的開發Android平臺上的應用程序。其整個系統由應用程序,應用程序框架,應用程序庫,Android運行庫,Linux內核(Linux Kernel)五個部分組成。Android操作系統內置了一部分應用程序, 包括電子郵件客戶端、SMS程序、日曆、地圖、瀏覽器、通訊錄以及其他的程序,值得一提的是這些所有的程序都是用java編寫的。

移植的主要的工作是驅動,硬件抽象層的移植。為了更好地理解和調試系統,也應該適當地瞭解上層對硬件抽象層的調用情況。

9.嵌入式實時操作系統

在工業控制、 軍事設備、航空航天等領域對系統的響應時間有苛刻的要求,這就需要使用實時系統。當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致運行的嵌入式操作系統。故對嵌入式實時操作系統的理解應該建立在對嵌入式系統的理解之上加入對響應時間的要求。

10.FreeRTOS

FreeRTOS是一個迷你操作系統內核的小型嵌入式系統。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能等,可基本滿足較小系統的需要。FreeRTOS任務可選擇是否共享堆棧,並且沒有任務數限制,多個任務可以分配相同的優先權。相同優先級任務的輪轉調度,同時可設成可剝奪內核或不可剝奪內核。

FreeRTOS 的移植主要需要改寫如下三個文件。1.portmacro.h 2.port.c 3. port.asm

【嵌入式操作系統和通用計算機系統的區別】

嵌入式系統與通用計算機系統有著完全不同的技術要求和技術發展方向。通用計算機系統的技術要求是高速、海量的數值計算,其技術發展方向是總線速度的無限提升、存儲容量的無限擴大;而嵌入式計算機系統的技術要求則是智能化控制,技術發展方向是與對象系統密切相關的潛入性能、控制能力與控制的可靠性不斷提高。

嵌入式操作系統和通用計算機系統的主要區別包括以下幾點:

1、形式與類型:

通用計算機系統:實實在在的計算機。按其體系結構、運算速度和規模可分為大型機、中型機、小型機和微機;嵌入式操作系統:“看不見”的計算機,形式多樣,應用領域廣泛,按應用進行分類。

2、組成:

通用計算機系統:通用處理器、標準總線和外設、軟硬件相對獨立;嵌入式操作系統:面向特定應用的微處理器,總線和外設一般集成在處理器內部,軟硬件緊密結合。

3、系統資源:

通用計算機系統:系統資源充足,有豐富的編譯器、集成開發環境、調試器等;嵌入式操作系統:系統資源緊缺,沒有編譯器等相關開發工具。

4、開發方式:

通用計算機系統:開發平臺和運行平臺都是通用計算機;嵌入式操作系統:採用交叉編譯方式,開發平臺一般是通用計算機,運行平臺是嵌入式系統。

5、二次開發性:

通用計算機系統:應用程序可重新編程;嵌入式操作系統:一般不能重新編程開發。

6、發展目標:

通用計算機系統:編程功能電腦,普遍進入社會;嵌入式操作系統:變為專用電腦,實現“普及計算”。

學習嵌入式操作系統其實是一個十分枯燥且繁瑣的過程,你必須又覺得耐心以及超高的興趣,從最基礎的學起,從實踐出發。