當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 行業(yè)百科 > 嵌入式學(xué)習(xí)入門(mén)指南 名人唐攀專(zhuān)訪
這位華清遠(yuǎn)見(jiàn)高級(jí)研發(fā)工程師和高級(jí)講師,從事Android底層及系統(tǒng)移植相關(guān)研發(fā)工作,09年轉(zhuǎn)行到裴玄與研發(fā)結(jié)合的教育行業(yè),擔(dān)當(dāng)企業(yè)在職員工培訓(xùn)、企業(yè)內(nèi)訓(xùn)及大學(xué)生職業(yè)培訓(xùn),從那時(shí)開(kāi)始進(jìn)行Android應(yīng)用開(kāi)發(fā)及底層移植等工作,現(xiàn)在來(lái)看看這些學(xué)習(xí)指南具體有哪些,如何來(lái)更好地把握?
任何一門(mén)新技術(shù),興趣和堅(jiān)持都起關(guān)鍵性的作用
唐攀以前在日企從事汽車(chē)嵌入式開(kāi)發(fā),是什么緣故促使他轉(zhuǎn)向Android移動(dòng)開(kāi)發(fā)?在自主學(xué)習(xí)的過(guò)程中有沒(méi)有遇到什么困難?他是如何克服的?看看他是如何來(lái)做到的,Android在08年出現(xiàn),大陸的程序員基本上09年才開(kāi)始接觸 Android,我之所以轉(zhuǎn)向Android移動(dòng)開(kāi)發(fā),主要是因?yàn)锳ndroid是基于Linux操作系統(tǒng),而我之前又是做Linux應(yīng)用與驅(qū)動(dòng)工作,所以一定的“交集”讓我快速轉(zhuǎn)型。當(dāng)然,剛開(kāi)始對(duì)Android很陌生,后來(lái)買(mǎi)了部G1手機(jī)才開(kāi)始慢慢感受到它的優(yōu)勢(shì),比如開(kāi)源、程序間平等、UI漂亮和可玩性強(qiáng)等。
當(dāng)然在09年開(kāi)始學(xué)習(xí)Android時(shí),那個(gè)時(shí)候網(wǎng)上并沒(méi)有現(xiàn)在這么多的資料,所以都是直接從官方網(wǎng)站上看在線SDK。有問(wèn)題也是Google去解決,并且一般做底層的都是和C或C++接觸比較多,所以Java語(yǔ)言這兒可能也會(huì)有一點(diǎn)突破,不過(guò)還好,學(xué)會(huì)C的人,學(xué)其它語(yǔ)言都不難。在學(xué)習(xí)過(guò)程中就是靠興趣和堅(jiān)持這種強(qiáng)大精神支撐才得以順利轉(zhuǎn)型,當(dāng)然在轉(zhuǎn)到Android底層之后,主要還是因?yàn)殚_(kāi)源是Android大的優(yōu)勢(shì),也比較適合國(guó)情。如果在底層的開(kāi)發(fā)過(guò)程中把環(huán)境搭建和調(diào)試經(jīng)驗(yàn)做的很好,并且解決相應(yīng)的問(wèn)題,那就會(huì)是自己的經(jīng)驗(yàn),快捷有效的辦法就是借助google和自己的跟讀代碼。
如何能夠更好、更深入地學(xué)習(xí)Android技術(shù)
對(duì)于Android初學(xué)者來(lái)講,我個(gè)人認(rèn)為Android是一個(gè)大雜燴,牽扯的東西非常多,比如Java、C、C++、設(shè)計(jì)模型、Linux和驅(qū)動(dòng)等等,總之太多了。如果你是做嵌入式底層,比如做過(guò)驅(qū)動(dòng),做過(guò)Linux應(yīng)用程序開(kāi)發(fā),那你學(xué)Android底層相對(duì)比較輕松一些,如果你是做上層的,那你要突破的點(diǎn)太多了。我覺(jué)得學(xué)習(xí)Android底層,應(yīng)站在應(yīng)用程序角度考慮接口,站在接口角度考慮框架, 站在框架角度考慮硬件抽象與數(shù)據(jù)處理,以Linux操作為基礎(chǔ),以編程語(yǔ)言為武器,以設(shè)計(jì)模型為戰(zhàn)略,以read source code 為具體動(dòng)作,堅(jiān)持下來(lái)就行。
在嵌入式開(kāi)發(fā)領(lǐng)域,對(duì)于嵌入式學(xué)習(xí)又有怎樣獨(dú)到的見(jiàn)解呢?
如何開(kāi)始和深入學(xué)習(xí)嵌入式開(kāi)發(fā),這個(gè)還是要和專(zhuān)業(yè)相關(guān),并且有興趣,因?yàn)榍度胧接袝r(shí)真的挺枯燥,簡(jiǎn)單的問(wèn)題可能卡上幾天。深入的話,就是個(gè)人追求的問(wèn)題,我是喜歡打破沙鍋問(wèn)到底的人,嵌入式這塊如果你想深入的話,匯編和體系結(jié)構(gòu)要學(xué)好,然后是操作系統(tǒng)要了解透、中斷處理、內(nèi)存管理和內(nèi)核結(jié)構(gòu)體等等都能達(dá)到掌握程度,另外再加上代碼的閱讀能力就差不多了。
此外在嵌入式學(xué)習(xí)過(guò)程中,如果想要成為一名優(yōu)秀的嵌入式工程師,還應(yīng)該具備哪些相關(guān)的職業(yè)素養(yǎng)呢?
技術(shù)無(wú)止境,幾年前J2ME還很火,可現(xiàn)在已是Android和ios天下,再過(guò)兩年可能就是HTML5,這些都不好說(shuō)。其實(shí)技術(shù)只是工具,主要的還是編程思想和一個(gè)人對(duì)新方向的嗅覺(jué)能力,編程思想這塊就是開(kāi)發(fā)經(jīng)驗(yàn)的積累,多調(diào)幾個(gè)錯(cuò)誤、多寫(xiě)代碼、多看別人的代碼和多實(shí)現(xiàn)自己的想法,然后就是多關(guān)注外類(lèi)似CSDN的一些IT資訊門(mén)戶。對(duì)于職業(yè)素養(yǎng)來(lái)講,在這個(gè)很小的圈子里,要堅(jiān)持做好每一件事,下好每一行代碼。
在嵌入式學(xué)習(xí)過(guò)程中,應(yīng)該如何來(lái)選擇適合自己的嵌入式系統(tǒng)系統(tǒng)?
常用的嵌入式系統(tǒng)主要還是按功能分:實(shí)時(shí)和非實(shí)時(shí),單任務(wù)與多任務(wù),常見(jiàn)的有vxworks、linux、winCE和ucosII等。選嵌入式系統(tǒng)得根據(jù)硬件芯片和系統(tǒng)功能來(lái)決定,如果實(shí)時(shí)性要求高的,那么就是vxworks和ucosII,如果用于處理多任務(wù),并且要UI表現(xiàn)好點(diǎn),那么就是linux+QT或Android與winCE。
在嵌入式學(xué)習(xí)過(guò)程中,硬件開(kāi)發(fā)平臺(tái)有FPGA,ARM,DSP,AVR等等,哪個(gè)更好,對(duì)于初學(xué)者來(lái)講如果想要學(xué)習(xí)ARM開(kāi)發(fā)板,該如何去選購(gòu)?
其實(shí)不能說(shuō)硬件開(kāi)發(fā)平臺(tái)哪個(gè)更好,只能說(shuō)哪個(gè)更適合你哪個(gè)更有前途,說(shuō)白了,就是賺的多還不累的。其實(shí)這幾個(gè)平臺(tái)都有自己的特點(diǎn),F(xiàn)PGA基本上是純硬件,搞IC的,DSP主要是邏輯處理控制,ARM平臺(tái)現(xiàn)在應(yīng)用比較多一些,基本上就是針對(duì)ARM的芯片進(jìn)行編程和外設(shè)控制,AVR是比較偏小型化的單片機(jī)開(kāi)發(fā)和設(shè)計(jì),應(yīng)用廣泛且比較簡(jiǎn)單。如果你是硬件專(zhuān)業(yè)的,就做FPGA或ARM、AVR的外設(shè)電路設(shè)計(jì),如果做軟件的,就DSP、ARM和AVR的編程等。如果初學(xué)者要學(xué)習(xí)ARM開(kāi)發(fā)板,我覺(jué)得還是2440的比較不錯(cuò),一是便宜資源多,二是方便調(diào)試。有很學(xué)生就想花大價(jià)錢(qián),買(mǎi)好的板,其實(shí)沒(méi)有用,買(mǎi)了學(xué)習(xí)用不上也是浪費(fèi),不如自己花500多塊買(mǎi)個(gè)2440,一點(diǎn)一點(diǎn)的學(xué)習(xí),學(xué)習(xí)成本低且效率好。好去淘寶上找一個(gè)2440開(kāi)發(fā)板,那里不僅多,關(guān)鍵不貴包郵,還送東西。
有人認(rèn)為嵌入式學(xué)習(xí)中,嵌入式開(kāi)不一定要學(xué)會(huì)ARM匯編指令集,還有人說(shuō)會(huì)Windows CE的都是牛人,不過(guò)也有人講Windows CE沒(méi)前景,就業(yè)范圍太窄,如何來(lái)跟好的看待這個(gè)問(wèn)題?
沒(méi)寫(xiě)過(guò)匯編程序的C語(yǔ)言的程序員,不是優(yōu)秀的程序員。為什么這么說(shuō)?匯編并不是一門(mén)語(yǔ)言,而是背后的體系結(jié)構(gòu),了解體系結(jié)構(gòu)后,能大大增加你的計(jì)算機(jī)理解力,能寫(xiě)出高效的C代碼,就好像C語(yǔ)言是武器,而體系結(jié)構(gòu)是劍法,有了寶劍,沒(méi)有劍法,不能達(dá)到高的殺傷力。WinCE我沒(méi)有太多的經(jīng)驗(yàn),現(xiàn)在WinCE是有點(diǎn)落伍了,主流都是WindowsPhone了,不過(guò)目前WindowsPhone市場(chǎng)需求還沒(méi)有激發(fā)出來(lái),再過(guò)上一年應(yīng)該差不多了,大家可以關(guān)注下,個(gè)人比較看好它。
在嵌入式學(xué)習(xí)中,嵌入式開(kāi)往哪個(gè)方向發(fā)展會(huì)比較好?在未來(lái)的移動(dòng)互聯(lián)網(wǎng)和云計(jì)算時(shí)代,嵌入式開(kāi)發(fā)又會(huì)有怎樣的發(fā)展機(jī)遇?
嵌入式開(kāi)發(fā)好和現(xiàn)在的物聯(lián)網(wǎng)、智能家居和云計(jì)算結(jié)合起來(lái),物聯(lián)網(wǎng)有傳感器外設(shè),有控制單元,云計(jì)算要與端結(jié)合,這些過(guò)程都需要嵌入式,我們平時(shí)工作中要多關(guān)注新理念和新機(jī)遇。