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