<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM簡(jiǎn)介及編程

ARM簡(jiǎn)介及編程

作者: 時(shí)間:2011-12-10 來(lái)源:網(wǎng)絡(luò ) 收藏
1.(摘錄)
   ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),設計了大量高性能、廉價(jià)、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點(diǎn)。適用于多種領(lǐng)域,比如嵌入控制、消費/教育類(lèi)多媒體、DSP和移動(dòng)式應用等。
   ARM將其技術(shù)授權給世界上許多著(zhù)名的半導體、軟件和OEM廠(chǎng)商,每個(gè)廠(chǎng)商得到的都是一套獨一無(wú)二的ARM相關(guān)技術(shù)及服務(wù)。利用這種合伙關(guān)系,ARM很快成為許多全球性RISC標準的締造者。
   目前,總共有30家半導體公司與ARM簽訂了硬件技術(shù)使用許可協(xié)議,其中包括Intel、IBM、LG半導體、NEC、SONY、菲利浦和國民半導體這樣的大公司。至于軟件系統的合伙人,則包括微軟、升陽(yáng)和MRI等一系列知名公司。
   ARM架構是面向低預算市場(chǎng)設計的第一款RISC微處理器。
   2.產(chǎn)品介紹
   ARM提供一系列內核、體系擴展、微處理器和系統芯片方案。由于所有產(chǎn)品均采用一個(gè)通用的軟件體系,所以相同的軟件可在所有產(chǎn)品中運行(理論上如此)。典型的產(chǎn)品如下。
   ①CPU內核
   --ARM7:小型、快速、低能耗、集成式RISC內核,用于移動(dòng)通信。
   -- ARM7TDMI(Thumb):這是公司授權用戶(hù)最多的一項產(chǎn)品,將ARM7指令集同Thumb擴展組合在一起,以減少內存容量和系統成本。同時(shí),它還利用嵌入式ICE調試技術(shù)來(lái)簡(jiǎn)化系統設計,并用一個(gè)DSP增強擴展來(lái)改進(jìn)性能。該產(chǎn)品的典型用途是數字蜂窩電話(huà)和硬盤(pán)驅動(dòng)器。
   --ARM9TDMI:采用5階段管道化ARM9內核,同時(shí)配備Thumb擴展、調試和Harvard總線(xiàn)。在生產(chǎn)工藝相同的情況下,性能可達ARM7TDMI的兩倍之多。常用于連網(wǎng)和頂置盒。
   ②體系擴展
   -- Thumb:以16位系統的成本,提供32位RISC性能,特別注意的是它所需的內存容量非常小。
   ③嵌入式ICE調試
   由于集成了類(lèi)似于ICE的CPU內核調試技術(shù),所以原型設計和系統芯片的調試得到了極大的簡(jiǎn)化。
   ④微處理器
   --ARM710系列,包括ARM710、ARM710T、ARM720T和ARM740T:低價(jià)、低能耗、封裝式常規系統微型處理器,配有高速緩存(Cache)、內存管理、寫(xiě)緩沖和JTAG。廣泛應用于手持式計算、數據通信和消費類(lèi)多媒體。
   --ARM940T、920T系列:低價(jià)、低能耗、高性能系統微處理器,配有Cache、內存管理和寫(xiě)緩沖。應用于高級引擎管理、保安系統、頂置盒、便攜計算機和高檔打印機。
   --StrongARM:性能很高、同時(shí)滿(mǎn)足常規應用需要的一種微處理器技術(shù),與DEC聯(lián)合研制,后來(lái)授權給Intel。SA110處理器、SA1100 PDA系統芯片和SA1500多媒體處理器芯片均采用了這一技術(shù)。
   --ARM7500和ARM7500FE:高度集成的單芯片RISC計算機,基于一個(gè)緩存式ARM7 32位內核,擁有內存和I/O控制器、3個(gè)DMA通道、片上視頻控制器和調色板以及立體聲端口;ARM7500FE則增加了一個(gè)浮點(diǎn)運算單元以及對EDO DRAM的支持。特別適合電視頂置盒和網(wǎng)絡(luò )計算機(NC)。

Windows CE的Pocket PC只支持ARMWindows CE可支持多種嵌入式處理器,但基于Windows CE的Pocket PC則只支持ARM一種。微軟在對SH3、MIPS、ARM等嵌入式處理器做了評估后認為,ARM是一種性?xún)r(jià)比較好的選擇。由于目前ARM在手持設備市場(chǎng)占有90%以上的份額,只支持ARM,可以有效地縮短應用程序開(kāi)發(fā)與測試的時(shí)間,也降低了研發(fā)費用。由于A(yíng)RM開(kāi)放其處理器授權,因此,用戶(hù)在市場(chǎng)上可以在多家整機廠(chǎng)商中進(jìn)行選擇,從而保證了這一市場(chǎng)的競爭性。

2. ARM芯片CL-PS7111主要特點(diǎn)

