以前,我總是聽說已經(jīng)工作多年,具有一定的行業(yè)經(jīng)驗的工程師,或者是師兄師姐們告訴我們,說是嵌入式是有多難學(xué),門檻有多高,既要懂軟件,也要懂硬件,還要搞懂各種某某原理、協(xié)議、算法等。在學(xué)習(xí)嵌入式的過程中,也遇到不少的難題,走過不少彎路,無的放矢地學(xué)習(xí)雜七雜八的知識,才能找到一份還湊合的工作。
但是,在我跟很多面試過的應(yīng)屆生,以及一些在校學(xué)生交流的時候,發(fā)現(xiàn)他們掌握的很多我們在工作了2-3年工作經(jīng)驗才掌握的知識,明顯在新一代的佼佼者,可以花更少的時間,學(xué)習(xí)到我們之前在不斷踩坑和彎路才能獲得的知識。歸根結(jié)底,這是老一輩的嵌入式工程師長期的意識和觀念,由于受到當(dāng)時成長環(huán)境和時代的影響,在技術(shù)成長過程中產(chǎn)生的,對學(xué)習(xí)嵌入式技術(shù)認知上的主觀偏見。
比如,幾大科學(xué)進步的里程碑,像牛頓力學(xué)、元素周期表、歐姆定律、高斯分布等科學(xué)理論知識,是人類中杰出的精英探索研究了幾百年、上千年才得到,在以前,只有社會上的杰出精英才能學(xué)到,現(xiàn)如今,我們只需要讀到高中畢業(yè)就可以完全掌握,不需要重復(fù)探索,重新沿著前人的老路再探索一遍。
踩在巨人的肩膀上,學(xué)習(xí)過去已有的知識,我們也就不需要跨過那么高的技術(shù)門檻,也不用在暗黑中摸索,以至于走了那么多前人的彎路。
所以,在這個移動互聯(lián)網(wǎng)所帶來的一切改變,不知不覺侵蝕了嵌入式所謂的高門檻,讓老工程師年代信息相對匱乏所經(jīng)歷的諸多困難,在當(dāng)下都不算是門檻,所以你如果想學(xué)習(xí)嵌入式技術(shù),盡管可以把目標(biāo)放得更長遠一些,關(guān)注當(dāng)前嵌入式技術(shù)未來的發(fā)展,會讓你更加地有信心去努力學(xué)習(xí)好。
從事嵌入式行業(yè)的工作,是否996要根據(jù)公司的制度相關(guān)。建議學(xué)習(xí)的學(xué)員,先去芯片公司工作一段時間,芯片原廠都會提供了SDK供給方案商使用,遇到大部分的難題、bug,也基本都會仍回原廠來解決。如果工作中重復(fù)經(jīng)歷這樣的情況,很容易會陷入嵌入式學(xué)習(xí)陷阱“調(diào)包俠”,學(xué)習(xí)嵌入式最重要的要發(fā)揮主觀能動性,比如在開源項目中反復(fù)折騰,同時,搞嵌入式的需要掌握扎實的電路基礎(chǔ),甚至需要做過一定量的電路相關(guān)實驗,工作動手經(jīng)歷。
那么,學(xué)習(xí)嵌入式開發(fā),掌握嵌入式系統(tǒng),具體包含哪些內(nèi)容呢?一般而言,嵌入式系統(tǒng)涵蓋了嵌入式微處理器、外圍硬件設(shè)備、嵌入式OS及用戶應(yīng)用程序,主要包含硬件和軟件兩部分。硬件包括處理器/微處理器、存儲器及外設(shè)器件和I/O端口、圖形控制器等。軟件部分包括操作系統(tǒng)軟件(OS)(要求實時和多任務(wù)操作)和應(yīng)用程序編程。
嵌入式系統(tǒng)硬件架構(gòu)
嵌入式系統(tǒng)的硬件架構(gòu),是以嵌入式處理器為中心,由存儲器、I/O設(shè)備、通信模塊以及電源等必要的輔助接口組成。嵌入式系統(tǒng)是量身定做的專用計算機應(yīng)用系統(tǒng),又不同于普通計算機組成,在實際應(yīng)用中的嵌入式系統(tǒng)硬件配置非常精簡,除了微處理器和基本的外圍電路以外,其余的電路都可根據(jù)需要和成本進行裁剪、定制,非常經(jīng)濟、可靠。
嵌入式系統(tǒng)的硬件核心是嵌入式微處理器,有時為了提高系統(tǒng)的信息處理能力,常外接DSP和DSP協(xié)處理器(也可內(nèi)部集成),以完成高性能信號處理。
隨著計算機技術(shù)、微電子技術(shù)、應(yīng)用技術(shù)的不斷發(fā)展及納米芯片加工工藝技術(shù)的發(fā)展,以微處理器為核心的集成多種功能的SoC系統(tǒng)芯片已成為嵌入式系統(tǒng)的核心。在嵌入式系統(tǒng)設(shè)計中,要盡可能地滿足系統(tǒng)功能接口的SoC芯片。這些SoC集成了大量的外圍USB、UART、以太網(wǎng)、AD/DA、IIS等功能模塊。
可編程片上系統(tǒng)SOPC(SystemOnProgrammableChip)結(jié)合了SoC和PLD、FPGA各自的技術(shù)優(yōu)點,使得系統(tǒng)具有可編程的功能,是可編程邏輯器件在嵌入式應(yīng)用中的完美體現(xiàn),極大地提高了系統(tǒng)的在線升級、換代能力。
以SoC/SOPC為核心,用最少的外圍部件和連接部件構(gòu)成一個應(yīng)用系統(tǒng),滿足系統(tǒng)的功能需求,這也是嵌入式系統(tǒng)發(fā)展的一個方向。
因此,現(xiàn)代嵌入式設(shè)計是以處理器/SoC/SOPC為核心來完成系統(tǒng)設(shè)計的,其外圍接口包括存儲設(shè)備、通信擴展設(shè)備、擴展設(shè)備接口和輔助的機電設(shè)備(電源、連接器、傳感器等),構(gòu)成硬件系統(tǒng)。
嵌入式系統(tǒng)軟件架構(gòu)
嵌入式系統(tǒng)軟件組成如下:
一、高端嵌入式系統(tǒng)的軟件組成
1.應(yīng)用程序
2.應(yīng)用程序接口函數(shù)庫
3.文件系統(tǒng)、圖形用戶界面、網(wǎng)絡(luò)協(xié)議棧
4.操作系統(tǒng)
5.引導(dǎo)加載程序、驅(qū)動程序
除了操作系統(tǒng)、設(shè)備驅(qū)動程序和應(yīng)用軟件之外的系統(tǒng)軟件稱為中間件。
二、嵌入式系統(tǒng)軟件和通用計算機系統(tǒng)軟件的異同
1.嵌入式操作系統(tǒng)的軟件配備沒有通用系統(tǒng)多,嵌入式系統(tǒng)軟件和通用計算機系統(tǒng)軟件都可以實現(xiàn)用戶界面。
2.通用軟件系統(tǒng)無疑是以操作系統(tǒng)為核心,不可或缺,但是嵌入式系統(tǒng)具有功能專用性,有些情況下可以不使用操作系統(tǒng),特別是低端嵌入式系統(tǒng)功能單一,使用循環(huán)程序作為主控程序就能夠滿足需要。
3.嵌入式系統(tǒng)應(yīng)用軟件具有內(nèi)部結(jié)構(gòu)精簡化、代碼輕量化、占用存儲資源少等特點。
三、自由軟件
1.自由軟件是一種可以不受限制的自由使用、賦值、研究、修改和分發(fā)的軟件,并不代表四免費軟件。
2.大部分自由軟件通過互聯(lián)網(wǎng)發(fā)布,且不收取任何費用。
四、嵌入式軟件特點
1.軟硬件一體,軟件固化存儲;
2.軟件對代碼時空效率和實時性要求高;
3.軟件可裁剪,要盡可能去除冗余;
4.大多數(shù)低端嵌入式系統(tǒng)不用操作系統(tǒng),所以軟件的生命周期相對較長。
五、嵌入式軟件結(jié)構(gòu)
1.選擇軟件結(jié)構(gòu)的一個基本原則是:選擇可以滿足響應(yīng)時間需求的最簡單的結(jié)構(gòu)(而非輪詢結(jié)構(gòu))
2.簡單的輪詢結(jié)構(gòu)只適用于系統(tǒng)的任務(wù)數(shù)量較少、任務(wù)處理簡單,且實時性要求不高的場景。
3.帶中斷的輪詢結(jié)構(gòu)也稱為中斷驅(qū)動結(jié)構(gòu)或前后臺結(jié)構(gòu),但并沒有因為中斷的引入而使軟件的復(fù)雜度明顯降低。
如何學(xué)習(xí)嵌入式系統(tǒng)開發(fā)(基于ARM)?
學(xué)ARM,從硬件上講,一方面就是學(xué)習(xí)接口電路設(shè)計,另一方面就是學(xué)習(xí)匯編和C語言的板級編程。如果從軟件上講,就是要學(xué)習(xí)基于ARM處理器的操作系統(tǒng)層面的驅(qū)動、移植了。這些對于初學(xué)都來說必須明確,要么從硬件著手開始學(xué),要么從操作系統(tǒng)的熟悉到應(yīng)用開始學(xué),但不管學(xué)什么,只要不是純的操作系統(tǒng)級以上基于API的應(yīng)用層的編程,硬件的寄存器類的東西還是要能看懂的,基于板級的匯編和C編程還是要會的。因此針對于嵌入式系統(tǒng)的硬件層和驅(qū)動程的人,ARM的接口電路設(shè)計、ARM的C語言和匯編語言編程及調(diào)試開發(fā)環(huán)境還是需要掌握的。
對于初學(xué)者必然要把握住方向,自己學(xué)習(xí)嵌入式系統(tǒng)的目標(biāo)是什么,自己要在那一層面上走。然后再著手學(xué)習(xí)較好,與ARM相關(guān)的嵌入式系統(tǒng)的較為實際的兩個層面硬件層和驅(qū)動層,不管學(xué)好了那一層都會很有前途的。
如果想從嵌入式系統(tǒng)的應(yīng)用層面的走的話,可能與ARM及其它體系相去較遠,要著重研究基嵌入式操作系統(tǒng)的環(huán)境應(yīng)用與相應(yīng)開發(fā)工具鏈,比如WinCe操作系統(tǒng)下的EVC應(yīng)用開發(fā)(與windows下的VC相類似),如果想再有突破就往某些音視頻類的協(xié)議上靠,比如VOIP領(lǐng)域的基于SIP或H.323協(xié)議的應(yīng)用層開發(fā),或是基于嵌入式網(wǎng)絡(luò)數(shù)據(jù)庫的開發(fā)等等。
如何選擇一款適合的嵌入式開發(fā)系統(tǒng)?
很多ARM初學(xué)者都希望有一套自己能用的系統(tǒng),但他們住住會產(chǎn)生一種錯誤認識就是認為處理器版本越高、性能越高越好,就象很多人認為ARM9與ARM7好,小編認為對于初學(xué)者在此方面以此入門還應(yīng)該理智,開發(fā)系統(tǒng)的選擇最終要看自己往嵌入式系統(tǒng)的那個方向上走,是做驅(qū)動開發(fā)還是應(yīng)用,還是做嵌入式系統(tǒng)硬件層設(shè)計與板級測試。
ARM7比較適合于那些想從硬件層面上走的人,因為ARM7系列處理器內(nèi)部帶MMU的很少,而且比較好控制,就比如S3C44B0來講,可以很容易將Cache關(guān)了,而且內(nèi)部接口寄存器很容易看明白,各種接口對于用硬件程序控制或AXD單步命令行指令都可以控制起來,基于51單片機的思想很容易能把他搞懂,就當(dāng)成個32位的單片機,從而消除很多51工程師想轉(zhuǎn)為嵌入式系統(tǒng)硬件ARM開發(fā)工程師的困惑,從而不會被業(yè)界某此不是真正懂嵌入式爛公司帶到操作系統(tǒng)層面上去,讓他們望而失畏,讓業(yè)界更加缺少這方面的人才。
分享幾本實用的嵌入式系統(tǒng)ARM架構(gòu)學(xué)習(xí)推薦書籍,幫助大家深入理解51單片機、ARM處理器基礎(chǔ)知識、系統(tǒng)指令、編程方式,以及相關(guān)ARM處理器開發(fā)工具的使用及實戰(zhàn)技巧。
1.從51到ARM:32位嵌入式系統(tǒng)入門
《從51到ARM:32位嵌入式系統(tǒng)入門》內(nèi)容分為3部分:第1部分是前4章,從大家所熟悉的51系列單片機的基礎(chǔ)知識開始,介紹ARM處理器的基本知識,包括ARM和51系列的對比、中斷處理系統(tǒng),寄存器和存儲器結(jié)構(gòu)等;第2部分是5~9章,詳細比較ARM指令和51系列指令之間的差異,進一步闡述ARM指令的含義和使用方法,從簡單的51系列編程經(jīng)驗出發(fā),介紹ARM處理器軟件編程方法;第3部分是后3章,介紹ARM處理器開發(fā)工具的使用。任何一個學(xué)習(xí)過51系列單片機的技術(shù)人員,借助《從51到ARM:32位嵌入式系統(tǒng)入門》都會很容易地學(xué)會ARM處理器的一般知識,了解軟件設(shè)計的基本方法,并且能夠使用開發(fā)工具進行程序編輯、編譯、連接和調(diào)試,成為一個初步懂得ARM并可以進行軟件設(shè)計的工程師。
2.ARM體系結(jié)構(gòu)與編程
本書分14章對ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)和開發(fā)工具作了比較全面的介紹。其中包括ARM體系介紹、ARM程序設(shè)計模型、ARM匯編語言程序設(shè)計、ARMC/C++語言程序設(shè)計、ARM連接器的使用、ARM集成開發(fā)環(huán)境CodeWarriorIDE的介紹及高性能的調(diào)試工具ADW的使用。并在此基礎(chǔ)之上介紹一些典型的基于ARM體系的嵌入式應(yīng)用系統(tǒng)設(shè)計時的基本技術(shù)。
3.ARM嵌入式系統(tǒng)基礎(chǔ)教程
《ARM嵌入式系統(tǒng)基礎(chǔ)教程》是《ARM嵌入式系統(tǒng)系列教程》中的理論課教材。以PHILIPS公司Lpc2000系列ARM微控制器為例,深入淺出地介紹嵌入式系統(tǒng)開發(fā)的各個方面。全書共分為3部分:第1章和第2章為理論部分,主要介紹嵌入式系統(tǒng)的概念及開發(fā)方法。第3~5章為基礎(chǔ)部分,主要介紹ARM7體系結(jié)構(gòu)、指令系統(tǒng)及LPC2000系列ARM微控制器的結(jié)構(gòu)原理。第6~8章為應(yīng)用部分,主要以LPC2000系列微控制器為例介紹如何設(shè)計嵌入式系統(tǒng),包括硬件的設(shè)計、μC/OSII的移植以及建立軟件開發(fā)平臺的方法。
4.ARM嵌入式軟件工程方法和實踐:面向AMetal框架和接口的C編程
全書分為4個部分,第一部分由第1章組成,主要介紹AM824-Core開發(fā)套件,對微控制器和評估板進行了詳細的介紹。第二部分由第2~3章組成,主要介紹模擬量與數(shù)字量的轉(zhuǎn)換方法和相應(yīng)的硬件電路設(shè)計。第三部分由第4~8章組成,重點介紹AMetal框架,包括接口的使用方法以及接口定義和實現(xiàn)的基本原理。第四部分由第9~10章組成,重點介紹基于AMetal無線硬件平臺(包含BLE和zigbee)的通信和非常實用的MVC應(yīng)用框架,并以開發(fā)溫度檢測儀為例,展示了程序設(shè)計和開發(fā)的詳盡過程。
-
嵌入式
+關(guān)注
關(guān)注
5136文章
19516瀏覽量
314509 -
開發(fā)系統(tǒng)
+關(guān)注
關(guān)注
0文章
38瀏覽量
9981
原文標(biāo)題:做嵌入式門檻高嗎?如何學(xué)習(xí)嵌入式ARM?需要996嗎?(文末福利)
文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
哪些專業(yè)適合學(xué)習(xí)嵌入式開發(fā)?
什么領(lǐng)域的人更適合學(xué)習(xí)嵌入式開發(fā)?
推薦一款比較好的嵌入式開發(fā)板
嵌入式開發(fā)為什么選擇C語言?
什么人適合學(xué)習(xí)嵌入式開發(fā)?
Java開發(fā)和嵌入式開發(fā)該如何選擇
嵌入式開發(fā)(一):嵌入式開發(fā)新手入門

嵌入式開發(fā)資料免費分享

嵌入式開發(fā)(一):嵌入式開發(fā)新手入門(轉(zhuǎn)載后續(xù)需要修改補充)

嵌入式開發(fā)培訓(xùn)學(xué)什么?嵌入式開發(fā)板知識講解

評論