ARM入門學習經驗

一 首先說說ARM的發展 

      ARM由於其功耗、成本、功能、可控性、供貨等多方面的優勢,在商業、工業等電子產品領域發展的越來越快,佔據的市場份額也越來越多。   

      廣義的嵌入式無非幾種:傳統的什麼51、AVR、PIC稱做嵌入式微控制器;ARM是嵌入式微處理器;DSP;FPGA。 
      DSP因爲數字處理與通信領域的空前發展而火暴,小到MP3 射象頭,大到我們軍品裏的控制器,應用面很廣。現在隨着ARM處理器的主頻升高,再加上一些DSP協處理器組成雙核芯片等。越來越多的ARM應用到了原來DSP的市場。從cortexM3到達芬奇系列的arm,從音頻編解碼,到視頻編解碼,機頂盒、視頻處理等,ARM在多媒體方面的優勢多來越大。 
      FPGA的兄弟一般做ANSIC(特殊芯片設計,好象是這麼翻譯的)。而ARM單純說來並不比一個單片機強多少,但是它的獨特就在於不斷下降的價格和提升的性能。這完全依靠於ARM公司的戰略,厲害!!很佩服他們的戰略眼光!! 
      值得注意的是:在找工作中,企業(著名的,小的不算)對單純的ARM硬件開發工程師並不比單片機重視,很少有大企業的職位裏寫“從事過ARM開發優先”。寫的多的是什麼?“嵌入式LINUX”到這相信大家看出來了吧,需要的是硬件中的軟件。 


二 ARM是硬件還是軟件 

      很難說,ARM是硬件,LINUX是軟件。ARM的硬件多半已經模塊化了,像我這樣把板子改成這樣的就算動的多的了,這同樣是ARM公司的戰略,再次佩服。 
      實際中的LINUX的開發工作更多,更耗時。從這方面說ARM應該算是軟件了。 
      在找工作中更是這樣,舉個例子,聯想裏和ARM最接近的是“BIOS工程師”是軟件,MOTO裏接近的是嵌入式LINUX工程師是軟件。而其他很多公司把嵌入式產品開發歸爲硬件。所以,不要討論這個,好好玩轉自己的板子纔是關鍵。實在不爽你就把自己叫“嵌入式開發工程師” 


三 要不要買開發板 買哪家 
       
       我的答案是“在你個人的學習方法”,作者建議前期買現成的開發板,入門之後可以做自己的。自己做板子調試對自己的提升是最快最直接的,但是剛剛接觸的時候硬件上往往不能夠一次成功,學習的效率就低了。當然如果有過來人指導就不一樣了。

1 買 
       買板子可以把注意力集中在軟件開發、開發板資源上,軟件開發(尤其是驅動)可以不必擔心自己硬件上的問題,我就是以便調試一邊寫驅動和程序,每次寫驅動前就要先確認硬件沒問題。另外,買板子更省錢和省時間。自己做板子週期長,而且調試麻煩,因爲你不知道是硬件問題還是軟件問題。

      再有就是買的資料相對來說比較全,但是不要指望有技術支持!都是騙人的,賣你之後就不會理你。所以,板子有一個調通的可用就行了,沒有必要花太多RMB去買所謂的超強板子。芯片都是一樣的,引腳引出來就行。在自己掌握原理之後,可以自己搭建簡單的電路,調試、修改程序。 

      不能太依賴開發板,再有了一定基礎後要儘快拋棄,讓它變成自己腦袋裏的東西。這樣資料方面就起了很關鍵的因素,所所以資料纔是最關鍵的,可以通過很多渠道獲得一些全面的資料,比如可以跟朋友要,也可以跟買過資料全面開發的朋友借,還有可以通過技術論壇下載一些免費的,還可以通過二手交易網、淘寶網等和其他技術人員索要、購買,比如淘寶店鋪:http://shop63212757.taobao.com 就有很多入門資料。   