電平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個(gè)獨立的256M存儲空間段
每個(gè)存儲段支持8位,16位和32位操作,并支持分頁(yè)模式
可編程ROM/SRAM/Flash Memory
支持兩個(gè)低功耗CL-PS6700 PC卡(PCMCIA)控制器 2K 片內 SRAM用于程序快速執行片內Boot ROM (128Byte)

兩個(gè)同步串行接口

支持SPI,或Microwire2兼容
音頻解碼器(Audio Codec)
27位通用接口GPIO(general-purpose I/O port)

3個(gè)8位和1個(gè)3位GPIO port
支持鍵盤(pán)陣列掃描(Scanning keyboard matrix)
兩個(gè)異步串口 UARTs

支持高達115.2K 波特率
內有兩個(gè)接收發(fā)送(TX,RX) 16Bytes FIFOs緩沖
支持MODEM控制信號
DC-to-DC轉換器接口

提供兩個(gè)96KHz時(shí)鐘輸出,通過(guò)編程duty ratio(1/16---15/16)操作
LCD控制器

直接信號掃描板接口,單色LCD
面板的大小可編程從16到1024個(gè)像素,16個(gè)像素為一個(gè)單位
視頻幀大小可編程到128K byte
每個(gè)像素點(diǎn)的位數可編程1,2,4位
計時(shí)器和實(shí)時(shí)時(shí)鐘

兩個(gè)16位計時(shí)器(Timer counter)和一個(gè)32位實(shí)時(shí)時(shí)鐘(RTC)
3. 調試工具及調試方法

ARM Project Manager (APM) include ARM Debuger: 這個(gè)工具由ARM提供主要是開(kāi)發(fā)程序, 編程調試ARM芯片, 有相當不錯的開(kāi)發(fā)環(huán)境和遠端調試功能, 支持匯編和它帶有一個(gè)ARM自己的嵌入式操作系統ARM Angel, 用戶(hù)可以在它的上面開(kāi)發(fā)自己的嵌入式軟件, 不過(guò)這個(gè)操作系統不是實(shí)時(shí)多任務(wù)的.

通過(guò)計算機串口與處理器UART相連,設置計算機的超級終端 ( Hyper Terminal ),通過(guò)超級終端察看硬件情況(寄存器設置,數據等)和程序運行情況,當然程序重要加入向UART送出數據的指令, 用Beep報警也是經(jīng)常用的. 這種調試方法是用于底層調試硬件,找出硬件存在的問(wèn)題.

VxWorks 在Shell 不能正常運行前,也是采取這種方法來(lái)調試程序,不過(guò)一般不是硬件問(wèn)題,而是BSP中存在的問(wèn)題,需要根據硬件,修改BSP.
需要說(shuō)明的是:上述方法是在沒(méi)有硬件仿真器的情況下采用的,仿真器是底層調試硬件程序最好,最簡(jiǎn)便直觀(guān)的辦法?!?BR>
4. ARM7 編程要點(diǎn)及示例

VxWorks image 裝入ARM的過(guò)程:

ARM7 有兩種運行模式, Boot 模式和 Normal 模式, Boot模式主要是把程序裝入(down load 或load )Flash ROM中用的, Normal模式是一般運行程序用的ARM7 Boot 模式時(shí), Flash 的地址是0x70000000片選型號是CS0? (Normal模式下,Flash地址為0x00000000),ARM7內部有128byte的BootROM和2K的SRAM,當需要Download VxWorks image時(shí),ARM啟動(dòng)采用Boot方式啟動(dòng)運行存在128byte BootROM中的程序初始化ARM內部的COM口,從COM口接受數據到2K的SRAM,這2K程序是用來(lái)真正Load VxWorks的,2K程序Load完畢后系統自動(dòng)跳轉到這2K程序執行,它的作用是再次初始化內部的COM口,通過(guò)COM口接受VxWorks到DRAM,然后由DRAM寫(xiě)入FLASH。在主板2K SRAM運行的Boot Load程序執行過(guò)程。 寫(xiě)入完畢后,切換到Normal模式重新啟動(dòng)系統,系統自動(dòng)跳到FLASH 0X00000000開(kāi)始運行VXWORKS。用PC機上的COM1與ARM內部的UART1(COM)通信來(lái)Download VxWorks。

主要管腳定義
32條數據線(xiàn): D0-------D31

28條地址線(xiàn): A0-------A27 ??little endian 定義, 相對應數據排列 0 1 2 3 4 5 6--------27

6條片選信號腳: CS0-------CS5, 其實(shí)作用相當于地址線(xiàn) A28------A31

4個(gè)8位的PORT口: PORT A, PORT B , PORT D主要用于外圍芯片信號的控制. PORT E有雙作用.

例如 PORT A 控制鍵盤(pán)的行信號, PORT B 用于RS232, PORT D 用于控制MODEM, FPGA..

外部中斷信號EINT, EXTFIQ.

編程時(shí)要根據主板原理圖和硬件手冊進(jìn)行.

看硬件圖紙, 該芯片和CPU的那些管腳連結. 特別是 PORT 口和片選線(xiàn).

