當前位置:首頁 > 嵌入式培訓(xùn) > IT培訓(xùn)問題庫 > 初學(xué)嵌入式開發(fā)要學(xué)什么?掌握好這幾個方向肯定沒問題
現(xiàn)在社會在科技方面總體而言是發(fā)展非常的迅速的,在我們的生活中角角落落都充斥著高科技的味道,里入我們平時基礎(chǔ)到的四軸飛行器,最近出的小米的搞怪音響,咳嗽一聲就會亮的聲控?zé)舻鹊冗@些東西從表面來看沒有什么,但是他的內(nèi)部組成都是科技的成果,也是嵌入式的成果。
既然嵌入式在我們的生活中應(yīng)用的如此之多,相應(yīng)的需要的開發(fā)人員也是非常多的,隨時都需要新鮮血液的注入,那么就有朋友問了初學(xué)嵌入式開發(fā)要學(xué)什么技術(shù)呢?總不能說一看就會吧,當然不是不如此今天我們要講的就是對于一個零基礎(chǔ)也就是初學(xué)的朋友想要學(xué)習(xí)嵌入式需要學(xué)習(xí)那些東西。
好了進入正題我把初學(xué)嵌入式開發(fā)要學(xué)什么大致的分為八個大的階段。
1、C語言
嵌入式Linux工程師的學(xué)習(xí)需要具備一定的C語言基礎(chǔ),C語言是嵌入式領(lǐng)域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎(chǔ)編程以及高級編程知識。包括:基本數(shù)據(jù)類型、數(shù)組、指針、結(jié)構(gòu)體、鏈表、文件操作、隊列、棧等。
2、Linux基礎(chǔ)
Linux操作系統(tǒng)的概念、安裝方法,詳細了解Linux下的目錄結(jié)構(gòu)、基本命令、編輯器VI ,編譯器GCC,調(diào)試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發(fā)環(huán)境的搭建。
3、Linux系統(tǒng)編程
重點學(xué)習(xí)標準I/O庫,Linux多任務(wù)編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內(nèi)存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應(yīng)用開發(fā)的理解和代碼調(diào)試的能力。
4、Linux網(wǎng)絡(luò)編程
計算機網(wǎng)絡(luò)在嵌入式Linux系統(tǒng)應(yīng)用開發(fā)過程中使用非常廣泛,通過Linux網(wǎng)絡(luò)發(fā)展、TCP/IP協(xié)議、socket編程、TCP網(wǎng)絡(luò)編程、UDP網(wǎng)絡(luò)編程、Web編程開發(fā)等方面入手,全面了解Linux網(wǎng)絡(luò)應(yīng)用程序開發(fā)。重點學(xué)習(xí)網(wǎng)絡(luò)編程相關(guān)API,熟練掌握TCP協(xié)議服務(wù)器的編程方法和并發(fā)服務(wù)器的實現(xiàn),了解HTTP協(xié)議及其實現(xiàn)方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構(gòu)網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計,熟悉HTML,Javascript等Web編程技術(shù)及實現(xiàn)方法。
5、C++ 、QT
初學(xué)嵌入式開發(fā)要學(xué)什么C++是Linux應(yīng)用開發(fā)主要語言之一,本階段重點掌握面向?qū)ο缶幊痰幕舅枷胍约癈++的重要內(nèi)容。圖形界面編程是嵌入式開發(fā)中非常重要的一個環(huán)節(jié)。由于QT具有跨平臺、面向?qū)ο蟆⒇S富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領(lǐng)域的GUI開發(fā)中得到了廣范的應(yīng)用,在本階段通過基于QT圖形庫的學(xué)習(xí)使學(xué)員可以熟練編寫GUI程序,并移植QT應(yīng)用程序到Cortex-A8平臺。包括IDE使用、QT部件及布局管理器、信息與槽機制的應(yīng)用、鼠標、鍵盤及繪圖事件處理及文件處理的應(yīng)用。
6、數(shù)據(jù)結(jié)構(gòu)與算法
數(shù)據(jù)結(jié)構(gòu)及算法在嵌入式底層驅(qū)動、通信協(xié)議、及各種引擎開發(fā)中會得到大量應(yīng)用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學(xué)習(xí)要重點理解數(shù)據(jù)結(jié)構(gòu)與算法的基礎(chǔ)內(nèi)容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序算法等應(yīng)用及其C語言實現(xiàn)過程。
7、Cortex A8 、Linux 平臺開發(fā)
通過基于ARM Cortex-A8處理s5pv210了解芯片手冊的基本閱讀技巧,掌握s5pv210系統(tǒng)資源、時鐘控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平臺搭建做好準備。Linux平臺包括內(nèi)核裁減、內(nèi)核移植、交叉編譯、GNU工具使用、內(nèi)核調(diào)試、Bootloader介紹、制作與原理分析、根文件系統(tǒng)制作以及向內(nèi)核中添加自己的模塊,并在s5pv210實驗平臺上運行自己制作的Linux系統(tǒng),集成部署Linux系統(tǒng)整個流程。同時了解Android操作系統(tǒng)開發(fā)流程。Android系統(tǒng)是基于Linux平臺的開源操作系統(tǒng),該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,是首個為移動終端打造的真正開放和完整的移動軟件,目前它的應(yīng)用不再局限于移動終端,還包括數(shù)據(jù)電視、機頂盒、PDA等消費類電子產(chǎn)品。
8、初學(xué)嵌入式開發(fā)要學(xué)什么驅(qū)動開發(fā)肯定是跑不了的
驅(qū)動程序設(shè)計是嵌入式Linux開發(fā)工作中重要的一部分,也是比較困難的一部分。本階段的學(xué)習(xí)要熟悉Linux的內(nèi)核機制、驅(qū)動程序與用戶級應(yīng)用程序的接口,掌握系統(tǒng)對設(shè)備的并發(fā)操作。熟悉所開發(fā)硬件的工作原理,具備ARM硬件接口的基礎(chǔ)知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設(shè)備驅(qū)動原理框架,熟悉工程中常見Linux高級字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備、USB設(shè)備等驅(qū)動開發(fā),在工作中能獨立勝任底層驅(qū)動開發(fā)。
那么對于學(xué)習(xí)方法也來給大家一些簡答的建議
學(xué)習(xí)嵌入式開發(fā)的一些學(xué)習(xí)方法以及注意事項
1、學(xué)習(xí)利用搜索引擎
當了多年工程師、自認是“看得懂系統(tǒng)架構(gòu)的軟件人”的PTRGroup首席科學(xué)家MichaelAnderson認為,不要閉門造車,要善用開放源碼世界的信息,很多常見的設(shè)計問題其實透過因特網(wǎng)就能找到同領(lǐng)域菁英貢獻的程序代碼;嵌入式工程師們要走出自己的小世界擁抱社群,與同領(lǐng)域的其他工程師們相互交流、互相幫助,而這也是開放源碼世界的精神。
2、建立系統(tǒng)級的工程思維
自詡為高信賴度嵌入式系統(tǒng)專家、擔任了多年工程師的E2V電子系統(tǒng)總工程師AdamTaylor認為,嵌入式工程師擁有系統(tǒng)導(dǎo)向的思維是很重要的,有不少開發(fā)案遇到問題,就是因為沒有在開發(fā)初期充分考慮基準、驗證策略以及兼容性驗證計劃等項目;此外每個嵌入式工程師都應(yīng)該具備優(yōu)良的項目管理技巧,力求準時完成負責(zé)的項目。具備能明智因應(yīng)技術(shù)與項目風(fēng)險的能力,對職業(yè)生涯發(fā)展會很有幫助。
3、熟悉實時操作系統(tǒng)(RTOS)
在工程人才招募機構(gòu)RandstadTechnologies負責(zé)嵌入式產(chǎn)業(yè)領(lǐng)域的解決方案經(jīng)理HenryWintz表示,目前產(chǎn)業(yè)界對于熟悉RTOS的工程師需求很高,也愿意提供更高的薪資水平;因此他鼓勵沒有接觸過RTOS的嵌入式工程師從一些較小型的系統(tǒng)著手,累積相關(guān)技術(shù)經(jīng)驗。此外他也發(fā)現(xiàn)產(chǎn)業(yè)界對嵌入式Linux人才有不少需求,主要是因為這種操作系統(tǒng)具備較大的設(shè)計彈性。
4、初學(xué)嵌入式開發(fā)要學(xué)什么這個問題培養(yǎng)多元化技能與系統(tǒng)觀是肯定的
擔任近多年工程師、具備許多不同領(lǐng)域技術(shù)經(jīng)驗的技術(shù)顧問公司Rebelbot顧問JenCostillo建議,原本從事較小型系統(tǒng)架構(gòu)(例如MCU)開發(fā)的工程師,可以開始去熟悉更大的系統(tǒng)(例如Linux驅(qū)動程序),反之亦然。嘗試著去開發(fā)手機應(yīng)用程序、或者是學(xué)習(xí)后端服務(wù)器的相關(guān)技術(shù),能讓你開啟完全不同的觀點;他并建議工程師去熟悉開放性硬件,現(xiàn)在市面上有不少現(xiàn)成的開發(fā)板,能讓工程師專注于學(xué)習(xí)獨特算法的開發(fā)。
5、了解最新的處理器
有超過多年嵌入式軟件工程師經(jīng)驗的Embedded.fm工程師EleciaWhite表示,除了要深入了解C或C++等基本程序語言,有時也要認識一些熱門的新程序語言以因應(yīng)特殊設(shè)計需求,但更重要的是了解最新的處理器技術(shù);處理器才是嵌入式系統(tǒng)的本質(zhì)。因為我們的系統(tǒng)資源有限,我們需要了解可用的資源有哪些。
6、要能熟悉開放源碼軟件
擁有多年工程師經(jīng)驗的FreescaleSemiconductor數(shù)字網(wǎng)絡(luò)全球軟件開發(fā)部門總監(jiān)RobOshana表示,客戶往往會要求在系統(tǒng)中整合一大堆軟件,因此所有的嵌入式工程師需要熟悉各種軟件;他建議工程師避免只專長單一領(lǐng)域,因為那可能會阻礙你的成長。對嵌入式工程師來說,確保自己對軟硬件技術(shù)都很了解,是非常寶貴的價值。
7、要能明確表達自己的想法與意見透過文字或繪圖
Micrum總裁JeanLaBrosse認為,無論是哪一種工程師,都需要能有效表達自己的想法與意見;往往有些菜鳥工程師無法清晰表達自己的想法,因為抓不到重點,而最好的解決方法是練習(xí)將之圖形化,例如畫出流程圖。這聽起來好像有點過時,但有時利用各種圖框組合來整理自己的思緒、表達想法會是很有用的,例如iPad的iThoughts應(yīng)用程序。
好了以上就是關(guān)于初學(xué)嵌入式開發(fā)要學(xué)什么的一個大方的總結(jié),包含了C語言,Linux,單片機等等幾個方向的技術(shù),除此之外也給大加簡答的吧嵌入式學(xué)習(xí)中需要注意的東西以及學(xué)習(xí)方法給給大家了一些建議,還希望能夠幫到初學(xué)嵌入式的朋友。