空杯心態,是成功的開始!
大家好,本期創客學員故事的主角,是來自創客學院「嵌入式雙師1901班」的劉同學,從剛開始對嵌入式的知之甚少,經過數月的努力學習,到完全掌握企業所需的核心技能、高薪就業,他用事實證明了功到自然成的真理。接下來,讓我們一起來看劉同學關于嵌入式學習的總結心得。
?
嵌入式學習,整個體系可以劃分四個階段,語言基礎、應用層、底層和項目,要做到心中有數,有框架。
?
語言基礎
?
學習嵌入式,語言基礎很重要,可以說是整個嵌入式的根本。c基礎、shell和數據結構:學習一門語言,最好要有空杯心態,對于它的概念、語句用法、知識點細節,要做到熟悉、并牢記。
?
對于較難理解的概念,可結合例子加深,語言本身是死的,要精準記憶。至于編程時的活學活用,則靠點點滴滴的積累,尤其是指針、數組和函數(筆試題基本出自這里)。
?
shell則是很多“命令”的介紹,只能記憶了,重點是結構體的掌握,結合體用的不多,對于Makefile,會寫簡單的,會看復雜的即可;另一個重點是shell腳本的編寫,注意和函數的比較;
?
數據結構就相對簡單了,兩種存儲方式,即順序和鏈式,二者都適用于表、棧和隊列,對這六種,要學會節點的結構體封裝,以及“增刪改查”,基本思想是一致的,至于樹和圖,知道它們的創建與遍歷。
?
應用層
?
應用層主要包含IO、進程線程和網絡編程。
?
IO看似很多函數,對于每個函數的返回值、參數不要去記憶,只記功能即可;具體的頭文件,完整表達式通過“man”來查詢,并復制粘貼,用途有兩個,一個是網絡編程中的數據發送和接收,另一個是打開硬件設備節點,并對它進行讀寫(作為函數接口);
?
進程線程,要掌握二者的區別,以及和程序的區別,重點則是進程間通信(七種,掌握消息隊列,共享內存和信號量),以及線程間的同步和互斥;
?
網絡編程,就是TCP與UDP兩個框架的掌握。
?
?
底層
?
底層主要包含:ARM裸機、系統移植和驅動。
?
ARM裸機主要分兩部分,一個是匯編,會看就行,另一個則是重點,裸機編程,此部分基本就把開發板上的外設都跑起來了,這個階段要培養如何看懂芯片手冊;
?
系統移植,首先會用tftp和nfs,然后就是本章的重點,uboot和kernel的配置、編譯和啟動,注重流程的掌握,因為這個流程適用于大部分,還有就是根文件系統的制作。
?
驅動,則是對內核源碼的更深層次的追溯,本章的框架比較多,驅動的基本框架以及字符設備驅動的三要素編寫則是最為基礎的,更進一步的則是platform框架和IIC框架,額外的SPI框架和input框架,剩下的就是內核競態的處理方式(自旋鎖,信號量,互斥體和原子操作,注意和線程間的同步互斥做區別聯系),IO多路復用的接口(與應用層的select、poll和epoll的結合區別聯系),最后就是中斷與中斷底半部與內核定時器、gpio子系統的結合應用。
?
項目階段
?
此階段是對以前所學知識的綜合運用,重點是上行和下行兩條線是否理解,和跑通;其實這個階段做項目是其一,還有就是對自己知識體系的優化和升華,經過所做項目與總結,讓自己的經驗得以增加,讓我們的知識更容易活學活用。
?
結語:正如劉同學所說,學習是一個循序漸進,踏踏實實前行的過程,把心態放空,有一個空杯心態,才能把新的知識體系、前輩的經驗技能掌握在自己手中!
?
- 贊