常見的ARM嵌入式學習問答

tianhen791發表於2013-10-06
常見的ARM嵌入式學習問答,設計者和學習者最關心的10個問題:
1.          ARM嵌入式是學習硬體好還是學習軟體好?
2.          嵌入式軟體和硬體,哪一種職位待遇更高?或者說,在設計中哪一個更重要?
3.        學完51微控制器後,想買ARM開發板繼續學習,是買ARM7還是ARM9?
4.        到底是學習哪種核心:ARM7、CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8還是CORTEX-A9?
5.        ARM晶片如何選擇型號?
6.        學習ARM主要學習啥?
7.        是先學習基於作業系統的應用層程式的程式設計,還是先學習基於作業系統的驅動程式的程式設計?
8.        一定要學習GUI介面設計嗎?
9.        買哪種ARM開發板?
10.        電磁相容號稱黑色藝術,請問如何學習硬體設計中的電磁相容設計?

1.        ARM嵌入式是學習硬體好還是學習軟體好?

     答:

         學習硬體好還是軟體好,如果你能精通其中的任何一個,都好!
       學硬體,絕大多數人大學畢業後都可以做硬體設計,這時候大家是一個差不多的水平線上,所以感覺上好像沒有門檻!但是電子產品設計的難點是穩定性,尤其是電磁相容性的設計。N年之後,也許三年,也許五年,也許八年,總之年數不等,這時候水平上就有了高低之分:有些人設計出來的電子產品就是不怎麼出問題,有些人設計出來的電子產品就是一直有問題。硬體的設計,是設計經驗和理論再學習的結合:電磁場與電磁波、微波與天線、高速訊號處理、訊號完整性、PCB佈線的 實際措施、系統電磁相容的處理措施、電路除錯的能力與解決電路故障的能力,等等,
    學軟體,很多人大學畢業後都無法從事這個設計工作,因為大家在學校的努力程度不同,很多人實際上還沒有進入程式設計的門檻內。但是進入門檻後,絕大多數人的水平會處於差不多相同的水平線上,極個別的水平高一些,體現在程式的穩定性和程式執行效率上。軟體的設計,主要體現在這兩點
    微控制器的硬體和軟體,因為主頻太低,很少出現穩定性的問題,軟體的工作量也小,很多單位的軟硬體都是一個人做。但是到了主頻很高的32位微處理器後,硬體的穩定性特別容易出問題,功能複雜度增大,硬體設計的難度增加了,軟體程式設計的工作量加大了,所以多數公司的軟體和硬體開始有多人分開設計。樹葉有專攻!大樹葉負責系統設計,各種小樹葉有的做硬體設計,有的做軟體程式設計。宗旨就是發揮各自的強項!完成最後的系統功能設計

   另外一個需要強調的是,學習硬體還是軟體,還要看個人對硬體感興趣,還是對軟體感興趣?

2.        嵌入式軟體和硬體,哪一種職位待遇更高?或者說,在設計中哪一個更重要?

      答:

     剛進入職場時,一般來說嵌入式軟體的待遇會稍高一些。因為之前說了,很多人沒有進入軟體設計的門檻內。但是軟體畢竟是青春性的職業,隨著年齡的增加和設計經驗、設計能力的增加,硬體設計的待遇水漲船高,慢慢會與軟體職位的待遇相同甚至高於軟體的職位。

     至於誰更重要,硬體相當於軀體,軟體相當於血液,缺一不可,沒有誰更重要的說法。如果從產品的角度看,硬體更重要一些。因為在產品中出了問題,硬體的穩定性問題基本上只有找高手重新設計,如果是電路原理上的問題還可以直接增加或者減少元件來解決。軟體上不穩定問題基本上可以通過修改程式設計並重新下載程式到晶片中來解決。如果從設計的角度看,系統設計更重要,因為系統設計要求懂一些軟體的基本設計,更要對硬體設計有相當的造詣,這樣他才能把握住系統設計的要求,正確提出設計方案。

3.      學完51微控制器後,想買ARM開發板繼續學習,是買ARM7還是ARM9?

     答:

       如果你的微控制器程式設計能力比較強,建議直接買ARM9的板子,跑linux系統的,學習嵌入式軟體程式設計。
       如果你的微控制器程式設計能力比較一般,建議先購買CORTEX-M3的開發板,比如盤古STM32開發板和盤古LPC1768開發板,先學習32位ARM的程式設計(支援輕量級的作業系統,比如UCOS),鍛鍊實際的程式設計能力。有了一定的程式設計能力後,再買ARM9的板子,跑linux系統的,學習嵌入式軟體程式設計。
       總之就是多動手,遇到問題多了慢慢積累起來,就能夠融會貫通了!