查CPU手冊, 得到PORT 口和該片選的硬件地址.

編程: 用PORT口直接對芯片操作,如開(kāi),關(guān),RESET等, 用片選地址和芯片內地

址結合對該外圍芯片操作.

Exception vectors, 中斷向量表及中斷分配
Vector 地址 Exception
Exception Mode Priority(1=High)
0x0 Reset
Svc 1
0x4 Undefined Instruction
Undef 6
0x8 Software Interrupt
Svc 6
0xC Prefetch Abort
Abort 5
0x10 Data Abort
Abort 2
0x14 Reserved
Not applicable Not applicable
0x18 Interrupt (IRQ)
irq 4
0x1C Fast Interrupt (FIQ)
Fiq 3

這個(gè)向量表必須要放置在系統地址0x00000000 (一般是邏輯地址, 即經(jīng)過(guò)MMU映射后的地址)處.

一般是在這些地址上放跳轉指令 BL, 跳到相應的地址空間執行相應的程序.

如系統執行從0x00000000 Reset開(kāi)始, Reset 跳轉到某一地址開(kāi)始運行操作系統.

程序示例,中斷向量表 (ARM asm):
__VectorStart ; Start of ARM processor vec

DR 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

中斷號分配 (FIQ, IRQ)

中斷類(lèi)型 中斷號 Name
說(shuō)明

FIQ 0 外部中斷 EXTFIQ 管腳 NEXT FIQ
… … … …
IRQ 5 外部中斷 EINT1 管腳 NEINT1
IRQ 6 外部中斷 EINT2 管腳 NEINT2
IRQ 7 外部中斷 EINT3 管腳 NEINT3
… … … …
IRQ 12 內部中斷 UTXINT1 UART1 TX FIFO 為空
… … … …

中斷號也是寄存器INTMR和INISR的位,所以在A(yíng)RM中中斷的編程要點(diǎn)是看硬件圖紙,該外設和CPU的那一個(gè)管腳連結.

A.查CPU手冊,得到中斷號及INTMR,INTSR的地址.

B.編程

注:如果不是寫(xiě)底層driver,只是在系統上層編程(如VxWorks,Linux)知道中斷即可.

程序示例( VxWorks):

//登記中斷號,和相應的中斷全程ComISR.

intConnect ( ( VOIDFUNCPTR * ) 5, ComISR, 0 ) ;

//使能這中斷

intEnable ( ( VOIDFUNCPTR * ) 5 );

計時(shí)器中斷編程過(guò)程

ARM7一般內部有兩個(gè)16位計時(shí)器(Timer counter)和一個(gè)32位實(shí)時(shí)時(shí)鐘(RTC),計時(shí)器中斷屬于IRQ中斷,這里以計時(shí)器1為例敘述一下中斷的編程過(guò)程,設置interrup mask INTMR1寄存器 0x80000240 第8位TC1OI計時(shí)器1為使能. 在0x800000300 計時(shí)器 1 的數據寄存器TC1D寫(xiě)入指定數據,這樣數據開(kāi)始從這個(gè)給定的數開(kāi)始遞減計數,計數遞減至 0 后,會(huì )產(chǎn)生一個(gè)溢出underflow IRQ中斷請求,中斷狀態(tài)寄存器INTSR1 0x80000240 第8位TC1OI置位.系統會(huì )跳到中斷向量表地址 0x00000018 處,執行相應的中斷程序,中斷程序通過(guò)判斷中斷的類(lèi)型(判斷中斷狀態(tài)寄存器的位),來(lái)執行相應的中斷服務(wù)程序ISR. 中斷狀態(tài)寄存器標志位復位,計時(shí)器開(kāi)始重新開(kāi)始計時(shí).

 存儲空間管理單元(MMU)

物理地址映射

重點(diǎn)在于片選地址CS的選取,另外MMU映射需要參考這個(gè)物理

ARM7 物理地址映射表

地址 內容
大小
備注

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 虛擬(邏輯)地址和物理地址的映射實(shí)例

Vxworks支持的ARM架構的處理器,一般是RAM的起始位置為0x0,而實(shí)際上ARM的物理地址0x0是ROM的起始地址,RAM在高位地址.這就需要系統在Boot過(guò)程中,執行MMU程序,重新映射RAM和ROM的地址.即RAM起始地址為0x0.

MMU主要有ARM7中協(xié)處理器coprocessor 15控制,coporocessor主要控制:

片內的MMU

指令和數據緩存(IDC)

Write Buffer(WB)

MMU有兩層頁(yè)表(two-level page table)用來(lái)進(jìn)行虛擬地址向物理地址轉換,CP15定義16個(gè)寄存器,只有MRC和MCR指令才能對它們操作.

在VxWorks系統中,MMU表分成兩部分:boot up table和final table.在文件ramAtHigh.h中定義.該表在文件romInit.s中初始化,語(yǔ)句為:

BL _ramAtHigh_1(2)

MMU映射實(shí)例

虛擬(邏輯)地址(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中設置。


關(guān)鍵詞: ARM簡(jiǎn)介

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>