a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > ARM學習資料之ARM簡介及編程

ARM學習資料之ARM簡介及編程

——
作者: 時間:2007-02-07 來源: 收藏

ARM簡介及編程


     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開放其處理器授權,因此,用戶在市場上可以在多家整機廠商中進行選擇,從而保證了這一市場的競爭性。

 
 
2. ARM芯片CL-PS7111主要特點[BLOCKQUOTE][BLOCKQUOTE]
 
電平2.7v/3.3v.相對應CPU工作頻率13MHz/18MHz. 13MHz位節電模式, 性能相當于33MHz Inter 486 PC
ARM710A內核
ARM7 CPU
8K 4向緩存(cache)
MMU 帶有64入口TLB(Transition Look-aside Buffer)

DRAM控制器
支持16位和32位DRAM

ROM/SRAM/Flash Memory 控制
可譯碼4,5或6個獨立的256M存儲空間段
每個存儲段支持8位,16位和32位操作,并支持分頁模式
可編程ROM/SRAM/Flash Memory

支持兩個低功耗CL-PS6700 PC卡(PCMCIA)控制器
2K 片內 SRAM用于程序快速執行
片內Boot ROM (128Byte)
兩個同步串行接口
支持SPI,或Microwire2兼容
音頻解碼器(Audio Codec)

27位通用接口GPIO(general-purpose I/O port)
3個8位和1個3位GPIO port
支持鍵盤陣列掃描(Scanning keyboard matrix)

兩個異步串口 UARTs
支持高達115.2K 波特率
內有兩個接收發送(TX,RX) 16Bytes FIFOs緩沖
支持MODEM控制信號

DC-to-DC轉換器接口
提供兩個96KHz時鐘輸出,通過編程duty ratio(1/16---15/16)操作

LCD控制器
直接信號掃描板接口,單色LCD
面板的大小可編程從16到1024個像素,16個像素為一個單位
視頻幀大小可編程到128K byte
每個像素點的位數可編程1,2,4位

計時器和實時時鐘
兩個16位計時器(Timer counter)和一個32位實時時鐘(RTC)
[/BLOCKQUOTE][/BLOCKQUOTE]
 
3. 調試工具及調試方法[BLOCKQUOTE]
ARM Project Manager (APM) include ARM Debuger: 這個工具由ARM提供主要是開發程序, 編程調試ARM芯片, 有相當不錯的開發環境和遠端調試功能, 支持匯編和C. 它帶有一個ARM自己的嵌入式操作系統ARM Angel, 用戶可以在它的上面開發自己的嵌入式軟件, 不過這個操作系統不是實時多任務的.
[/BLOCKQUOTE][BLOCKQUOTE]
通過計算機串口與處理器UART相連,設置計算機的超級終端 ( Hyper Terminal ), 通過超級終端察看硬件情況(寄存器設置,數據等)和程序運行情況,當然程序重要加入向UART送出數據的指令, 用Beep報警也是經常用的. 這種調試方法是用于底層調試硬件,找出硬件存在的問題.
VxWorks 在Shell 不能正常運行前,也是采取這種方法來調試程序,不過一般不是硬件問題,而是BSP中存在的問題,需要根據硬件,修改BSP.

 [/BLOCKQUOTE]
4. ARM7 編程要點及示例
ARM編程可參考程序示例 ARM_Boot Flash ROM驅動
VxWorks image 裝入ARM的過程:
[BLOCKQUOTE]
ARM7 有兩種運行模式, Boot 模式和 Normal 模式, Boot模式主要是把程序裝入(down load 或load )Flash ROM中用的, Normal模式是一般運行程序用的.
ARM7 Boot 模式時, Flash 的地址是0x70000000片選型號是CS0 (Normal模式下,Flash地址為0x00000000)
ARM7內部有128byte的BootROM和2K的SRAM,當需要Download VxWorks image時,ARM啟動采用Boot方式啟動運行存在128byte BootROM中的程序初始化ARM內部的COM口,從COM口接受數據到2K的SRAM,這2K程序是用來真正Load VxWorks的,2K程序Load完畢后系統自動跳轉到這2K程序執行,它的作用是再次初始化內部的COM口,通過COM口接受VxWorks到DRAM,然后由DRAM寫入FLASH。在主板2K SRAM運行的Boot Load程序執行過程,可參看程序示例中ARM Boot Load程序

寫入完畢后,切換到Normal模式重新啟動系統,系統自動跳到FLASH 0X00000000開始運行VXWORKS。

用PC機上的COM1與ARM內部的UART1(COM)通信來Download VxWorks。

