ARM简介及编程
发布日期:2011-05-03
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开放其处理惩罚器授权,因此,用户在市场上可以在多家整机厂商中举行选择,从而包管了这一市场的竞争性。
3. ARM芯片CL-PS7111重要特点
电平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)
4. 调试东西及调试要领
ARM Project Manager (APM) include ARM Debuger: 这个东西由ARM提供重要是开辟步伐, 编程调试ARM芯片, 有相称不错的开辟环境和远端调试成果, 支持汇编和C. 它带有一个ARM本身的嵌入式操纵体系ARM Angel, 用户可以在它的上面开辟本身的嵌入式软件, 不过这个操纵体系不是及时多任务的.
通过谋略机串口与处理惩罚器UART相连,设置谋略机的超等终端 ( Hyper Terminal ), 通过超等终端观察硬件环境(寄存器设置,数据等)和步伐运行环境,固然步伐紧张参加向UART送出数据的指令, 用Beep报警也是通常用的. 这种调试要领是用于底层调试硬件,找出硬件存在的题目.
VxWorks 在Shell 不克不及正常运行前,也是采取这种要领来调试步伐,不过一样平常不是硬件题目,而是BSP中存在的题目,必要根据硬件,修改BSP.
必要阐明的是:上述要领是在没有硬件仿真器的环境下采取的,仿真器是底层调试硬件步伐最好,最简便直观的步伐。
5. ARM7 编程要点及示例
ARM编程可参考步伐示例 ARM_Boot Flash ROM驱动
VxWorks image 装入ARM的进程:
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。
重要管脚定义
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.
编程时要根据主板原理图和硬件手册举行.
看硬件图纸, 该芯片和CPU的那些管脚保持. 分外是 PORT 口和片选线.
查CPU手册, 得到PORT 口和该片选的硬件地点.
编程: 用PORT口直接对芯片操纵,如开,关,RESET等, 用片选地点和芯片要地本地点连合对该外围芯片操纵.
Exception vectors, 停止向量表及停止分派
Vector 地点ExceptionException ModePriority(1=High)
0x0ResetSvc1
0x4Undefined InstructionUndef6
0x8Software InterruptSvc6
0xCPrefetch AbortAbort5
0x10Data AbortAbort2
0x14ReservedNot applicableNot applicable
0x18Interrupt (IRQ)irq4
0x1CFast Interrupt (FIQ)Fiq3
这个向量表必须要安排在体系地点0x00000000 (一样平常是逻辑地点, 即颠末MMU映射后的地点)处.
一样平常是在这些地点上放跳转指令 BL, 跳到相应的地点空间实行相应的步伐.
如体系实行从0x00000000 Reset开始, Reset 跳转到某一地点开始运行操纵体系.
步伐示例,停止向量表 (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
停止号分派 (FIQ, IRQ)
停止范例停止号Name阐明
FIQ0外部停止 EXTFIQ管脚 NEXT FIQ
…………
IRQ5外部停止 EINT1管脚 NEINT1
IRQ6外部停止 EINT2管脚 NEINT2
IRQ7外部停止 EINT3管脚 NEINT3
…………
IRQ12内部停止 UTXINT1UART1 TX FIFO 为空
…………
停止号也是寄存器INTMR和INTSR的位,以是在ARM中停止的编程要点是
看硬件图纸, 该外设和CPU的那一个管脚保持.
查CPU手册, 得到停止号及INTMR,INTSR的地点.
编程
注: 要是不是写底层driver, 只是在体系上层编程(如VxWorks, Linux) 知道停止号即可.
步伐示例(VxWorks):
//登记停止号 5, 和相应的停止例程 ComISR.
intConnect ( ( VOIDFUNCPTR * ) 5, ComISR, 0 ) ;
//使能这停止
intEnable ( ( VOIDFUNCPTR * ) 5 );
……
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 reques(IRQ) will disable subsequent normal
interrupt by setting I bit in CPSR.
计时器停止编程进程
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. 停止状态寄存器标记位复位,计时器开始重新开始计时.
存储空间办理单位(MMU)
物理地点映射
重点在于片选地点CS的选取,别的MMU映射必要参考这个物理地点
ARM7 物理地点映射表
地点内容大小备注
0xF000.0000Unused256Mbytes
0xE000.0000Unused256Mbytes
0xD000.0000DRAM Bank 1256Mbytes
0xC000.0000DRAM Bank 0256Mbytes外接DRAM
0x8000.2000Unused--1Gbytes
0x8000.0000内部寄存器地点8Kbytes重要的I/O和控制
0x7000.0000Boot ROM128 bytes片内,封有Boot步伐
0x6000.0000On-chip SRAM2 Kbytes片内,存放Load步伐
0x5000.0000PCMCIA-1(NCS[5])4*64 Mbytes
0x4000.0000PCMCIA-0(NCS[4])4*64 Mbytes
0x3000.0000外部扩展(NCS[3])256Mbytes
0x2000.0000外部扩展(NCS[2])256Mbytes
0x1000.0000ROM Bank 1(NCS[1])256Mbytes
0x0000.0000ROM Bank 0(NCS[0])256Mbytes外接Flash ROM
MMU 假造(逻辑)地点和物理地点的映射实例
Vxworks支持的ARM架构的处理惩罚器,一样平常是RAM的肇始位置为0x0,而实际上ARM的物理地点0x0是ROM的肇始地点,RAM在高位地点.这就必要体系在Boot进程中,实行MMU步伐,重新映射RAM和ROM的地点.即RAM肇始地点为0x0.
MMU重要有ARM7中协处理惩罚器coprocessor 15控制,coporocessor重要控制:
片内的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)
MMU映射实例
假造(逻辑)地点(VxWorks体系) 硬件物理地点
RAM首地点0x0000.0000
Low Address0x0000.1000
High Address0x0060.0000
ROM 0x0100.0000
其他的地点逻辑地点和物理地点映射地点稳固
0x8000.0000内部寄存器
..................
.................
雷同的颜色映射映射的地点
ROM0x0000.0000VxWorks image和文件体系
RAM首地点0xC000.0000存放LCD,MMU表等
0xC004.0000停止向量表等
0xC004.1000VxWorks运行位置
0xC064.0000VxWorks从ROM解压后Copy的位置
其他的地点映射地点稳固
0x8000.0000内部寄存器
..............
..............