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