1.ARM簡介(摘錄) ARM(Advanced RISC Machines)是微處理器行業的一家知名企業,設計了大量高性能、廉價、耗能低的RISC處理器、相關技術及軟件。技術具有性能高、成本低和能耗省的特點。適用于多種領域,比如嵌入控制、消費/教育類多媒體、DSP和移動式應用等。 ARM將其技術授權給世界上許多著名的半導體、軟件和OEM廠商,每個廠商得到的都是一套獨一無二的ARM相關技術及服務。利用這種合伙關系,ARM很快成為許多全球性RISC標準的締造者。 目前,總共有30家半導體公司與ARM簽訂了硬件技術使用許可協議,其中包括Intel、IBM、LG半導體、NEC、SONY、菲利浦和國民半導體這樣的大公司。至于軟件系統的合伙人,則包括微軟、升陽和MRI等一系列知名公司。 ARM架構是面向低預算市場設計的第一款RISC微處理器。 2.產品介紹 ARM提供一系列內核、體系擴展、微處理器和系統芯片方案。由于所有產品均采用一個通用的軟件體系,所以相同的軟件可在所有產品中運行(理論上如此)。典型的產品如下。 ①CPU內核 --ARM7:小型、快速、低能耗、集成式RISC內核,用于移動通信。 -- ARM7TDMI(Thumb):這是公司授權用戶最多的一項產品,將ARM7指令集同Thumb擴展組合在一起,以減少內存容量和系統成本。同時,它還利用嵌入式ICE調試技術來簡化系統設計,并用一個DSP增強擴展來改進性能。該產品的典型用途是數字蜂窩電話和硬盤驅動器。 --ARM9TDMI:采用5階段管道化ARM9內核,同時配備Thumb擴展、調試和Harvard總線。在生產工藝相同的情況下,性能可達ARM7TDMI的兩倍之多。常用于連網和頂置盒。 ②體系擴展 -- Thumb:以16位系統的成本,提供32位RISC性能,特別注意的是它所需的內存容量非常小。 ③嵌入式ICE調試 由于集成了類似于ICE的CPU內核調試技術,所以原型設計和系統芯片的調試得到了極大的簡化。 ④微處理器 --ARM710系列,包括ARM710、ARM710T、ARM720T和ARM740T:低價、低能耗、封裝式常規系統微型處理器,配有高速緩存(Cache)、內存管理、寫緩沖和JTAG。廣泛應用于手持式計算、數據通信和消費類多媒體。 --ARM940T、920T系列:低價、低能耗、高性能系統微處理器,配有Cache、內存管理和寫緩沖。應用于高級引擎管理、保安系統、頂置盒、便攜計算機和高檔打印機。 --StrongARM:性能很高、同時滿足常規應用需要的一種微處理器技術,與DEC聯合研制,后來授權給Intel。SA110處理器、SA1100 PDA系統芯片和SA1500多媒體處理器芯片均采用了這一技術。 --ARM7500和ARM7500FE:高度集成的單芯片RISC計算機,基于一個緩存式ARM7 32位內核,擁有內存和I/O控制器、3個DMA通道、片上視頻控制器和調色板以及立體聲端口;ARM7500FE則增加了一個浮點運算單元以及對EDO DRAM的支持。特別適合電視頂置盒和網絡計算機(NC)。 Windows CE的Pocket PC只支持ARMWindows CE可支持多種嵌入式處理器,但基于Windows CE的Pocket PC則只支持ARM一種。微軟在對SH3、MIPS、ARM等嵌入式處理器做了評估后認為,ARM是一種性價比較好的選擇。由于目前ARM在手持設備市場占有90%以上的份額,只支持ARM,可以有效地縮短應用程序開發與測試的時間,也降低了研發費用。由于ARM開放其處理器授權,因此,用戶在市場上可以在多家整機廠商中進行選擇,從而保證了這一市場的競爭性。 1.抓住51開發ARM 這幾個月來我一直都爬在51的問題,自己都有一點笑自己了,用了4個月的時間,來鞏固51的原理和程序,還好我自己算是走過來了,自己笨,身邊的高才生又看不上51的原理,他們都比較“牛”,說51過時了,你問那個做什么???我比較郁悶!過時嗎?我有一點懷疑? 他們不愿意說有他們自己的理由,沒有人強求,靠自己好了。 我自己個人的觀點:51是一個基礎,而且還很重要,這是再我看了ARM之后感覺到的。它可以加速你的ARM學習速度,真得!不相信你試一試好了。 凡是要求一個速度、效率,不要做一些無用功,抓緊身邊的每一個一分鐘,人是活的,東西(知識、書)是死得,想要做的事情因此就簡單了。 2.我在網上看到了一篇很不錯的ARM文章,粘貼過來,為了和像我一樣在很少有人幫助的情況下,自學ARM 的難兄難弟們。 “ARM怎么入門”。我不是高手,仍然是菜鳥。 但是回想起自己當時的迷茫,特意寫了這篇東西,當作給和我一樣的兄弟姐妹的幫助吧。問這個問題的人多半不是已經工作的工程師,而是和我一樣是學生,所以這篇筆記就把看家當成我一樣的菜鳥,高手勿怪。 首先聲明:本人還沒有找工作,事實上處于研究生剛畢業,還沒開始找工作的空閑時間,44B0只是愛好所在,打發時間。 字串5 所有看法完全是自己的感受,不代表任何他人。錯了的觀點各位幫我糾正。再次補充:很多朋友看了上面的話就問我為什么研究生畢業了還不找工作:)說是打發時間,其實是因為研究生的時候帶了一個項目,申請提前畢業以后項目還有塊尾巴,答應導師把項目做完再走:)就這么簡單。男人總點負點責,呵呵 以下問題常被問到,我就想到哪說到哪吧。 二 ARM是硬件還是軟件 很難說,ARM是硬件,LINUX是軟件。ARM的硬件多半已經模塊化了,像我這樣把板子改成這樣的就算動的多的了,這同樣是ARM公司的戰略,再次佩服。 實際中的LINUX的開發工作更多,更耗時。從這方面說ARM應該算是軟件了。 在找工作中更是這樣,舉個例子,聯想里和ARM最接近的是“BIOS工程師”是軟件,MOTO里接近的是嵌入式LINUX工程師是軟件。而其他很多公司把嵌入式產品開發歸為硬件。所以,不要討論這個,好好玩轉自己的板子才是要害。實在不爽你就把自己叫“嵌入式開發工程師” 三 要不要買開發板 買哪家 我的答案是“在你個人的學習方法”,但是假如看家是需要看這騙筆記的水平,個人推薦還是買現成的。 1 買 買板子可以把注重力集中在軟件開發上,軟件開發(尤其是驅動)可以不必擔心自己硬件上的問題,我就是以便調試一邊寫驅動和程序,每次寫驅動前就要先確認硬件沒問題。另外,買板子更省錢和時間,我自己做的板子,原理圖PCB花了2周以上!制版又15天,回來以后焊接44B0 160個腳!那叫一個麻煩~~花了多少錢呢?2層板,制版費就300塊!當然我把接口都外引了,還做了個20X18的LCD背板,板子比較大。總體下來 元件 LCD屏 PCB=11XX塊!夠2410的了。 字串4 再有就是買的資料相對來說比較全,但是不要指望有技術支持!都是騙人的,賣你之后就不會理你。 2 做 自己做可以更了解底層硬件,可以按照自己的要求加東西,比如我就加了GPS模塊、 GPRS模塊 、SD卡模塊,擴了個IIC的35個鍵子的鍵盤、把LCD接口按照買的LCD改裝了,可以用FPC線直接連接。做的很爽的。玩一把嗎。 當然,你可以有策略的做,比如像我一樣,把RAM和ROM,網絡都保持和某現成的板子一樣,這樣他們的資料你就可以拿過來直接用,給自己留個退路。其他的如SD了 什么的自己做。都達到了~~就是費錢,費時間。 再有就是給做的朋友幾點建議:盡量拿到現成的板子,盡量多搜集其他板子的全套資料,一定要拿到一張沒問題的原理圖。 網上流傳的原理圖多數是龔俊03年畫的,再這里對龔俊表達一下我的敬意!!牛人! 但是那個圖有個小BUG,我指的是03版的,后來的沒這問題了。8019那地址線和地址有問題。還有人仿照他的PDF圖畫的SCH,更是漏洞百出!譴責!順便譴責把龔俊板子偷賣的人。 3 買哪家 個人感覺分3類吧 ARM 1)首先是ZLG的,資料非常的全,感覺他是真正想教你怎么開發ARM,而不是像有的公司自己技術都沒做好就做個板子出來賣錢。但是最大的不利就是價格太貴!而且主要是PHILIP的,貨源比較麻煩~~可能有人說21XX系列的不貴啊,那是總線不外擴的,只能跑UCOS,不能跑UCLINUX。但是說是話,21XX系列才是ARM7的價格性能結合點。ARM7最適合做工業控制,ARM普及,銷量都是怎么來的?都是ARM7來的,而44B0是典型的商業片子。但是,這里假如你看中的是為工作做預備,還是選能跑UCLINUX的吧。 但是仍然作為第一個推薦,因為菜鳥時期,合適的資料太重要了!!在這里被ZLG的務實精神感動!你看人家那代碼寫的。 2)感覺立宇泰的44B0不錯 硬件沒別的,就是資料比較全的說,不像有些家,原理圖直接拿人家的,還錯的~~ 3)找個最便宜的 好象最便宜的有賣350的吧?也是沒別的,就是即省了錢 還省時間搜集資料,至于資料全不全,別計較了~~硬件肯定好使就行吧。 四 要不要有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 BANYANT調試代理(不知道名對不,起這么個難記的,我一般都叫它“半羊”因為知道它那幾天剛吃了烤羊) 調試代理就是用它幫你使用更簡單的JTAG(便宜啊)來實現原本1K才賣的JTAG仿真器的大部分功能。JTAG調試原理看我另一篇筆記。簡單的就可以把他理解為你自己做的JTAG的驅動就行了。 ARM開??壇 調試代理還有很多種,什么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 UCLINUX包 UCLINUX的源碼包,不用多說了吧?建議大家用現成的先體會一下,然后再自己編譯,裁剪。因為單獨UCLINUX的編輯技術上比較簡單,但涉及的方面還是比較廣的。 7 VMWARE 老牌的虛擬機軟件,在一個機器上虛擬出一個機器裝LINUX(PC上用的),省得你往返開關機了。記得裝VMWARE-TOOLS,安裝方法在我另一篇筆記里。 六 有哪些書推薦 主要推薦ZLG的三本書,有這3本再加網絡就不用別的書了,其中主要推薦前2本,3是介紹體系結構的,也不錯 1 ARM嵌入式LINUX系統構建與驅動開發,北航版 驅動寫的很具體,前期開發介紹也很好 2 ARM 嵌入式系統實驗教程(二),北航版 有ZLG2200的原理圖,實驗程序和注釋,了解人家是怎么開發的。 3 ARM嵌入式系統基礎教程 最重要的是體系結構,匯編部分介紹,看看吧,增加理論素質。 4 44B0數據手冊 寫在這里是強調它的重要。 不推薦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比較靈活,最重要的是都是找工作的砝碼。 字串4 十 我用的什么板子 很多人問我這個問題,我特意寫過一個的。再說一次吧。 我是自己做的,RAM、ROM、8019等比較麻煩而當時的自己不理解的都按照龔俊的做的。保持其他不便的情況下做了如下改動。 1 加了串口通信的GPS模塊、 GPRS模塊。一個UART0,一個UART1,當與要用超級終端時用跳線切換。 2 SD卡,和7843觸摸屏 同時掛在SPI總線上,因為SPI只能掛一個設備,同時還做了I/O模擬的預備,把兩個設備又通過跳線掛在4個IO上。 3 擴了個IIC的35個鍵子的鍵盤 用的ZLG的7290,不占用CPU,最大支持6?個鍵子,只上了35個,其他留接口。 4 把LCD接口按照買的LCD改裝了,可以用FPC線直接連接。 所以改動雖然多,但真正很移植了,初期調試有關的并沒動,就是為了現在不那么菜的時候做預備:) 十一 開發流程 這里是我的開發流程 1 設計原理圖(含WIGGLER的JTAG訪真器) 2 設計PCB(含WIGGLER的JTAG訪真器) 3 制版 4 焊接電壓,確定電壓沒問題 5 焊接44B0 JTAG電路 WIGGLER的JTAG訪真器 周邊電路,用BANYANT 仿真器連接,BANYANT提示錯誤,但可以顯示44B0編號,好象是0X0F0F0F0F只類的,說明44B0沒問題 6 焊接晶體 RAM ROM 周邊電路,用BANYANT 仿真器連接,可以顯示正確的44B0了 7 用BANYANT 仿真器連接,開AXD,在命令行窗口操作RAM,看可不可以修改,可以的話(用內存窗口看RAM地址)RAM就沒問題 可以用這個命令“setmem 0xc000000,0xffffffff,32” 我的RAM掛在BANK6上 所以地址是0XC000000,你要是改了就也得改。 8 用我寫的《自己寫了個C工程模板又寫了個使用說明 》里的方法調試程序吧,寫個簡單的,我當時寫個LED閃爍的。看好使不。 9 把程序按照《FLASH燒寫總結 》里的燒到FLASH里,測試一下 10 按照《UBOOT 移植操作》移植UBOOT 11 按照《UCLINUX下載簡單說明》下個UCLINUX 12 看看驅動開發的方法,自己寫個驅動看看 13 還有很多事東西著你玩 呵呵 十二 關于JTAG訪真器 JTAG訪真器現在用的多是簡板的,一個244那種,用的沒什么不好。按照并口定義不同分幾種,建議選WIFFLER定義的,因為支持的軟件多。這個網上多的是,不多說了。 值得提的是有的JTAG訪真器原理圖上有跳線用來使能復位信號,這個一般不跳上。就是不用復位信號,因為JTAG協議里本身也可以控制44B0復位。當然,板子上的復位信號跳線也不用跳。 十三 哪個公司的ARM 這個是問題比較簡單。 1 ARM7主要就幾個公司的,三星,PHILIP,ATMEL的 ATMEL的有比較便宜的AT91SAM7S32 和AT91SAM7S64 專為8位應用產品量身定做,價格很便宜好象《3刀吧。和PHILIP的21XX差不多,資料太少,項目中選還不錯。其他兩家上面說了的,不多說了吧 2 ARM9 這個玩2410和2440的多吧,現在2440還比較火啊 可以考慮買個了。但是2410就比較便宜了,作為學習來說反到和不錯,推薦整一個:) 其實ARM9用的最多的領域應該是消費電子,比如手機PDA,而這上面用的多的應該是INTEL的和TI的吧。 但是INTEL的TI的入門材料少,價格高,自己看情況定吧。 |