|
一、嵌入式系統的概念
著重理解“嵌入”的概念 ,主要從三個方面上來理解。
首先,從硬件上,“嵌入”是基于CPU的處圍器件的,整合到CPU芯片內部,就好比早期基于X86體系結構下的計算機,CPU有的是運算器和累加器的功能,一切芯片要通過外部橋路來擴展實現,象串口之類的都是憑借著外部的16C550/2的串口控制器芯片實現,而目前的這種串口控制器芯片早已集成到CPU內部,而且PC機有獨立的顯卡,而多數嵌入式處理器都帶有LCD控制器,就其意義來說就相當于顯卡。
從軟件上來說,嵌入就是在定制操作系統內核里將應用一并選入,編譯后將內核下載到ROM中。而在定制操作系統內核時所選擇的應用程序組件就是軟件的“嵌入”。因為嵌入式系統是計算機科學與電子技術交叉的一門綜合性學科,在嵌入式這個領域范圍內,誰都不敢說自己的定義是十分確切的,包括那些專家學者們。
二、嵌入式系統的分層與專業的分類
嵌入式系統分為硬件層、驅動層、操作系統層和應用層。
硬件層,是整個嵌入式系統的根本,如果現在單片機及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統的硬件層走起來相對容易。同時,硬件層也是驅動層的基礎,有模擬電路與數字電路基礎,還要對操作系統內核及其調度性相當的熟悉的。就目前來看,有硬件基礎的情況下會軟件開發會使你增值。硬件層比較適合于,電子通信、機電自動化類專業的人來學習,需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、C語言。
驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導至其它任務不能執行,要懂得系統內核架構和實時調度性,有良好的驅動編寫風格。按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級驅動工程師的水平都達不到,這樣所寫出來的驅動在應用調用時現在打開的程序中斷以前程序的情況,或者要等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾編,不是太容易成功的,所以工資也是相對最高的。除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。
操作系統層,對于操作系統層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。
應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數調用,到其他操作系統下只是編譯和開發環境有相應的變化而已。但如果涉及嵌入式系統下嵌入式數據庫、基于嵌入式系統的網絡編程和基于此應用層面的協議應用開發又較為復雜, 并且有難度了。
三、目標與定位
學STM32嵌入式,從硬件上講,一方面就是學習接口電路設計,另一方面就是學習匯編和C語言的板級編程。如果從軟件上講,就是要學習基于ARM處理器的操作系統層面的驅動、移植了。硬件的寄存器類的東西還是要能看懂的,掌握基于板級的匯編和C編程。
四、開發系統選擇
對于初學者在此方面以此入門還應該理智,開發系統的選擇最終要看自己往嵌入式系統的那個方向上走,是做驅動開發還是應用,還是做嵌入式系統硬件層設計 與板級測試。如果想從操作系統層面或應用層面上走,不管是驅動還是應用,那當然處理器性能越高越好了,但嵌入式系統這個東西自學,有十分大的困難,不是幾個月或半年或是一年二年能搞定的事。
選擇平臺還要考察一個處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以后就業成功的機率就越高,這就是招聘時 所說的有無“相關技能”,因為一個人不可能在短短幾年內把所有的處理器都接觸一遍,而招聘單位所用的處理器就可能是我們完全沒有見過的。因此開發系統的選擇,要看自己的未來從來目標方向、要看開發板接口資源、還要看業界的通用性。
五、高級嵌入式系統硬件工程師要具備的技能
對于硬件來講有幾個方向,就單純信號來分為數字和模擬,模擬比較難搞,需要積累多年的經驗,但是達到一定技術水平后工資十分可觀。
數字部分在大方向上又可分為51/ARM的單片機類,DSP類,FPGA類。ARM單片機(STM32屬于ARM系列)類的內容就較多,業界產品占用量大,應用人群廣,因此就業前景不錯。而硬件設計最體現水平和水準的就是接口設計這塊,這是各個高級硬件工程師判定水平高低的依據。
想成為一個優秀的工程師,需要對系統整體性的把握和對已有電路的理解,從硬件設計工程師中還可以分出ECAD工程師,就是專業的畫PCB板的工程師,和EMC設計工程師,幫助解決EMC的問題。要能用到工具畫圖畫板做邏輯設計、接口設計審圖、調試。
硬件是要靠經驗,十年磨一劍!但是相對通常的軟件開發者來說,可以有更長的職業壽命。更多嵌入式學習,歡迎咨詢余工Q 二八五九七八零二零三
|
|