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