初學者往往都會認為arm開發比51開發高階,但事實是這樣嗎?本篇文章就基於嵌入式開發領域的知識點分類的視覺來談談。 本文也代表作者對嵌入式領域的大體見解。
1. 體系程式設計方面
cpu體系代表的是某類cpu家族的體系特性,如arm體系、mips體系、x86體系,而嵌入式開發工程師一般是針對整合各種模組的soc進行程式設計。因此這裡的體系既包括cpu體系,也包括soc程式設計。體系程式設計應該說是嵌入式領域最基本也是最通用的程式設計技術要求了。所有嵌入式軟體工程師都是從體系程式設計開始的,如arm體系程式設計、mips體系程式設計、51體系程式設計。
嵌入式體系程式設計區別於pc(x86)程式設計的最大特點是,嵌入式的中斷控制由工程師自己把握,甚至每行**都由工程師把握。中斷、時鐘、gpio和定址方式是體系程式設計的基礎。這些模組在所有cpu體系中都存在,不管是arm,還是51。從系統設計來看,arm和51在很多模組的核心設計理念上都是一致的,要到晶元的暫存器級才體現出不同。當然設計水平和暫存器的多少、cpu字長、流水線等等都最終影響cpu/soc的效能和功耗。但對於一般的嵌入式工程師來說,他們面對的體系程式設計,在原理上可以說都是一致的。
2. 嵌入式軟體-核心方面
arm高階處理器可以跑linux,而51可能裸跑,也也可以執行ucos/rtos等等。51沒有mmu,cpu效能一般,支援不了linux。
但是,這並不代表51就是低層次的產品。技術是沒有貴賤之分、恰到好處才是最好。產品設計最怕技術堆砌了。產品是講究價效比的,在完成功能和效能的基礎上做到盡可能低的成本。arm高階處理器跑ucos,就好比賓士車搭乙個馬自達的標誌。
3. 嵌入式軟體-驅動方面
通用驅動方面:key、lcd、儲存、ad/da、usb等等。
感測器:溫濕度、光敏、加速度、氣體感測等等。感測器最重要的是演算法,如加速度感測器的計步演算法實現等等。
物聯網(驅動和應用):藍芽、wifi、zigbee、rfid等無線裝置。
檔案系統、gui、協議棧
這些東西跟arm和51沒有直接的關係吧,如果是c語言程式設計,那在兩個平台裡面切換時很容易的。所以在這方面,兩周也沒有高低之分。
4. 嵌入式軟體-應用方面
領域開發,跟cpu核沒有什麼關係,這塊是平台無關的。當然,要看應用對底層作業系統的效能要求。像導航應用運算量大,51也撐不起。但對於導航應用開發者來說,他不需要關心底層的cpu核是什麼。
當然,對於某些簡單的電子產品來說,其沒有作業系統或者核心,或者幾乎沒有分層,像電視的遙控器這種應用,那應用開發的大部分就是紅外驅動開發了,其就是平台相關了。
應用跟行業領域相關,各行各業差別很多,例如航空和醫療,各有特點。企業選擇應聘者一是看其通用的開發技術水平,再是看是否有相關的行業經驗。例如atm機開發涉及到金融,如果之前有過類似經驗的工程師,那過渡會比較快。
另外,嵌入式應用基於應用框架來分類。應用框架的代表是qt框架和android應用框架,這種應用開發可以說跟一般的嵌入式軟體都脫離得比較遠了,可以說跟pc的客戶端軟體開發差不多了。由於android智慧型機(手機/pda)已經普及,業界已經將android應用開發視為乙個單獨的崗位需求,但對於qt框架應用開發還是視為嵌入式方面的要求,當然,這個需求量已經很低了。
這個部分講得更多是嵌入式方面的就業崗位技能方面,跟51/arm平台關係不大,因為它很多時候都是平台無關的。
5. 真的不可比嗎
也不是,總體來講,51微控制器一般適用在相對簡單的電子產品,而arm會應用到相對複雜的電子產品。企業裡面的嵌入式開發工程師,絕不是僅僅是做體系程式設計開發,往往是平台相關的驅動開發或者平台無關的應用開發。由於產品所要求的技術的複雜性,基於arm平台開發的工程師有機會接觸到相對複雜的、或者技術難度高一些的模組開發,自然能夠積累到更加豐富的經驗。從這點來看,這個比較也有一定道理。但是,51平台開發工程師絕不需要為此而感到自卑。產品價效比至少,arm平台所用到的計算,51平台一定同樣會有,筆者之前就基於51平台和mips平台進行嵌入式作業系統的架構設計和開發,裡面的技術基本是理解了嵌入式linux的精髓,高度精簡移植而來,適用就好。封閉的系統最考究乙個人的設計能力,而開源的系統更考究乙個人的全面能力。
6. 工具鏈
工具鏈是嵌入式工程師的基礎要求。姑且將執行時庫、混合程式設計、巨集定義、編譯鏈結、組合語言歸類到這個範疇。尤其是鏈結指令碼的定義能夠看出乙個工程師對乙個平台的把握程度。工具鏈的技巧應用是嵌入式架構師的基礎要求。
51平台有51的工具鏈,而arm平台一般用gcc工具鏈。gcc工具鏈有更加豐富的描述語法,熟練運用可以讓編碼更整潔、更高效。
所以,嵌入式軟體工程師應盡可能地提高自己在平台無關領域的軟體設計水平和經驗,例如核心和下面提到的應用、驅動等方面,而不管自己是在arm平台上開發還是51平台上開發。
嵌入式arm開發學習
今天是學習arm的第二天.感覺又懂了一點.記錄下來,以便以後不時之需.今天先是看了一些linux應用開發的東西,由於之前自己對linux程式設計還算是有過了解,這部分看得很快,基本沒有什麼閱讀障礙.個人建議想學嵌入式linux的人,最好先把unix環境高階程式設計看一遍.你會發現一切都會順其自然.之...
基於ARM的Qt Creator嵌入式開發環境搭建
平台 ubnutu10.04 交叉編譯器 arm linux gcc 3.4.1 在qtqt everywhere opensource src 4.8.1.tar 解壓為3 份,可分別命名為 qt x11 qt x86 qt armqt x11版本可以產生 qt開發工具 designer qt介面...
嵌入式定製開發選ARM7還是ARM9
arm公司設計了許多處理器,它們可以根據使用的不同核心劃分到各個系列中。系列劃分是基於arm7 arm9 arm10 arm11和cortex核心。字尾數字7 9 10和11表示不同的核心設計。數字的公升序說明效能和複雜度的提高。嵌入式定製 arm7系列處理器是英國arm公司設計的主流嵌入式處理器a...