
作為除PC端外的另一種系統,嵌入式系統應用領域極其廣泛,廣泛到單片機、PLC、FPGA+CPLD、ARM+Linux實際上都屬于嵌入式範疇,嵌入式主要内容包括linux系統,C語言開發,資料庫等。
什麼是嵌入式技術
嵌入式技術是以應用為中心,以計算機技術為基礎的系統技術,把軟體直接燒錄在硬體裡,而不是安裝在外部儲存媒體上。即在已有的硬體上移植作業系統,讓作業系統去管理軟硬體資源,使軟硬體耦合度降低,在作業系統之上做上層應用開發,在作業系統之下做底層開發。
嵌入式軟體
嵌入式使産品更加智能,跑更多的軟體。嵌入式軟體是結合作業系統做的開發,而非嵌入式軟體是裸機開發(沒有跑作業系統)。判斷是不是嵌入式産品,看産品中有沒有跑作業系統,在各行各業都有不同類型的作業系統,應用非常廣泛,但是其作用都為隔離軟硬體。
單片機開發
單片機開發是傳統開發,開發流程為先看原理圖,然後寫代碼,最後将代碼下載下傳到開發闆中,即由軟體和硬體兩大元素組成,熟悉硬體的工作原理再去寫軟體,将寫好的軟體燒錄到硬體中,由軟體去控制硬體工作(軟體即代碼,底層的開發闆即硬體)。
缺點:
- 首先軟體和硬體的耦合度高,軟體移植性差(适配平台能力差),運作效率低,功耗高;
- 在開發人員能力要求方面傳統開發工程師要軟硬兼顧,相對于團隊合作,其開發效率低,工程師精力有限,很難顧全局,使用者體驗感降低。
嵌入式開發
嵌入式開發是在軟體和硬體中間移植入作業系統。作業系統可以管理軟體資源和硬體資源,實作軟體和硬體之間的隔離,例如想要運作硬體中的攝像頭,先讓軟體向作業系統發出相應的指令,由作業系統去控制硬體,硬體将資料傳回給作業系統,作業系統再将資料傳回給軟體,這樣我們在開發軟體時就不需要去了解硬體的工作原理和構造,隻要作業系統不發生變化,硬體的改變就不會影響到軟體。
優點:軟體移植性好(适配平台能力強),開發人員能力劃分更清晰,作業系統實作了多任務機制、提供了豐富的網絡協定、提供了開源軟體和庫。
缺點:作業系統更新硬體成本會提高。
嵌入式開發技能要求
1)嵌入式上層應用軟體開發:
- 精通一門語言;
- 熟悉一款作業系統(會看說明書);
- 資料結構/算法;
2)嵌入式底層系統軟體開發:
- 精通C語言(所有的作業系統核心都是有C+彙編開發的);
- 了解作業系統的實作(會使用,會添加/修改功能);
- 熟悉硬體的工作原理(CPU:stm32+64位,SPI,IIC,藍牙,wifi物聯網,攝像頭);
- 熟悉彙編;
嵌入式各個方向
嵌入式(ARM+Linux)方向:
★ 高端智能硬體(平闆、手機、機頂盒)
★ 工業機器人
★ 物聯網(網關)
技能:
Ø C語言、資料結構
Ø 嵌入式Linux下檔案I/O、Linux并發程式設計你該這麼學、Linux網絡程式設計
Ø ARM體系結構及接口技術、嵌入式系統移植、嵌入式核心及驅動開發進階
嵌入式(FPGA+CPLD)方向:
★ 通信産品(基站、大型交換機、網關)
★ 軍工産品(飛彈、火箭)★ 視訊(視訊流、圖像處理)
技能:
Ø vhdl和verilog程式設計語言
Ø Altera FPGA設計
Ø Xilinx FPGA設計
嵌入式(單片機)方向:
★ 智能硬體(無人機、智能小家電)
★ 物聯網(無線傳輸、智能傳感器)技能:
Ø C語言、資料結構
Ø STM8/STM32/MSP430單片機開發
Ø Ucos/FreeRTOS嵌入式作業系統移植
Ø 電子電路設計
嵌入式(PLC)方向:
★ 各個方向知識體系
技能:
Ø 西門子/三菱/施耐德PLC程式開發
Ø 工業傳感器、私服系統、變頻器應用
Ø 工業總線通信協定