2 做 

       自己做可以更瞭解底層硬件,可以按照自己的要求加東西,比如我就加了GPS模塊、 GPRS模塊 、SD卡模塊,擴了個IIC的35個鍵子的鍵盤、把LCD接口按照買的LCD改裝了,可以用FPC線直接連接。做的很爽的。玩一把嗎。 
        當然,你可以有策略的做,比如像我一樣,把RAM和ROM,網絡都保持和某現成的板子一樣,這樣他們的資料你就可以拿過來直接用,給自己留個退路。其他的如SD了 什麼的自己做。都達到了~~就是費錢,費時間。 
       再有就是給做的朋友幾點建議:儘量拿到現成的板子,儘量多蒐集其他板子的全套資料,一定要拿到一張沒問題的原理圖。 
        網上流傳的原理圖多數是龔俊03年畫的,再這裏對龔俊表達一下我的敬意!!牛人! 
但是那個圖有個小BUG,我指的是03版的,後來的沒這問題了。8019那地址線和地址有問題。還有人仿照他的PDF圖畫的SCH,更是漏洞百出!譴責!順便譴責把龔俊板子偷賣的人。 


3 買哪家 
    個人感覺分3類吧 
     1)首先是ZLG的,資料非常的全,感覺他是真正想教你怎麼開發ARM,而不是像有的公司自己技術都沒做好就做個板子出來賣錢。但是最大的不利就是價格太貴!而且主要是PHILIP的,貨源比較麻煩~~可能有人說21XX系列的不貴啊,那是總線不外擴的,只能跑UCOS,不能跑UCLINUX,23XX,24XX的可以跑uclinux。但是說是話,21XX系列纔是ARM7的價格性能結合點。ARM7最適合做工業控制,ARM普及,銷量都是怎麼來的?都是ARM7來的,而44B0是典型的商業片子。但是,這裏如果你看中的是爲工作做準備,還是選能跑UCLINUX的吧。 
但是仍然作爲第一個推薦,因爲菜鳥時期,合適的資料太重要了!!在這裏被ZLG的務實精神感動!你看人家那代碼寫的。所以,ZLG的24XX的資料和基於LPC2400的兩本深入淺出ARM7,是不可多得的資料哦。 
     2)感覺立宇泰的44B0不錯 
硬件沒別的,就是資料比較全的說,不像有些家,原理圖直接拿人家的,還錯的~~ 
     3)找個最便宜的 
好象最便宜的有賣到幾十塊錢的吧?淘寶一下,也是沒別的,就是即省了錢 還省時間蒐集資料,至於資料全不全,別計較了~~硬件肯定好使就行吧。資料另外收集去,不要想着一個開發的資料就能決絕你的學習任務了 O(∩_∩)O哈! 


四 要不要有51 AVR等單片機基礎 
        有更好,但沒有也無所謂。 
       兩個月以前,我只是看別人做,耳濡目染~~,本科學過單片機,從來沒做過。我們這的技術主幹做AVR和51,我就跟他們調過C語言程序。你看出來了?我是個不折不扣的菜鳥吧? 
但是做這個之前我特意找了ZLG的兩本書,看了裏面的例子和原理圖,這很重要。例程裏有彙編有C,都看懂了就OK,不用自己現寫 


五 開發都需要學習哪些軟件 
總結起來最主要的有以下幾個吧 

1 ADS調試用 
確切的說是ADS+AXD。ADS裏包含AXD。原來都用SDT後來ARM公司停止對SDT支持了,改支持ADS了,還是用ADS吧。 
有的人的程序發佈的仍然是SDT版本的,但基本都可以找到相應ADS的,新人在這裏不要發矇。ADS是編譯器,AXD是調試器。便宜成AXF以後再在ARM的RAM裏調試。 


2 PLASHPGM 
FLASH燒寫的軟件。AXD在RAM裏調試,掉電就沒有了,方便程序修改。調試好的程序再下到FLASH裏,上電直接運行。 
同類的軟件還有很多,什麼FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人還問FLASH不支持BIN格式文件的問題就要看我寫的PLASHPGM使用了。 


