ARM9
嵌入式處理器
ARM9系列處理器是英國ARM公司設計的主流嵌入式處理器,主要包括ARM9TDMI和ARM9E-S等系列。
ARM9圖1
融合了ARM920T™ ARM® Thumb® 處理器
– 工作於180 MHz時性能高達200 MIPS,存儲器管理單元
– 16-K 位元組的數據緩存,16-K位元組的指令緩存,寫緩衝器
– 含有調試通道的內部模擬器
– 中等規模的嵌入式宏單元結構( 僅針對256 BGA 封裝)
· 低功耗:VDDCORE電流為30.4 mA 待機模式電流為3.1 mA
· 附加的嵌入式存儲器
– SRAM為16K ;ROM為128K
· 外部匯流排介面(EBI)
– 支持SDRAM,靜態存儲器, Burst Flash,無縫連接的CompactFlash®,
SmartMedia™及NAND Flash
· 提高性能而使用的系統外設:
– 增強的時鐘發生器與電源管理控制器
– 兩個有雙PLL的片上振蕩器
– 低速的時鐘操作模式與軟體功耗優化能力
– 四個可編程的外部時鐘信號
– 包括周期性中斷、看門狗及第二計數器的系統定時器
– 有報警中斷的實時時鐘
– 調試單元、兩線UART並支持調試通道
– 有8 個優先順序的高級中斷控制器,獨立的可屏蔽中斷源,偽中斷保護
– 7個外部中斷源及1 個快速中斷源
– 有122個可編程I/O口線的四個32 位PIO控制器,各線均有輸入變化中斷及開漏能力
– 20通道的外設數據控制器(DMA)
· 10/100 Base-T 型乙太網卡介面
– 獨立的媒體介面(MII)或簡化的獨立媒體介面(RMII)
– 對於接收與發送有集成的28 位元組FIFO及專用的DMA 通道
· USB 2.0 全速(12 M比特/秒) 主機雙埠
– 雙片上收發器(208引腳PQFP封裝中僅為一個)
– 集成的FIFO及專用的DMA 通道
· USB 2.0 全速(12 M比特/秒) 器件埠
– 片上收發器, 2-K位元組可配置的集成FIFO
· 多媒體卡介面(MCI)
– 自動協議控制及快速自動數據傳輸
– 與MMC及SD存儲器卡兼容,支持兩個SD存儲器
· 3個同步串列控制器(SSC)
– 每個接收器與發送器有獨立的時鐘及幀同步信號
– 支持I2S模擬介面,時分復用
– 32比特的高速數據流傳輸能力
· 4個通用同步/非同步接收/發送器(USART)
– 支持ISO7816 T0/T1 智能卡
– 硬軟體握手
– 支持RS485 及高達115 Kbps的IrDA 匯流排
– USART1為全調製解調控制線
· 主機/從機串列外設介面(SPI)
– 8~ 16 位可編程數據長度,可連接4個外設
· 兩個 3 通道16 位定時/計數器(TC)
– 3個外部時鐘輸入,每條通道有2 個多功能I/O引腳
– 雙PWM 產生器,捕獲/波形模式,上加/下減計數能力
· 兩線介面(TWI)
– 主機模式支持,所有兩線Atmel EEPROM 支持
· 所有數字引腳的IEEE 1149.1 JTAG邊界掃描
· 電源供應
– VDDCORE,VDDOSC及VDDPLL電壓為:1.65V ~1.95V
– VDDIOP (外設I/O) 及VDDIOM (存儲器I/O)電壓為:1.65V~ 3.6V
ARM微處理器是一種高性能、低功耗的32位微處器,它被廣泛應用於嵌入式系統中。ARM9代表了ARM公司主流的處理器,已經在手持電話、機頂盒、數碼相機、GPS、個人數字助理以及網際網路設備等方面有了廣泛的應用。
以ARM9E-S為例介紹ARM9處理器的主要結構及其特點。ARM9E-S的結構如圖4所示。其主要特點如下:
⑵片內指令和數據SRAM,而且指令和數據的存儲器容量可調;
⑶片內指令和數據高速緩衝器(cache)容量從4K位元組到1M位元組;
⑷設置保護單元(protection unit),非常適合嵌入式應用中對存儲器進行分段和保護;
⑸採用AMBA AHB匯流排介面,為外設提供統一的地址和數據匯流排;
⑹支持外部協處理器,指令和數據匯流排有簡單的握手信令支持;
⑺支持標準基本邏輯單元掃描測試方法學,而且支持BIST(built-in-self-test);
⑻支持嵌入式跟蹤宏單元,支持實時跟蹤指令和數據。
ARM920T支持7種運行模式,分別為:
(1)用戶模式(usr),
ARM處理器正常的程序執行狀態;
(2)快速中斷模式 (fiq),
用於高速數據傳輸或通道處理;
(3)外部中斷模式(irq),
用於通用的中斷處理;
(4)管理模式(svc),
操作系統使用的保護模式;
(5)數據訪問終止模式(abt),
當數據或指令預取終止時進入該模式,可用於虛擬存儲及存儲保護;
(6)系統模式(sys),
運行具有特權的操作系統任務;
(7)未定義指令中止模式(und)
當未定義的指令執行時進入該模式,可用於支持硬體協處理器的軟體模擬。
ARM微處理器的運行模式可以通過軟體改變,也可以通過外部中斷或異常處理改變。大多數的應用程序運行在用戶模式下,當處理器運行在用戶模式下時,某些被保護的系統資源是不能被訪問的。除用戶模式以外,其餘的6種模式稱為特權模式;其中除去用戶模式和系統模式以外的5種又稱為異常模式,常用於處理中斷或異常,以及訪問受保護的系統資源等情況。
從編程的角度看,ARM920T微處理器的工作狀態一般有兩種:
(1)ARM狀態,此時處理器執行32位的、字對齊的ARM指令;
(2)Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。
ARM指令集和Thumb指令集均有切換處理器狀態的指令,在程序的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且,處理器的工作狀態的轉變並不影響處理器的工作模式和相應寄存器中的內容。但ARM微處理器在開始執行代碼時,應該處於ARM
狀態。
當操作數寄存器的狀態位(位0)為1時,可以採用執行BX指令的方法,使微處理器從
ARM狀態切換到Thumb狀態。此外,當處理器處於Thumb狀態時發生異常(如IRQ、FIQ、Undef、Abort、SWI等),當異常處理返回時,自動切換回Thumb狀態。當操作數寄存器的狀態位為0時,執行BX指令可以使微處理器從Thumb狀態切換到ARM狀態。此外,在處理器進行異常處理時,將PC指針放入異常模式鏈接寄存器中,並從異常向量地址開始執行程序,也可以使處理器切換到ARM狀態。
ARM920T體系結構的存儲器格式
ARM920T體系結構將存儲器看做是從零地址開始的位元組的線性組合。從0位元組到3位元組放置第1個存儲的字數據,從第4個位元組到第7個位元組放置第2個存儲的字數據,依次排列。作為32位的微處理器,ARM92OT體系結構所支持的最大定址空間為4GB。
ARM92OT體系結構可以用兩種方法存儲字數據,分別稱為大端格式和小端格式。大端格式中字數據的高位元組存儲在低地址中,而字數據的低位元組則存放在高地址中
ARM9圖2
ARM9圖3
雖然ARM7和ARM9內核架構相同,但ARM7處理器採用3級流水線的馮·諾伊曼結構;,而ARM9採用5級流水線的哈佛結構。增加的流水線設計提高了時鐘頻率和并行處理能力。5級流水線能夠將每一個指令處理分配到5個時鐘周期內,在每一個時鐘周期內同時有5個指令在執行。在常用的晶元生產工藝下,ARM7一般運行在100MHz左右,而ARM9則至少在200MHz以上。
指令周期的改進對於處理器性能的提高有很大的幫助。性能提高的幅度依賴於代碼執行時指令的重疊,這實際上是程序本身的問題。對於採用最高級的語言,一般來說,性能的提高在30%左右。
ARM7一般沒有MMU(內存管理單元),(ARM720T有MMU)。
ARM9一般是有MMU的,ARM9940T只有MPU ,不是一個完整的MMU。
這一條很重要,MMU單元是大型操作系統必需的硬體支持,如LINUX;WINCE等。這就是說,ARM7一般只能運行小型的實時系統如UCOS-II,eCOS等,而ARM9無此限制,一般的操作系統都可以移植。其實即使ARM720T能支持LINUX;WINCE等系統,也鮮有人用,因為以ARM7的運行速度跑這種大型操作系統,實在有點吃力。再者兩者的應用領域明顯不同,也無此必要。
·EP930x處理器EP9301/EP9302是CirrusLogic公司新近推出的系列arm9晶元中的一種極具價格優勢的處理器,它的高性能設計是許多消費和工業電子產品的理想選擇。EP9301擁有先進的166兆赫ARM920T處理器(Ep9302為200兆赫),66兆赫系統匯流排(EP9302為100兆赫系統匯流排)以及支持Linux、WindowsCE和其它許多嵌入式操作系統的存儲器管理器單元(MMU)。ARM920T的32位微處理器結構帶有一個5階管線,可以極低的功耗提供優異的性能。16K指令高速緩存和16K數據高速緩存可為現有的程序和數據提供零等待時間,或者也可被鎖定,以確保對關鍵指令和數據的無延遲存取。另外Ep9302具有MaverickCrunch協處理器。這一協處理器顯著提高了ARM920T的單/雙精度整數及浮點運算能力。當對數字音頻和視頻格式進行編碼、執行工業控制運算以及其它運算密集型計算和數據處理功能時,該協處理器可使EP9302具有高速精確計算能力。
常見問答:
⒈學習S3C2440有什麼意義?
答:原因一,S3C2440是目前網路上資料、論壇最多的arm9處理器,對於學習或者開發者都能很便利的獲取資料。原因二,S3C2440能夠運行linux、wince等大型操作系統,構成非常典型的cpu+os嵌入式系統,嵌入式處理器種類繁多,不可能每一款都要去學習,一旦掌握了一個典型的cpu+os系統的開發就可以觸類旁通了。
⒉ARM9的學習應該如何著手?
答:對於基礎差的朋友,從單片機原理、c語言、操作系統原理下下工夫;對於學習過單片機的朋友,估計學arm最大的難點在於操作系統,重點熟悉下操作系統原理;對於基礎已經不錯的朋友,下工夫專研下嵌入式資料庫、驅動編程、通信協議編程、內核裁剪;對於不清楚自己層次的朋友,可以直接拿板子跑,不懂的上網查資料,實踐多了自然理解;最後就是切忌浮躁了,有的朋友今天裝個ubuntu明天裝個debian,後天裝個fedroa...裝了七八個版本最後也沒搞明白怎麼做開發,建議練習好基本功,什麼技術都能很快掌握。
⒊嵌入式的職業前景如何?
答:硬說嵌入式比公務員前景還好,那是瞎說。對於沒有什麼背景,性格不太適合做銷售的人,學習嵌入式練就一技之長還是不錯的,嵌入式軟硬結合不容易遭遇職業瓶頸,入門門檻高,待遇也不錯,是個可持續發展的職業方向。
教程推薦:
經常有人讓我推薦幾本書,我覺得這幾本還不錯,但是我也很少看書,主要逛論壇下載電子資料。
《鳥哥的Linux私房菜基礎學習篇》鳥哥人民郵電出版社(不是講開發的,用於熟悉linux環境)
《Linux程序設計(第3版)》馬修人民郵電出版社(主要講linux開發的)
《ARM嵌入式Linux系統開發從入門到精通》李亞峰清華大學出版社(結合arm講linux開發的)
《ARM體系結構與編程》杜春雷清華大學出版社(講arm的好書)
《LINUX內核源代碼情景分析(上/下冊)》毛德操浙江大學出版社(高手必備,初學不建議購買)
《WindowsCE工程實踐完全解析(WindowsCE項目開發實踐叢書)》李大為中國電力出版社(講wince的好書)
《WindowsCE開發實例精粹(嵌入式技術與應用叢書)》張冬泉電子工業出版社(講wince的好書)
《μC/OS-2源碼公開的實時嵌入式操作系統》中國電力出版社邵貝貝(看完這本書再實驗下那5個例子,ucos就掌握了)
⒈loads 指令與n stores指令
指令周期數的改進最明顯的是loads指令和stores指令。從ARM7到ARM9這兩條指令的執行時間減少了30%。指令周期的減少是由於ARM7和ARM9兩種處理器內的兩個基本的微處理結構不同所造成的。
⑴ARM9有獨立的指令和數據
存儲器介面,允許處理器同時進行取指和讀寫數據。這叫作改進型
哈佛結構。而ARM7隻有數據存儲器介面,它同時用來取指令和數據訪問。
⑵5級流水線引入了獨立的存儲器和寫迴流水線,分別用來訪問存儲器和將結果寫回
寄存器。
以上兩點實現了一個周期完成loads指令和stores指令。
⒉互鎖(interlocks)技術
當指令需要的數據因為以前的指令沒有執行完而沒有準備好就會產生管道互鎖。當管道互鎖發生時,硬體會停止這個指令的執行,直到數據準備好為止。雖然這種技術會增加代碼執行時間,但是為初期的設計者提供了巨大的方便。編譯器以及彙編程序員可以通過重新設計代碼的順序或者其他方法來減少管道互鎖的數量。
⒊分枝指令
ARM9和ARM7的分枝指令周期是相同的。而且ARM9TDMI和ARM9E-S並沒有對分枝指令進行預測處理。
TI公司的OMAP730是最新的無線通信基帶信號處理器。該處理器是TI的GPRS Class 12通信模塊與專用於應用處理的ARM926通用處理器(GPP)的集成。由於GPP的速度可達200MHz,因此OMAP730具有兩倍於上一代OMAP710處理器的應用處理性能。如同所有的OMAP處理器一樣,OMAP730可支持領先的移動
操作系統,其中包括Microsoft的智能電話與Pocket PC PhoneEdition、Symbian OS與Series 60、Palm OS以及Linux。
ATMEL是ARM公司重要的合作夥伴,其基於ARM9系列AT91SAM9x5系列晶元應用非常廣泛,而作為ARM公司的中國區代理商,米爾科技開發了針對ARM9的全功能開發板,其中有MDK常式,LINUX系統和android系統,開發板詳情:
MYD-SAM9X25開發板
MYD-SAM9X35開發板
MYD-SAM9G15開發板
MYD-SAM9G25開發板
MYD-SAM9G35開發板