在討論學習嵌入式之前,首先需要明確何為嵌入式,嵌入式即嵌入式系統,IEEE(美國電氣和電子工程師協會)對其定義是用于控制、監視或者輔助操作機器和設備的裝置,嵌入式是一種專用的計算機系統,一般指非PC系統,它包括硬件和軟件兩部分。硬件包括處理器/微處理器、存儲器及外設器件和I/O端口、圖形控制器等。軟件部分包括操作系統軟件和應用程序編程。
對于零基礎學習嵌入式的同學,建議可以看一下有關計算機操作系統工作原理以及計算機組成原理等方面的專業書籍。如果需要快速入門的同學,可以直接學習軟件基礎,比如C語言,匯編語言,熟悉linux操作系統。先對于進程、線程、任務調度、總線、I/O等基本概念及工作原理有一個初步的了解和掌握,這部分知識的準備對于后續更好地學習嵌入式Linux系統開發將會起到很好的幫助作用。
嵌入式系統分為硬件層、驅動層、操作系統層和應用層四個層次,關于硬件層,是整個嵌入式系統的根本,如果對于單片機及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統的硬件層走起來相對容易,硬件層也是驅動層的基礎;硬件層需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、C語言。
驅動層就比較難了,需要看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導致其它任務不能動行,嵌入式的驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。
操作系統層,對于操作系統層目前可能只能說是簡單的移植,操作系統是負責系統任務的調試、磁盤和文件的管理。
應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。需要掌握基礎算法,數據庫、基于嵌入式系統的網絡編程和基于某此應用層面的協議應用開發,如MQTT等。
基于以上的介紹,對應于嵌入式各個層次的技術要求也不同,嵌入式的第一階段建議大家學習Linux操作系統的使用,精通使用C/C++語言編程;第二階段 精通嵌入式Linux下的程序設計,了解ARM體系結構和編程,掌握bootloader和kernel的移植技能和嵌入式Linux開發技術,第三階段掌握嵌入式Linux驅動開發,掌握Qt應用開發、系統開發。
當然了,學習完理論,也需要結合實際的開發項目,并多加實踐,循序漸進。