3 調試代理(不知道名對不,起這麼個難記的,我一般都叫它“半羊”因爲知道它那幾天剛吃了烤羊) 

調試代理還有很多種,什麼H-JTAG了、ARM7了(不知道具體叫什麼,就記得可執行文件叫ARM7.EXE)都是,BANYANT比較好。 
需要注意的是,沒種調試代理安裝方法雖然都簡單 但都不一樣,需要看說明。而且AXD調試之前都要運行。省錢了,就別怕麻煩了。 


4 ARM-ELF-TOOLS工具鏈 
裏面是UCLINUX開發用的工具比如ARM-ELF-GCC只類的。工具鏈就是把很多工具打包在一起發佈的方便你開發的東西。具體安裝方法看我另一篇筆記。 
另外如果你開發LINUX就要用ARM-LINUX-TOOLS,不一樣,不通用。 


5 U-BOOT 
大名鼎鼎的BOOTLOADER生成工具,同類的好象還有VIVI(名字很曖昧~~) 
生成的BOOTLOADER燒到FLASH裏,然後就可以用BOOTLOADER下載 燒寫其他了 
有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像電腦上的BIOS。當然UCOS的不用這個,用什麼我不知道:) 
最新版本是1.1.4 具體使用方法看我另一篇筆記吧。 


6 LINUX包 
LINUX的源碼包,不用多說了吧?建議大家用現成的先體會一下,然後再自己編譯,裁剪。


7 VMWARE 
老牌的虛擬機軟件,在一個機器上虛擬出一個機器裝LINUX(PC上用的),省得你來回開關機了。記得裝VMWARE-TOOLS,安裝方法在我另一篇筆記裏。 


六 有哪些書推薦 
      主要推薦ZLG的三本書,有這3本再加網絡就不用別的書了,其中主要推薦前2本,3是介紹體系結構的,也不錯 

1 ARM嵌入式LINUX系統構建與驅動開發,LPC3250&Linux 2.6實驗指導(linux)

  驅動寫的很詳細,前期開發介紹也很好 

深度剖析Windows Embedded CE ,SmartARM3250配套教程(wince)
2 深入淺出ARM7基於LPC2300(ARM7),深入淺出ARM9基於LPC3250(ARM9),
有項目經驗,理論知識,還有實驗電路實驗程序和註釋,瞭解人家是怎麼開發的。 

3 ARM嵌入式系統基礎教程 
最重要的是體系結構,彙編部分介紹,看看吧,增加理論素質。 

4 arm處理器的數據手冊(根據手頭的資料選芯片) 
寫在這裏是強調它的重要。 


不推薦ZLG早期出的紅色皮的ARM什麼體系結構~只類的 
寫的太多,看煩了。 
其他的書沒了幾本,沒看見好的,大家有看過的推薦吧。 


七 選UCOS?UCLINUX?LINUX?VXWORKS?還是當單片機用 
     1 搞開發,工程設計,用UCOS,小巧,多進程,簡單,體現了ARM7的精髓。 
     2 LINUX 正根的嵌入式系統,LINUX消費與通信領域用的比較多,但缺點是必須ARM9才能跑,ARM9的板子自己做就不行了,6層板太貴。買開發板1K達底吧。但是還是推薦選ARM9+LINUX 
     3 UCLINUX 算投機嵌入式系統:)ARM7上可以跑,由有LINUX近親,學好好可以比較方便的轉向LINUX,像我一樣的窮鬼用吧,呵呵 
     4 VXWORKS 
學好後可以找到高薪工作,但工作機會本身並不比LINUX好找。 
    5 當單片機用 
不推薦,雖然我景仰的ZLG一直號召這麼幹。因爲對於學習來說多進程的系統設計纔是ARM7的玩頭,至少你也要整個UCOS啊:) 
有朋友問我先學這個當基礎不行嗎?那當然可以~~但我當時就用了1周搞定,就是我先的ADS在RAM中調試的筆記。後來我清空FLASH用的小段程序還是當時寫的LED閃爍程序呢。另外1周裏其中還因爲自己過於菜,沒把OM設置好導致晶陣不陣 
哈哈。這個是必須做的,但一帶而過。目標放的遠一點。 