5.      ARM晶片如何選擇型號?

答:

  ST公司:基於CORTEX-M3核心的晶片STM32F103、基於CORTEX-M4核心的晶片STM32F4,是目前最流行的CORTEX-M3核心的晶片。

  N XP公司:基於CORTEX-M3核心的晶片LPC1768、LPC1788、基於CORTEX-M0+核心的晶片LPC800系列,ARM9核心的晶片LPC3250,在設計中的認可率都比較高。

    ATMEL公司:一直採用ARM核心技術,最高也只採用到ARM9技術,旨在打造穩定的工業級晶片,不追求效能上的卓越,但求效能更加的可靠的工業級晶片。能克服各種惡劣的環境,及各種干擾,功耗低,讓工業控制能更加穩定有條不紊的進行。現在的ARM9核心晶片有AT91SAM9260、AT91SAM9263、AT91SAM9G45等


       德州儀器TI: 一直致力於研究處理速度更快,功能更加強大的晶片。更是採用ARM最新技術Cortex A8來提升晶片的效能。使得一些晶片的處理速度與X86架構的MCU不分伯仲。但是最近OMAP系列晶片據說被裁了,可能會退出市場。這讓選擇TI晶片的人心裡有點害怕!而且,TI的晶片更新速度太快,讓選擇他們晶片的廠家也無所適從。現在的CORTEX-A8核心晶片有AM3358、AM3359等。

SAMSUNG半導體: SAMSUNG生產ARM核心晶片的超高價效比是無人能敵的。正因為這點,其晶片也得到很多廠家的親睞。例如S3C2440價效比極高,一般消費電子產品中應用較多,不適於在嚴苛的工控環境中使用。現在的ARM9核心晶片有S3C2440、CORTEX-A8核心晶片S5PV210等。

     最近老是看到不少個人和廠家宣傳:使用三星的2440或者三星公司的其他型號設計為工控產品,而且我聽到不少廠家說晶片的工作溫度都做過老化試驗,低溫可以到零下40度。這個低溫的實驗條件只是工業級的一個強制性溫度試驗條件,並不是在這個低溫下正常工作就是工控級晶片。工控級的應用真正難以實現的是在各種惡劣電磁環境下的穩定工作,可惜大部分晶片都不能實現這種要求。穩定性是工控級應用的第一要素,這也就是為何ATMEL的晶片很多型號一賣就是十幾年,他們的晶片做的就是穩定。比如AT91RM9200、AT91SAM9260、AT91SAM9G45.

6.      學習ARM主要學習啥?

答:

   在硬體上主要學習ARM核心晶片的電路設計及其附加外圍電路(USB、SDIO、CAN、485、SPI、PCI等)設計以及高速數字訊號處理、訊號完整性設計、電磁相容設計,說白了就是學習如何設計出高穩定的ARM系統電路。ARM核心(CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8、CORTEX-A9等)的晶片,主頻越來越高,實現穩定性的設計難度越來越大。
     軟體上主要學學習基於作業系統的應用層程式的程式設計和基於作業系統的驅動程式程式設計或者基於庫函式的裸機程式程式設計等等。CORTEX-M3、CORTEX-M4核心的晶片,可以執行裸機程式或者輕量級的UCOS系統,軟體上主要學習裸機程式的程式設計; ARM9、CORTEX-A8、CORTEX-A9核心的晶片,可以執行linux作業系統、android作業系統、wince作業系統等,學習基於作業系統的應用程式程式設計

7.      是先學習基於作業系統的應用層程式的程式設計,還是先學習基於作業系統的驅動程式的程式設計?

    答:

          基於作業系統的應用層程式的程式設計是嵌入式軟體設計的基礎,它基本上可以不需要熟悉底層硬體就可以完成程式設計,所以學習嵌入式linux應用程式程式設計買開發板時,只要可以執行linux系統的開發板都可以。。基於作業系統的驅動程式的程式設計設計,要求設計人員不僅要熟悉作業系統,還要熟悉底層硬體,最好有過基於暫存器的程式編寫經歷,對設計人員的要求比較高。

        現在的驅動程式的程式設計設計,晶片原廠大部分已經提供了。在晶片原廠做驅動程式設計的人員,水平會高得多,不過中國的晶片廠很少,大家暫時沒多少機會。從產品的設計角度看,驅動程式的設計難度已經降低。

        所以建議:先學習基於作業系統的應用層程式的程式設計,有了一定的程式設計經驗後再去學習基於作業系統的驅動程式的程式設計設計。

相關文章