[/BLOCKQUOTE]
主要管腳定義
[BLOCKQUOTE]
32條數據線: D0-------D31
28條地址線: A0-------A27 little endian 定義, 相對應數據排列 0 1 2 3 4 5 6--------27
6條片選信號腳: CS0-------CS5, 其實作用相當于地址線 A28------A31
4個8位的PORT口: PORT A, PORT B , PORT D主要用于外圍芯片信號的控制. PORT E有雙作用.
例如 PORT A 控制鍵盤的行信號, PORT B 用于RS232, PORT D 用于控制MODEM, FPGA..
外部中斷信號EINT, EXTFIQ.
編程時要根據主板原理圖和硬件手冊進行. [BLOCKQUOTE]
看硬件圖紙, 該芯片和CPU的那些管腳連結. 特別是 PORT 口和片選線.
查CPU手冊, 得到PORT 口和該片選的硬件地址.
編程: 用PORT口直接對芯片操作,如開,關,RESET等, 用片選地址和芯片內地址結合對該外圍芯片操作.
[/BLOCKQUOTE][/BLOCKQUOTE]
 
Exception vectors, 中斷向量表及中斷分配

Vector 地址 [BLOCKQUOTE]
Exception[/BLOCKQUOTE] Exception Mode Priority(1=High)
0x0 [BLOCKQUOTE]
Reset[/BLOCKQUOTE] Svc 1
0x4 [BLOCKQUOTE]
Undefined Instruction[/BLOCKQUOTE] Undef 6
0x8 [BLOCKQUOTE]
Software Interrupt[/BLOCKQUOTE] Svc 6
0xC [BLOCKQUOTE]
Prefetch Abort[/BLOCKQUOTE] Abort 5
0x10 [BLOCKQUOTE]
Data Abort[/BLOCKQUOTE] Abort 2
0x14 [BLOCKQUOTE]
Reserved[/BLOCKQUOTE] Not applicable Not applicable
0x18 [BLOCKQUOTE]
Interrupt (IRQ)[/BLOCKQUOTE] irq 4
0x1C [BLOCKQUOTE]
Fast Interrupt (FIQ)[/BLOCKQUOTE] Fiq 3
[BLOCKQUOTE]
 [/BLOCKQUOTE][BLOCKQUOTE]
這個向量表必須要放置在系統地址0x00000000 (一般是邏輯地址, 即經過MMU映射后的地址)處.[/BLOCKQUOTE][BLOCKQUOTE]
一般是在這些地址上放跳轉指令 BL, 跳到相應的地址空間執行相應的程序.[/BLOCKQUOTE][BLOCKQUOTE]
如系統執行從0x00000000 Reset開始, Reset 跳轉到某一地址開始運行操作系統.[/BLOCKQUOTE][BLOCKQUOTE]
 [/BLOCKQUOTE][BLOCKQUOTE]
程序示例,中斷向量表 (ARM asm):
 
__VectorStart ; Start of ARM processor vectors
LDR pc,ResetV ; 00 - Reset
LDR pc,UndefV ; 04 - Undefined instructions
LDR pc,SWIV ; 08 - SWI instructions
LDR pc,PAbortV ; 0C - Instruction fetch aborts
LDR pc,DAbortV ; 10 - Data access aborts
LDR pc,UnusedV ; 14 - Reserved (was address exception)
LDR pc,IRQV ; 18 - IRQ interrupts
LDR pc,FIQV ; 1C - FIQ interrupts[/BLOCKQUOTE]
 
 
中斷號分配 (FIQ, IRQ)中斷類型 中斷號
Name
說明
FIQ 0 外部中斷 EXTFIQ 管腳 NEXT FIQ
… … … …
IRQ 5 外部中斷 EINT1 管腳 NEINT1
IRQ 6 外部中斷 EINT2 管腳 NEINT2
IRQ 7 外部中斷 EINT3 管腳 NEINT3
… … … …
IRQ 12 內部中斷 UTXINT1 UART1 TX FIFO 為空
… … … …
[BLOCKQUOTE]
 [/BLOCKQUOTE][BLOCKQUOTE]
中斷號也是寄存器INTMR和INTSR的位,所以在ARM中中斷的編程要點是[/BLOCKQUOTE][BLOCKQUOTE]
看硬件圖紙, 該外設和CPU的那一個管腳連結.
查CPU手冊, 得到中斷號及INTMR,INTSR的地址.
編程
[/BLOCKQUOTE][BLOCKQUOTE]
注: 如果不是寫底層driver, 只是在系統上層編程(如VxWorks, Linux) 知道中斷號即可.[/BLOCKQUOTE][BLOCKQUOTE]
程序示例(VxWorks): [/BLOCKQUOTE][BLOCKQUOTE]
//登記中斷號 5, 和相應的中斷例程 ComISR.[/BLOCKQUOTE][BLOCKQUOTE]
intConnect ( ( VOIDFUNCPTR * ) 5, ComISR, 0 ) ; [/BLOCKQUOTE][BLOCKQUOTE]
//使能這中斷[/BLOCKQUOTE][BLOCKQUOTE]
intEnable ( ( VOIDFUNCPTR * ) 5 );[/BLOCKQUOTE][BLOCKQUOTE]
……[/BLOCKQUOTE][BLOCKQUOTE]
ARM Interrupts: ARM processors implement fast and normal level of interrupt,signalled externally, synchronise interrupts before an exception is raised. A fast interrupt requst (FIQ) will desable subsequent normal and fast interrupt by setting the I and F bit in CPSR,and a normal interrup request(IRQ) will disable subsequent normal interrupt by setting I bit in CPSR.
 
