-
1 # 華清遠見成都中心
-
2 # 和不同
可以說入門容易,精通難。
嵌入式系統的發展大致可以歸為兩個方向:
從PC環境開始,逐步精簡
從微控制器開始,逐步增強
學習也可以從這兩邊開始。無論PC還是微控制器,都較容易找到好用的開發環境。
從微控制器開始,因為板級速度低,學嵌入式硬體會比較容易;
從PC開始,常見的是各種ARM Linux環境。相對來說,軟體方便,硬體較難。
通常來說,C語言在這一範圍不可替代,所以C語言一定要學好。
嵌入式系統範圍很大,就看你對哪方面更感興趣,可以選擇相應的方向和路線。
-
3 # 崔立功名師工作室
客觀講 難不難是一個相對的問題,取決於你自己的電子技術硬體水平,C語言程式設計水平還有你的悟性!
建議首先從簡單的51微控制器程式設計學起,買一套合適的開放板,跟著教程一步一步學,把每一句程式都弄懂,不明白的可以百度,到論壇提問等方式解決!單個專案熟悉後可以嘗試將多個專案進行綜合,例如用按鍵控制數碼管,電機等.你會發現難度會增加,這也是你進步的過程.學完教程以後,可以試著做一件完整的產品,例如可以做一個能定鬧鐘、調時間,顯示農曆和陽曆日期的時鐘,或者是根據超聲波探測距離控制電機等.從電路設計到焊接或者pcb設計再焊接,到程式設計除錯,功能實現. 輸入輸出 控制都有了,你對產品的研發過程基本熟悉了,剩下的就是對新的晶片的應用和新電路的設計了。這個過程就比較漫長。
51微控制器熟悉以後,可以學習stm32,過程也類似於51微控制器的過程.學海無涯,這是你開始進入真正嵌入式技術的學習.只有堅持才能夠達到勝利的彼岸. 嵌入式產品不是用的晶片越高階越好,適合產品的才是最好的.希望大家有所收穫.
-
4 # 小X的日常
學嵌入式有細分,包括微控制器程式設計、linux驅動程式設計、linux應用程式設計、Android應用程式設計等方向。首先需要明確往那個方面學習發展。
微控制器學習路線從微控制器入門是比較好走的路,學習路線也很明確,從C語言開始打基礎,51微控制器到ARM核心微控制器是最通常的做法,很多前輩都摸索出了不錯的方法,網上教程很多。
C語言多數大學大一時期就會教授,上手較容易,程式語法簡單。對嵌入式比較關鍵的是學好運算子表達的含義尤其是位運算,還有函式封裝使用,指標的應用,結構體等使用者自定義結構的使用,連結串列其實在linux或Android平臺等使用動態記憶體分配的場景較好用,ARM核的“低端”晶片中當然也會用,學習資料結構或程式程式設計思想中有較為重要的地位,實際開發依據需要再學習也可以。51微控制器,歷史悠久,資料豐富。很多國內廠商會研發自己的51核心微控制器,大同小異的操作方式,比較友好的是中文資料眾多,廠商提供的絕大多數是中文文件。郭天祥的51教程比較經典,網上可以搜到。從51微控制器可以說把微控制器家族的多數外設都接觸了一遍,是入門極好的途徑。ARM核心微控制器在國內應用場景眾多,物聯網中廣泛使用,代表廠商有NXP,ST,還有Microchip、TI等有著不錯DSP處理能力的晶片廠商提供不錯的產品。從好入手出發,TI的MSP430系列和ST的M32或M8都是不錯的選擇,教程眾多。這方面的微控制器比51的外設和效能豐富了不止一點點不論是51還是ARM核心微控制器,一定要實踐,看教程再多不如動手敲出來看現象,再思考。買有教程配套的開發板是最合適的,如上圖這種開發板大把的。教程的例項可以直接對應開發板的IO引腳,讓學習者更方便看實驗結果。從現象出發看教程講解,試著自己改動一些內容,看現象的變化再思考怎麼發生的,這樣參與感強,容易激勵自己繼續學下去。一切的一切前提需要先學習C/C++語言,否則程式都無法看懂,別的不用扯~~linux驅動學習路線學linux驅動最好有微控制器的外設和基本通訊協議比如IIC、SPI等基礎,需要會用linux作業系統,在系統中能進行linux命令列操作,學會在linux和windows下交叉編譯程式,這方面教程網上也有,相比微控制器的教程就沒有那麼多比較系統的了。比較好的收費居多,畢竟難度也要上一個等級,氪金學習能接受的也OK。
C語言基礎同樣是需要的,畢竟linux核心也是C寫的,看不懂就啥也別說啦... 除了上一標題中提到的C需要掌握的內容,linux中還要繼續深究其自帶的API,包括檔案IO的程式設計,程序執行緒的使用,訊號量等同步機制的實現等等內容,這些在linux應用程式設計中同樣重要。還有linux下的shell命令常用的需要掌握,方便日後學習的進行。在linux作業系統中雖然也有windows一樣的圖形介面供使用,但在效率和專業性方面,還是命令列來得快~ 命令列介面稍顯枯燥,但學習慣了打起來還是很爽的。說完了作業系統方面的,就要看看linux核心驅動了。通常使用linux核心作為驅動的平臺都是相對高階的產品,ARM7及以上等級的SOC中常見,這些晶片裡跑linux或者後面說的Android系統進而能處理更加複雜的業務。那怎麼把linux系統放進這樣的晶片裡並能在pc機上的linux作業系統中除錯就需要學習了。這部分內容包括核心的編譯裁剪與移植,根檔案系統製作與掛載,交叉編譯環境的搭建等等一眾內容,需要極大的耐心去修改,下載到對應開發板再除錯。SOC中擁有了linux系統就可以進行驅動的進一步學習了。這部分要學習三種字元裝置驅動模型,等待佇列,核心中斷機制,poll&select機制,核心定時器和同步機制,IIC、input子系統等等內容,需要看著核心原始碼來修改編譯,期間會涉及許多微控制器知識,所以有基礎的看原始碼也不至於太累而堅持不下去。上面這些事情都一定一定要配合一個開發板來進行,如下圖,這個不實操真的白談。做完基本可以在自己的板子上完成類似微控制器的所有操作,還能做出影片播放效果,檔案管理功能等,類似一臺介面不那麼好看的手機了。學習驅動主要在很多做高階產品的公司會需要人來移植系統到自己的平臺上進行開發,工程比較複雜,當然待遇也不錯。
回覆列表
學習嵌入式難嗎,嵌入式學習路線有哪些?我看一些初學者問的很多,分享一下。
1.Linux基礎及C語言高階
學習Linux基礎及C語言,對嵌入式C語言有一定的精通掌握,內容包括有Linux基礎、shell命令、Linux 網路配置、C語言開發環境搭建、指標、函式、結構體和共用體、儲存型別及其他知識點。
2.資料結構
掌握資料結構的概念及相關知識點,是嵌入式開發基礎學習的重點,這一階段中,學習的內容包括資料結構介紹、線 性表、線性表的順序表示、線性表的鏈式表示、棧、佇列、樹、圖、排序演算法。
3.Linux I/O、檔案目錄控制
Linux I/O、檔案目錄控制是嵌入式Linux中重要的知識點,透過學習標準I/O、檔案I/O、檔案和目錄、靜態庫、動態庫,強化 對Linux應用開發的理解和應用能力。
4.Linux程序、執行緒開發
Linux程序、執行緒開發是應用開發中非常重要的一部分內容,包括:程序管理、Linux執行緒,程序間通訊(無名管道PIPE、有 名管道FIFO、訊號基礎及相關知識點、IPC及相關知識點)。
5.Linux網路開發及綜合案例
應用開發的絕大部分專案都涉及到了網路功能,有一個好的網路程式設計功底,是從事Linux應用開發的基礎。包括:網路體系結構, TCP/IP協議,TCP及UDP程式設計,伺服器模型,超時控制,協議分析,抓包等。
6.C++語言
從C到C++、C++新增特性、C和C++相容及差異、記憶體模型和名字空間、標準流、物件和類、運算子過載、模板、類繼承、多型 、異常、轉換函式、智慧指標及STL、熟悉面向物件程式語言。
7.Qt應用開發
掌握Qt應用程式設計的主要方法,熟悉Qt中的主要元件和常用圖形介面元件,熟悉Qt中事件驅動的訊號槽機制,熟悉Qt和2D技術,熟悉Qt 的程序、執行緒及網路程式設計,並完成一個基於Qt的檔案下載工具的編寫。
8.STM32開發
掌握基於STM32F051這款MCU的軟硬體開發技術,掌握常 用微控制器原理及程式設計介面技術和常用感測器的使用方法。
9.5G窄帶物聯網開發
在STM32基礎上學習LoRa技術及NB-IoT技術,在5G的時代做好物聯網開發,掌握技術原理及相對應的物聯網行業解決方案, 智慧牧場、智慧抄表、智慧停車、智慧灌溉等系統開發。全面掌握LoRa和NB-IoT關鍵開發技能,具備物聯網專案開發經驗。
10.ARM開發技術
Linux 嵌入式底層開發的核心,ARM處理器是至關重要的一個學習內容,而ARM開發技術是每一位嵌入式工程師必須掌握的。在這裡,學習ARM體系機構、ARM指令、異常中斷、ARM/C混合程式設計、ARM硬體介面(包括GPIO、實時時鐘、看門狗等接 口,以及SPI、I2C匯流排)、ARM Cortex-M微控制STM32開發。
11.Linux系統移植
包括嵌入式Linux環境搭建、BootLoader(工作原理、uboot的實現及使用、BootLoader啟動流程程式碼詳細分析)、配置 編譯Linux核心、嵌入式Linux檔案系統製作。
12.Linux核心及驅動開發
包括Linux字元裝置驅動基礎、併發控制、阻塞與非阻塞IO、睡眠機制、Poll和Select操作、非同步通知、中斷處理、延遲機制 、核心地址空間與記憶體使用、Linux2.6裝置模型與sysfs檔案系統、udev和devfs檔案系統、ARM介面驅動、塊裝置驅動、網路裝置驅動。
13.Android移植開發
包括有Android底層架構介紹及移植方法、Android啟動流程分析及系統定製、AndroidHAL硬體抽象層分析(HAL技術理論講解、LED HAL實驗程式碼分析、Android HAL開發方式介紹、Android感測器系統介紹、Android Sensor感測器HAL分析)。
以上步驟,供你參考。