|
最近遇到很多處于迷茫中的新手,在糾結要不要去學嵌入式,主要問題在于嵌入式的門檻非常高,經(jīng)驗少、或者非電子專業(yè)投身嵌入式行業(yè)能否發(fā)展下去。現(xiàn)在嵌入式開發(fā)行業(yè)的確發(fā)展很好,大多數(shù)從業(yè)者都是科班出身,但我們也看到很多非科班的人分享了自己的從業(yè)過程,也許起初知識不如科班的多,但他們經(jīng)過持續(xù)數(shù)年學習實踐,也成為了行業(yè)中的大咖。其實學習技術更多的是一種執(zhí)著與刻苦,非科班無非要下更多的功夫。
嵌入式開發(fā)要學哪些,嵌入式可以簡單分為硬件與軟件,然而其中的知識體系卻是異常的龐大,這也是眾多新手望而卻步的一個原因,那究竟要如何才能成為一名嵌入式大咖呢?嵌入式開發(fā)要學什么,大致分為三個階段:基礎篇、進階篇、大咖篇。
入門嵌入式工程師
此階段主要是前期的入門過程,主要針對入行沒多久的新人。其實成功沒有捷徑,所以打好基礎才是關鍵。嵌入式開發(fā)要學什么主要包含以下4個方面的內(nèi)容:
1.電路知識 首先你要學習電路、模電、數(shù)電,認識電阻、電容、三極管,基礎器件要知道,放大電路、集成運放、時序電路基本電路能看懂,不然看電路圖一定是云里霧里,也就無法進行后續(xù)的工作。硬件產(chǎn)品的設計實現(xiàn),包括器件選型、原理圖和PCB設計、電路調試,都需要過硬的電路基礎。
2.C語言
C語言是嵌入式開發(fā)中最重要的編程語言,要對這門語言有深入的理解,畢竟不僅僅要會寫程序,看懂他人程序也很重要。最基本的數(shù)據(jù)類型、數(shù)組、指針、結構體,鏈表、文件操作等都要會,掌握基本語法和語句,不然你要能區(qū)分指針數(shù)組與數(shù)組指針嗎?
3.單片機
單片機入門相對簡單,通過單片機的學習可以熟悉單片機的硬件結構,包括I/O口、AD轉換、通信(串口、并口、I2C、CAN、USB、以太網(wǎng)、ZigBee技術等)、顯示(LED、LCD等)、控制(PWM等控制技術)、數(shù)據(jù)處理(圖形、圖像、語音、視頻等的處理或識別)等,學好單片機可以為采用嵌入式系統(tǒng)奠定良好的基礎。
4Linux基礎
Linux的源碼和架構都是開放的,在嵌入式系統(tǒng)中應用尤為廣泛,學習Linux對于系統(tǒng)的開發(fā)會有很大的幫助。詳細了解Linux下的目錄結構、基本命令、編輯器VI、編譯器GCC、調試器GDB和 Make 項目管理工具,Shell Makefile腳本編寫等知識,以及嵌入式開發(fā)環(huán)境的搭建。
中級嵌入式工程師
經(jīng)過第一個階段的學習,你已經(jīng)可以進行嵌入式開發(fā)工作了,但是要進階依舊還有很多知識要學,而這個階段也將是第一個分水嶺,使得優(yōu)秀的嵌入式工程師得以脫穎而出。此階段雖然只有三項,但涉及的知識非常廣,要想學好需要花費大量的精力。
1.Linux編程
系統(tǒng)編程可以直接跟內(nèi)核及核心系統(tǒng)程序庫對話,深入了解Linux內(nèi)核。掌握Linux系統(tǒng)編程主要提升對Linux應用開發(fā)的理解和代碼調試的能力。由于網(wǎng)絡應用開發(fā)越來越廣泛,通過Linux網(wǎng)絡發(fā)展、TCP/IP協(xié)議、socket編程、TCP網(wǎng)絡編程、UDP網(wǎng)絡編程、Web編程開發(fā)等方面入手,可以全面了解Linux網(wǎng)絡應用程序開發(fā)。
2數(shù)據(jù)結構與算法
數(shù)據(jù)結構及算法在嵌入式底層驅動、通信協(xié)議及各種引擎開發(fā)中得到了廣泛的應用,語言編譯要使用棧、散列表以及語法樹;操作系統(tǒng)中用隊列、存儲管理表及目錄樹等;數(shù)據(jù)庫系統(tǒng)運用線型表、多鏈表及索引表進行數(shù)據(jù)管理等等,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己界面,學習QT編程可以創(chuàng)建藝術級的圖形用戶界面所需的所有功能,從而更好的實現(xiàn)人機交互控制。而如今用戶對于圖形圖像的要求也越來越高,這就需要DSP、FPGA技術來設計開發(fā)更好的嵌入式視覺系統(tǒng)。
高級嵌入式工程師
學習了前兩個階段的知識,你已經(jīng)可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實已經(jīng)到了第二個分水嶺。這部分更多涉及系統(tǒng)層面,沒有全方位的知識將會很難下手。
1操作系統(tǒng)平臺開發(fā)
除了Linux外,嵌入式操作系統(tǒng)還有ARM、WINCE、uC/OS II、Vxworks、uClinux等,不同的系統(tǒng)有著不同的使用環(huán)境,你需要學習掌握系統(tǒng)的各個模塊,為底層平臺搭建做好準備。熟悉各個操作系統(tǒng)的特點以及系統(tǒng)的內(nèi)核移植,確保操作系統(tǒng)能在某個微處理器或微控制器上運行。隨著手機智能硬件的快速興起,Android操作系統(tǒng)開發(fā)也越來越重要。
2驅動開發(fā)
驅動程序設計是嵌入式Linux開發(fā)工作中非常重要的一部分。不僅要熟悉Linux的內(nèi)核機制、驅動程序與用戶級應用程序的接口,掌握系統(tǒng)對設備的并發(fā)操作。還要具備ARM硬件接口的基礎知識,熟悉ARM Cortex處理器各資源、掌握Linux設備驅動原理框架,以及工程中常見Linux高級字符設備、塊設備、網(wǎng)絡設備、USB設備的驅動開發(fā)。
當你到達這個位置的時候,可以說你已經(jīng)是一個人生贏家了,而真正的學習過程如同一場漫長的修行,在這個過程中,必定有各種各樣的困難。當然了,嵌入式工作中更多的需要實踐以及經(jīng)驗的積累,相信守得云開見月明,你也可成為一名優(yōu)秀的嵌入式工程師。
以上就是關于嵌入式開發(fā)要學什么的相關內(nèi)容,有想要參加嵌入式卓越工程師就業(yè)班的同學可以咨詢宋老師哦Tel17317951908。
|
|