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