嵌入式好不好學(xué)?
目前我也在搞這一行,一直在摸索一條嵌入式的路該怎么走,希望我的分析能對(duì)你有幫助,我不知道樓主學(xué)的是什么嵌入式,我學(xué)的是linux方面的,其實(shí)嵌入式說(shuō)難也不難,因?yàn)槲铱次覀児纠峡偟募夹g(shù)都6的我不得不佩服,從上層到底層包括什么網(wǎng)頁(yè),界面,驅(qū)動(dòng)等等都感覺(jué)熟悉的不能再熟悉了,當(dāng)然可能是對(duì)產(chǎn)品的熟悉吧,當(dāng)然這需要時(shí)間不挺的去學(xué)習(xí);我個(gè)人的理解是嵌入式難就難在這一行涉及到很多知識(shí),什么c,c++,QT,網(wǎng)絡(luò),linux系統(tǒng),硬件驅(qū)動(dòng)等等。其實(shí)我個(gè)人感覺(jué)學(xué)的吃力的可能是方向不明確,不知道要去學(xué)什么,該學(xué)什么,所以入這一行我覺(jué)得還是把職業(yè)生涯規(guī)劃好,先靜下心來(lái),嵌入式我要學(xué)哪些先想好,比如我是應(yīng)用開(kāi)發(fā)的,首先是上層的應(yīng)用用的是GUI(類(lèi)似于win32),當(dāng)然還有QT之類(lèi)的大致原理搞懂其實(shí)就一個(gè)樣,學(xué)一樣就行了,若是想進(jìn)階的學(xué)習(xí)的話,GUI開(kāi)發(fā)中就會(huì)用到多線程的編程,開(kāi)始時(shí)我不知道只是什么,但是經(jīng)歷過(guò)考研的我(雖說(shuō)失敗了)一直相信一點(diǎn)目前我們用到的技術(shù)(除了做科研之類(lèi)和創(chuàng)造什么新技術(shù)以外的)基本都能在書(shū)上找到答案,因?yàn)檫@幾本都成老技術(shù)了,各類(lèi)書(shū)都有,所以說(shuō)嵌入式難的一點(diǎn)就是知識(shí)量就像高考一樣,多的沒(méi)話說(shuō),所以我每天下班后都會(huì)看書(shū),然后把自己學(xué)的感悟用微信公眾號(hào)記下來(lái)(這個(gè)公眾號(hào)是給自己看的,因?yàn)榉奖?,忘記了就拿出?lái)看),所以我就開(kāi)始學(xué)習(xí)操作系統(tǒng)原理,那里面詳細(xì)的講解什么是多線,多進(jìn)程,額外的看了cpu的調(diào)度,內(nèi)存管理,磁盤(pán)管理等等相關(guān)的知識(shí),就會(huì)越發(fā)的對(duì)操作系統(tǒng)感興趣了。
還有一些基本的命令的原理上面都會(huì)有的。
然后又遇到GUI的網(wǎng)絡(luò)方面的接口,那么我就去學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò),基本的原理TCP搞懂了IP還有其他的不懂,但是估計(jì)就兩個(gè)個(gè)月網(wǎng)絡(luò)就算看完了,然后就是socket編程去學(xué)習(xí),那么到時(shí)學(xué)起來(lái)的話不就是把理論用在實(shí)踐中嗎???你說(shuō)對(duì)吧?。?!以上就是相關(guān)的引用層方面的知識(shí)了。
接下來(lái)就是涉及到底層了,我應(yīng)用層還沒(méi)學(xué)完但是很期待底層,所以底層我不知道有哪些,但是基本的硬件通信知識(shí)一定搖動(dòng)比如什么I2C,SPI,CAN,WIFI等等的一些協(xié)議最好要弄明白,當(dāng)然最重要的還是芯片的架構(gòu)的理解,若是能理解的話就算基本明白嵌入式到底是怎么回事的了,哦,還有一點(diǎn)就是底層的接口可能會(huì)用C++來(lái)寫(xiě),我沒(méi)學(xué)過(guò)c++,目前用不到,而且我對(duì)c的理解還不夠所以不敢深入,但是不影響工作,之所用c++,我記得好像里面有個(gè)private,主要是把接口寫(xiě)在這里面以防止被上層應(yīng)用調(diào)用,然后用c++對(duì)應(yīng)的寫(xiě)一個(gè)接口給上層應(yīng)用就完了,感覺(jué)還是蠻安全的。若是想了解整個(gè)芯片的結(jié)構(gòu)比如arm,那么就系統(tǒng)的去學(xué)習(xí)arm的架構(gòu),那么整個(gè)嵌入式也就是這些吧,當(dāng)然是主要的。
總結(jié)一下幾點(diǎn)就是:
1:嵌入式難在知識(shí)點(diǎn)多,解決辦法是,基本的基礎(chǔ)知識(shí)點(diǎn)都能在大學(xué)的教材里面有,都可以學(xué)到,但是要大量的時(shí)間
2:把基本的嵌入式的框架列出來(lái),一步一步的去學(xué)習(xí),因?yàn)榍度胧竭@個(gè)行業(yè)基本上對(duì)軟件和硬件的要求都好是比較高的,所以不能馬虎,一定要列出學(xué)習(xí)的路線,比如我的路c, c++ , 匯編, arm架構(gòu), 驅(qū)動(dòng), linux內(nèi)核(主路線)以及包括用這些的其他小知識(shí)(輔路線就不列了)。
3:最后就是給所有的程序員一個(gè)建議,寫(xiě)代碼不要向著客戶(hù)去考慮,要向這結(jié)合客戶(hù)與程序員自身去考慮,向這客戶(hù)去考慮就是實(shí)現(xiàn)基本的功能和要求,向這自己去考慮就是代碼寫(xiě)的要有水平,水平的意思(我的理解)就是代碼的結(jié)構(gòu)是不是清晰的,代碼的擴(kuò)展性能如何,就在前天我目睹了經(jīng)理的代碼水平,擴(kuò)展性真的是很強(qiáng)大,以后維護(hù)起來(lái)都方便的很。