-
1 # 研發一條狗
-
2 # 時間管理術
嵌入式系統的定義很多,這也是困擾嵌入式系統學習的一個因素。多年和嵌入式裝置及開發人員的接觸,提出了嵌入式系統的簡單定義:嵌入式系統是嵌入式計算機系統的簡稱,這個定義突出嵌入式計算機系統和普通計算機系統的共性。現在隨著邊緣計算的越來越火熱,嵌入式開發也會逐漸成為新型科技市場的熱門領域,雖然這是一個幾十年就存在的技術和崗位。
如果題主真想入坑想學好嵌入式我查詢了一些資料供您參考一下,註定是一場攻堅之旅,成為一位合格厲害的嵌入式開發工程師需要逐級掌握以下這些開發知識(升級之路):
第一階段:打基礎階段即初級工程師或工程師助理
1.電路知識 首先你要學習電路、模電,認識電阻、電容、三極體,基礎器件,放大電路、整合運放、時序電路基本電路能看懂,不然看電路圖一定是雲裡霧裡,也就無法進行後續的工作。硬體產品的設計實現,包括器件選型、原理圖和PCB設計都需要過硬的電路基礎。
2.C語言
C語言是嵌入式開發中最重要的程式語言,要對這門語言有深入的理解,畢竟不僅僅要會寫程式,看懂他人程式也很重要。最基本的資料型別、陣列、指標、結構體,連結串列、檔案操作等都要會,掌握基本語法和語句,不然你要能區分指標陣列與陣列指標嗎?
3.微控制器
微控制器入門相對簡單,透過微控制器的學習可以熟悉微控制器的硬體結構,包括I/O口、AD轉換、通訊(串列埠、並口、I2C、CAN、USB、乙太網、ZigBee技術等)、顯示(LED、LCD等)、控制(PWM等控制技術)、資料處理等,學好微控制器可以為採用嵌入式系統奠定良好的基礎。
4Linux基礎
Linux的原始碼和架構都是開放的,在嵌入式系統中應用尤為廣泛,學習Linux對於系統的開發會有很大的幫助。詳細瞭解Linux下的目錄結構、基本命令、編輯器、編譯器、偵錯程式,Shell Makefile指令碼編寫等知識,以及嵌入式開發環境的搭建。
第二階段:相當於中級工程師需要掌握的技術
1.Linux程式設計
系統程式設計可以直接跟核心及核心系統程式庫對話,深入瞭解Linux核心。掌握Linux系統程式設計主要提升對Linux應用開發的理解和程式碼除錯的能力。由於網路應用開發越來越廣泛,透過Linux網路發展、TCP/IP協議、socket程式設計、TCP網路程式設計、UDP網路程式設計、Web程式設計開發等方面入手,可以全面瞭解Linux網路應用程式開發。
2資料結構與演算法
資料結構及演算法在嵌入式底層驅動、通訊協議及各種引擎開發中得到了廣泛的應用,語言編譯要使用棧、散列表以及語法樹;作業系統中用佇列、儲存管理表及目錄樹等;資料庫系統運用線型表、多連結串列及索引表進行資料管理等等,對其掌握的好壞直接影響程式的效率、簡潔及健壯性。
3.QT、DSP、FPGA
Linux沒有自己介面,學習QT程式設計可以建立藝術級的圖形使用者介面所需的所有功能,從而更好的實現人機互動控制。
第三階段:高階工程師
學習了前兩個階段的知識,你已經可以勝任大部分嵌入式工作了,但是距離大咖仍有一定的差距,其實已經到了第二個分水嶺。這部分更多涉及系統層面,沒有全方位的知識將會很難下手。
1作業系統平臺開發
除了Linux外,嵌入式作業系統還有ARM、WINCE、uClinux等,不同的系統有著不同的使用環境,你需要學習掌握系統的各個模組,為底層平臺搭建做好準備
2驅動開發
驅動程式設計是嵌入式Linux開發工作中非常重要的一部分。不僅要熟悉Linux的核心機制、驅動程式與使用者級應用程式的介面,熟悉ARM Cortex處理器各資源、掌握Linux裝置驅動原理框架,以及工程中常見Linux高階字元裝置、塊裝置、網路裝置、USB裝置的驅動開發。
-
3 # 雲逸風清
嵌入式系統是用於控制監視或者輔助操作機械和裝置的裝置是一種專用的計算機系統。
嵌入式系統需要了解的知識面,需要掌握的知識,有鑲入式系統組成;系統的特點;解決方案;系統初始化;系統軟體。
-
4 # Gfilsxin
嵌入式分為嵌入式硬體和嵌入式軟體。所謂嵌入式,就是指軟體在特定的嵌入式硬體開發完成後,最後被固化在此硬體平臺中,當硬體啟動後,自動執行軟體,完成特定的功能。
嵌入式系統啟動後,一般是沒有人機互動介面的,但會留有除錯介面,如RS232串列埠、網口,可以透過終端工具檢測軟體執行狀態、下發控制指令等。
硬體工程師嵌入式硬體工程師,主要掌握的是基於CPU設計計算主機板的電路知識。所以模電、數電、EDA知識是這類工程師的基本功!除此之外,熟悉常用通訊協議和匯流排,如CAN、SPI、I2C、PCIe、DDR,也是硬體工程師應該掌握的技能。
軟體工程師嵌入式軟體工程師,程式語言、資料結構是其基本功,除此之外,還應該熟練掌握以下技能:
掌握多執行緒、多程序程式設計技術,理解各種執行緒同步機制,如臨界保護、同步訊號。知曉程序間通訊技術,如共享記憶體、管道、套接字程式設計技術;瞭解常見外設作用,如CPU、DDR、SDRAM、FLASH、串列埠、網口等; 瞭解常見匯流排或通訊協議概念,如資料匯流排、地址匯流排、CAN匯流排、I2C匯流排、SPI匯流排等; 理解基於暫存器程式設計概念,也就是硬體驅動程式實現原理。無論什麼硬體,不管函式介面如何封裝,其內部一定是對硬體各個暫存器的操作; 嵌入式程式設計由於受限於硬體資源的大小,所以在記憶體使用上並不像桌面軟體那麼靈活。比如,在windows下程式設計,函式中的陣列變數可以分配很大的記憶體,這是因為其棧空間預設很大。但是在嵌入式環境中,最好把這些記憶體大的變數定義到外部儲存硬體中,如SDRAM或DDR,這是因為嵌入式處理器的片內RAM都很小!從這裡可以看出,嵌入式軟體工程師與其他型別軟體工程師有一個很大的不同點,就是需要掌握很多硬體知識,這是由嵌入式開發的特點來決定的。
回覆列表
嵌入式就是“嵌”在硬體裡面的程式,有些公司叫它底層韌體。
舉個栗子,我們每天用的手機,就是一個非常典型並且複雜的嵌入式系統。首先是硬體部分,它有一個核心CPU,這是嵌入式裝置的大腦。那還有一些連線到CPU上的外設,比如螢幕,揚聲器,攝像頭等等,這些是嵌入式裝置的四肢。那嵌入式程式就是要燒錄進CPU的程式,這段程式首先驅動螢幕等外部裝置,使他們能夠工作。第二決定整個裝置完成哪些工作。再舉個更簡單的,比如一個智慧溫度計,它有這樣的功能,監測環境溫度,然後每隔一個小時進行一次語音播報。那這個產品主要會有一個CPU,一個溫度感測器,一個揚聲器。嵌入式程式就可以控制溫度感測器監測溫度,然後設定一個定時器,每隔一個小時再驅動揚聲器進行一次語音播報。
嵌入式要學什麼?
1,基本硬體電路。
一般大公司硬體和嵌入式軟體是分開的崗位,而小公司硬體和嵌入式是合併在一起的。就單純嵌入式開發而言,至少得能看得懂電路圖。知道硬體電路部分的連線和基本原理。單純嵌入式可以不會硬體開發,但至少要能看得懂,否則CPU使用哪個引腳去控制都不懂得話,就完全沒辦法進行嵌入式開發。
2,C語言或者C++語言
一般而言嵌入式開發都使用這兩種語言。一方面是靈活性高,執行快。另一方面是很多MCU的廠商對於C語言的支援會比較好,有相當多的整合庫可以使用。最快的是組合語言,但是這個學習難度非常高,在現在商業環境中已經很少有精通的工程師了。但是不可否認會彙編的都是大牛。當然其他語言也能進行嵌入式開發,但是很多會有支援問題。
3,英語。很多講嵌入式的不會講到這個。但是英語在嵌入式開發中很重要。因為現在主流的嵌入式晶片基本都是國外的。做嵌入式開發難免要參考資料手冊,使用者參考手冊,應用資訊等資料,而這些基本都是英文的,很少有中文的。
以上三點學好了基本搞嵌入式沒什麼問題。工業中很多嵌入式系統比較簡單,用的8位MCU,程式也很簡單。稍微複雜一點的可能用個32位的晶片。再複雜一點的就類似手機平板這種,必須得上系統了。安卓就是一個嵌入式系統。一些簡單的應用不需要完成安卓這麼複雜的功能,那麼一般嵌入式工程師會自己寫一個狀態機,也就是一個很簡單的系統。嵌入式入門還算簡單,但是要精通比較困難。如果想學的話,我建議從STM32開始,一方面應用非常廣泛,另一方面資料也多網上課程也多,價格還不貴。