八 學習要用多長時間 
       我從菜鳥到現在兩個多月,中間被打擾數次。仍然搞定了PCB設計與製版,RAM調試,FLASH下載,UBOOT移植和下載UCLINUX(沒剪裁,用現成的),LCD驅動。 
再次坦誠的說:我確實比較菜,說這些不是讓大家羨慕,只是告訴你們“你們應該比這個更好” 
我相信良好的態度+合適的方法+及時的總結=成績 


九 ARM都玩什麼 
就幾點 
1 硬件設計 
2 系統移植 
3 驅動開發 
4 應用開發 
沒了。其中推薦把注意力放在後兩個上,3有難度,4比較靈活,最重要的是都是找工作的砝碼。 


十 我用的什麼板子 
很多人問我這個問題,我特意寫過一個的。再說一次吧。 
我是自己做的,RAM、ROM、8019等比較麻煩而當時的自己不理解的都按照龔俊的做的。保持其他不便的情況下做了如下改動。 
1 加了串口通信的GPS模塊、 GPRS模塊 
一個UART0,一個UART1,當與要用超級終端時用跳線切換。 
2 SD卡,和7843觸摸屏 
同時掛在SPI總線上,因爲SPI只能掛一個設備,同時還做了I/O模擬的準備,把兩個設備又通過跳線掛在4個IO上。 
3 擴了個IIC的35個鍵子的鍵盤 
用的ZLG的7290,不佔用CPU,最大支持64個鍵子,只上了35個,其他留接口。 
4 把LCD接口按照買的LCD改裝了,可以用FPC線直接連接。 
所以改動雖然多,但真正很移植了,初期調試有關的並沒動,就是爲了現在不那麼菜的時候做準備:) 


十一 開發流程 
這裏是我的開發流程 
1 設計原理圖
2 設計PCB
3 製版 
4 焊接電壓,確定電壓沒問題 
5 焊接芯片+周邊電路,用JLINK仿真器連接,JlinkV8已經支持arm7,9,11 cortexM3 等常見arm,而且價格便宜,淘寶75元一個。
6 儘量用keil,網上很多程序都是基於這個的,ADS1.2調試起來買有它方便
7 跑裸機程序,熟悉常用端口,串口,iic,spi,usb等
8 看看驅動開發的方法,自己寫個驅動看看 
9 還有很多事東西等着你玩 呵呵 


十二 關於JTAG訪真器 

建議jlink V8

linux下用網卡加串口調試,熟悉之後可以移植串口工具,只用串口調試。



十三 哪個公司的ARM 
這個是問題比較簡單。 

1 ARM7主要就幾個公司的 
三星,PHILIP,ATMEL的 
ATMEL的有比較便宜的AT91SAM7S32 和AT91SAM7S64 專爲8位應用產品量身定做,價格很便宜好象《3刀吧。和PHILIP的21XX差不多,資料太少,項目中選還不錯。 
其他兩家上面說了的不多說了吧 


2 cortex M3

cortex M3 有意法半導體,流明,但是STM32系列用的人多,資料也有,我用過的比較來說穩定性好一些,流明的價格其實並沒有他們自己說的那麼便宜

而且供貨也是問題,很多功能多的片子不是中斷有BUG就是由於加入以太網發熱成問題,導致穩定性不容樂觀。


2 ARM7以上
這個玩2410和2440的多吧,現在2440停產了,可以找替代產品,也可以用ARM11 6410 

其實ARM9用的最多的領域應該是消費電子,比如手機PDA,而這上面用的多的應該是INTEL的和TI的吧。

工業上的可以用飛思卡爾和LPC3250之類的,各有利弊選型時注意看是否合適自己 

但是飛思卡爾,INTEL的TI的入門材料少,價格高,自己看情況定吧。

還有 很多要說的,限於篇幅有限以後再寫了,今天先到這裏。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章