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