計時器中斷編程過程[BLOCKQUOTE]
ARM7一般內部有兩個16位計時器(Timer counter)和一個32位實時時鐘(RTC),計時器中斷屬于IRQ中斷,這里以計時器1為例敘述一下中斷的編程過程
設置interrup mask INTMR1寄存器 0x80000240 第8位TC1OI計時器1為使能. 在0x800000300 計時器 1 的數據寄存器TC1D寫入指定數據,這樣數據開始從這個給定的數開始遞減計數,計數遞減至 0 后,會產生一個溢出underflow IRQ中斷請求,中斷狀態寄存器INTSR1 0x80000240 第8位TC1OI置位.系統會跳到中斷向量表地址 0x00000018 處,執行相應的中斷程序,中斷程序通過判斷中斷的類型(判斷中斷狀態寄存器的位),來執行相應的中斷服務程序ISR. 中斷狀態寄存器標志位復位,計時器開始重新開始計時.
[/BLOCKQUOTE]
 [/BLOCKQUOTE]
存儲空間管理單元(MMU)

物理地址映射
重點在于片選地址CS的選取,另外MMU映射需要參考這個物理地址[BLOCKQUOTE]
 [/BLOCKQUOTE][BLOCKQUOTE]
ARM7 物理地址映射表[/BLOCKQUOTE]地址
內容
大小
備注
0xF000.0000 Unused 256Mbytes
0xE000.0000 Unused 256Mbytes
0xD000.0000 DRAM Bank 1 256Mbytes
0xC000.0000 DRAM Bank 0 256Mbytes 外接DRAM
0x8000.2000 Unused --1Gbytes
0x8000.0000 內部寄存器地址 8Kbytes 主要的I/O和控制
0x7000.0000 Boot ROM 128 bytes 片內,封有Boot程序
0x6000.0000 On-chip SRAM 2 Kbytes 片內,存放Load程序
0x5000.0000 PCMCIA-1(NCS[5]) 4*64 Mbytes
0x4000.0000 PCMCIA-0(NCS[4]) 4*64 Mbytes
0x3000.0000 外部擴展(NCS[3]) 256Mbytes
0x2000.0000 外部擴展(NCS[2]) 256Mbytes
0x1000.0000 ROM Bank 1(NCS[1]) 256Mbytes
0x0000.0000 ROM Bank 0(NCS[0]) 256Mbytes 外接Flash ROM

 

MMU 虛擬(邏輯)地址和物理地址的映射實例[BLOCKQUOTE]
Vxworks支持的ARM架構的處理器,一般是RAM的起始位置為0x0,而實際上ARM的物理地址0x0是ROM的起始地址,RAM在高位地址.這就需要系統在Boot過程中,執行MMU程序,重新映射RAM和ROM的地址.即RAM起始地址為0x0.[/BLOCKQUOTE]
MMU主要有ARM7中協處理器coprocessor 15控制,coporocessor主要控制:[BLOCKQUOTE]
片內的MMU
指令和數據緩存(IDC)
Write Buffer(WB)

MMU有兩層頁表(two-level page table)用來進行虛擬地址向物理地址轉換,CP15定義16個寄存器,只有MRC和MCR指令才能對它們操作.
在VxWorks系統中,MMU表分成兩部分:boot up table和final table.在文件ramAtHigh.h中定義.該表在文件romInit.s中初始化,語句為:
BL _ramAtHigh_1(2)[/BLOCKQUOTE]

MMU映射實例
虛擬(邏輯)地址(VxWorks系統) 硬件物理地址RAM 首地址 0x0000.0000
Low Address 0x0000.1000
High Address 0x0060.0000
ROM   0x0100.0000
 
 
 
其他的地址邏輯地址和物理地址映射地址不變
0x8000.0000 內部寄存器
..................
.................

相同的顏色映射對應的地址
 
 
 
 
 
  ROM 0x0000.0000 VxWorks image和文件系統
RAM 首地址 0xC000.0000 存放LCD,MMU表等
0xC004.0000 中斷向量表等
0xC004.1000 VxWorks運行位置
0xC064.0000 VxWorks從ROM解壓后Copy的位置

其他的地址映射地址不變
0x8000.0000 內部寄存器
..............
..............

 

 
其中,Low Address,High Address在系統配置文件config.h和Makefile中設置,參見BSP文件示例
 
 

 


 



關鍵詞: ARM學習

評論


技術專區

關閉