ARM学习及编程.docx
- 文档编号:12187722
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:10
- 大小:21.86KB
ARM学习及编程.docx
《ARM学习及编程.docx》由会员分享,可在线阅读,更多相关《ARM学习及编程.docx(10页珍藏版)》请在冰豆网上搜索。
ARM学习及编程
ARM简介及编程
1.ARM简介(摘录)
ARM(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的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处理器、SA1100PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。
--ARM7500和ARM7500FE:
高度集成的单芯片RISC计算机,基于一个缓存式ARM732位内核,拥有内存和I/O控制器、3个DMA通道、片上视频控制器和调色板以及立体声端口;ARM7500FE则增加了一个浮点运算单元以及对EDODRAM的支持。
特别适合电视顶置盒和网络计算机(NC)。
WindowsCE的PocketPC只支持ARMWindowsCE可支持多种嵌入式处理器,但基于WindowsCE的PocketPC则只支持ARM一种。
微软在对SH3、MIPS、ARM等嵌入式处理器做了评估后认为,ARM是一种性价比较好的选择。
由于目前ARM在手持设备市场占有90%以上的份额,只支持ARM,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。
由于ARM开放其处理器授权,因此,用户在市场上可以在多家整机厂商中进行选择,从而保证了这一市场的竞争性。
2.ARM芯片CL-PS7111主要特点[BLOCKQUOTE][BLOCKQUOTE]
电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz.13MHz位节电模式,性能相当于33MHzInter486PC
ARM710A内核
ARM7CPU
8K4向缓存(cache)
MMU带有64入口TLB(TransitionLook-asideBuffer)
DRAM控制器
支持16位和32位DRAM
ROM/SRAM/FlashMemory控制
可译码4,5或6个独立的256M存储空间段
每个存储段支持8位,16位和32位操作,并支持分页模式
可编程ROM/SRAM/FlashMemory
支持两个低功耗CL-PS6700PC卡(PCMCIA)控制器
2K片内SRAM用于程序快速执行
片内BootROM(128Byte)
两个同步串行接口
支持SPI,或Microwire2兼容
音频解码器(AudioCodec)
27位通用接口GPIO(general-purposeI/Oport)
3个8位和1个3位GPIOport
支持键盘阵列扫描(Scanningkeyboardmatrix)
两个异步串口UARTs
支持高达115.2K波特率
内有两个接收发送(TX,RX)16BytesFIFOs缓冲
支持MODEM控制信号
DC-to-DC转换器接口
提供两个96KHz时钟输出,通过编程dutyratio(1/16---15/16)操作
LCD控制器
直接信号扫描板接口,单色LCD
面板的大小可编程从16到1024个像素,16个像素为一个单位
视频帧大小可编程到128Kbyte
每个像素点的位数可编程1,2,4位
计时器和实时时钟
两个16位计时器(Timercounter)和一个32位实时时钟(RTC)
[/BLOCKQUOTE][/BLOCKQUOTE]
3.调试工具及调试方法[BLOCKQUOTE]
ARMProjectManager(APM)includeARMDebuger:
这个工具由ARM提供主要是开发程序,编程调试ARM芯片,有相当不错的开发环境和远端调试功能,支持汇编和C.它带有一个ARM自己的嵌入式操作系统ARMAngel,用户可以在它的上面开发自己的嵌入式软件,不过这个操作系统不是实时多任务的.
[/BLOCKQUOTE][BLOCKQUOTE]
通过计算机串口与处理器UART相连,设置计算机的超级终端(HyperTerminal),通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令,用Beep报警也是经常用的.这种调试方法是用于底层调试硬件,找出硬件存在的问题.
VxWorks在Shell不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.
[/BLOCKQUOTE]
4.ARM7编程要点及示例
ARM编程可参考程序示例ARM_BootFlashROM驱动
VxWorksimage装入ARM的过程:
[BLOCKQUOTE]
ARM7有两种运行模式,Boot模式和Normal模式,Boot模式主要是把程序装入(download或load)FlashROM中用的,Normal模式是一般运行程序用的.
ARM7Boot模式时,Flash的地址是0x70000000片选型号是CS0(Normal模式下,Flash地址为0x00000000)
ARM7内部有128byte的BootROM和2K的SRAM,当需要DownloadVxWorksimage时,ARM启动采用Boot方式启动运行存在128byteBootROM中的程序初始化ARM内部的COM口,从COM口接受数据到2K的SRAM,这2K程序是用来真正LoadVxWorks的,2K程序Load完毕后系统自动跳转到这2K程序执行,它的作用是再次初始化内部的COM口,通过COM口接受VxWorks到DRAM,然后由DRAM写入FLASH。
在主板2KSRAM运行的BootLoad程序执行过程,可参看程序示例中ARMBootLoad程序
写入完毕后,切换到Normal模式重新启动系统,系统自动跳到FLASH0X00000000开始运行VXWORKS。
用PC机上的COM1与ARM内部的UART1(COM)通信来DownloadVxWorks。
[/BLOCKQUOTE]
主要管脚定义
[BLOCKQUOTE]
32条数据线:
D0-------D31
28条地址线:
A0-------A27littleendian定义,相对应数据排列0123456--------27
6条片选信号脚:
CS0-------CS5,其实作用相当于地址线A28------A31
4个8位的PORT口:
PORTA,PORTB,PORTD主要用于外围芯片信号的控制.PORTE有双作用.
例如PORTA控制键盘的行信号,PORTB用于RS232,PORTD用于控制MODEM,FPGA..
外部中断信号EINT,EXTFIQ.
编程时要根据主板原理图和硬件手册进行.[BLOCKQUOTE]
看硬件图纸,该芯片和CPU的那些管脚连结.特别是PORT口和片选线.
查CPU手册,得到PORT口和该片选的硬件地址.
编程:
用PORT口直接对芯片操作,如开,关,RESET等,用片选地址和芯片内地址结合对该外围芯片操作.
[/BLOCKQUOTE][/BLOCKQUOTE]
Exceptionvectors,中断向量表及中断分配
Vector地址[BLOCKQUOTE]
Exception[/BLOCKQUOTE]ExceptionModePriority(1=High)
0x0[BLOCKQUOTE]
Reset[/BLOCKQUOTE]Svc1
0x4[BLOCKQUOTE]
UndefinedInstruction[/BLOCKQUOTE]Undef6
0x8[BLOCKQUOTE]
SoftwareInterrupt[/BLOCKQUOTE]Svc6
0xC[BLOCKQUOTE]
PrefetchAbort[/BLOCKQUOTE]Abort5
0x10[BLOCKQUOTE]
DataAbort[/BLOCKQUOTE]Abort2
0x14[BLOCKQUOTE]
Reserved[/BLOCKQUOTE]NotapplicableNotapplicable
0x18[BLOCKQUOTE]
Interrupt(IRQ)[/BLOCKQUOTE]irq4
0x1C[BLOCKQUOTE]
FastInterrupt(FIQ)[/BLOCKQUOTE]Fiq3
[BLOCKQUOTE]
[/BLOCKQUOTE][BLOCKQUOTE]
这个向量表必须要放置在系统地址0x00000000(一般是逻辑地址,即经过MMU映射后的地址)处.[/BLOCKQUOTE][BLOCKQUOTE]
一般是在这些地址上放跳转指令BL,跳到相应的地址空间执行相应的程序.[/BLOCKQUOTE][BLOCKQUOTE]
如系统执行从0x00000000Reset开始,Reset跳转到某一地址开始运行操作系统.[/BLOCKQUOTE][BLOCKQUOTE]
[/BLOCKQUOTE][BLOCKQUOTE]
程序示例,中断向量表(ARMasm):
__VectorStart;StartofARMprocessorvectors
LDRpc,ResetV;00-Reset
LDRpc,UndefV;04-Undefinedinstructions
LDRpc,SWIV;08-SWIinstructions
LDRpc,PAbortV;0C-Instructionfetchaborts
LDRpc,DAbortV;10-Dataaccessaborts
LDRpc,UnusedV;14-Reserved(wasaddressexception)
LDRpc,IRQV;18-IRQinterrupts
LDRpc,FIQV;1C-FIQinterrupts[/BLOCKQUOTE]
中断号分配(FIQ,IRQ)中断类型中断号
Name
说明
FIQ0外部中断EXTFIQ管脚NEXTFIQ
…………
IRQ5外部中断EINT1管脚NEINT1
IRQ6外部中断EINT2管脚NEINT2
IRQ7外部中断EINT3管脚NEINT3
…………
IRQ12内部中断UTXINT1UART1TXFIFO为空
…………
[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]
ARMInterrupts:
ARMprocessorsimplementfastandnormallevelofinterrupt,signalledexternally,synchroniseinterruptsbeforeanexceptionisraised.Afastinterruptrequst(FIQ)willdesablesubsequentnormalandfastinterruptbysettingtheIandFbitinCPSR,andanormalinterruprequest(IRQ)willdisablesubsequentnormalinterruptbysettingIbitinCPSR.
计时器中断编程过程[BLOCKQUOTE]
ARM7一般内部有两个16位计时器(Timercounter)和一个32位实时时钟(RTC),计时器中断属于IRQ中断,这里以计时器1为例叙述一下中断的编程过程
设置interrupmaskINTMR1寄存器0x80000240第8位TC1OI计时器1为使能.在0x800000300计时器1的数据寄存器TC1D写入指定数据,这样数据开始从这个给定的数开始递减计数,计数递减至0后,会产生一个溢出underflowIRQ中断请求,中断状态寄存器INTSR10x80000240第8位TC1OI置位.系统会跳到中断向量表地址0x00000018处,执行相应的中断程序,中断程序通过判断中断的类型(判断中断状态寄存器的位),来执行相应的中断服务程序ISR.中断状态寄存器标志位复位,计时器开始重新开始计时.
[/BLOCKQUOTE]
[/BLOCKQUOTE]
存储空间管理单元(MMU)
物理地址映射
重点在于片选地址CS的选取,另外MMU映射需要参考这个物理地址[BLOCKQUOTE]
[/BLOCKQUOTE][BLOCKQUOTE]
ARM7物理地址映射表[/BLOCKQUOTE]地址
内容
大小
备注
0xF000.0000Unused256Mbytes
0xE000.0000Unused256Mbytes
0xD000.0000DRAMBank1256Mbytes
0xC000.0000DRAMBank0256Mbytes外接DRAM
0x8000.2000Unused--1Gbytes
0x8000.0000内部寄存器地址8Kbytes主要的I/O和控制
0x7000.0000BootROM128bytes片内,封有Boot程序
0x6000.0000On-chipSRAM2Kbytes片内,存放Load程序
0x5000.0000PCMCIA-1(NCS[5])4*64Mbytes
0x4000.0000PCMCIA-0(NCS[4])4*64Mbytes
0x3000.0000外部扩展(NCS[3])256Mbytes
0x2000.0000外部扩展(NCS[2])256Mbytes
0x1000.0000ROMBank1(NCS[1])256Mbytes
0x0000.0000ROMBank0(NCS[0])256Mbytes外接FlashROM
MMU虚拟(逻辑)地址和物理地址的映射实例[BLOCKQUOTE]
Vxworks支持的ARM架构的处理器,一般是RAM的起始位置为0x0,而实际上ARM的物理地址0x0是ROM的起始地址,RAM在高位地址.这就需要系统在Boot过程中,执行MMU程序,重新映射RAM和ROM的地址.即RAM起始地址为0x0.[/BLOCKQUOTE]
MMU主要有ARM7中协处理器coprocessor15控制,coporocessor主要控制:
[BLOCKQUOTE]
片内的MMU
指令和数据缓存(IDC)
WriteBuffer(WB)
MMU有两层页表(two-levelpagetable)用来进行虚拟地址向物理地址转换,CP15定义16个寄存器,只有MRC和MCR指令才能对它们操作.
在VxWorks系统中,MMU表分成两部分:
bootuptable和finaltable.在文件ramAtHigh.h中定义.该表在文件romInit.s中初始化,语句为:
BL_ramAtHigh_1
(2)[/BLOCKQUOTE]
MMU映射实例
虚拟(逻辑)地址(VxWorks系统)硬件物理地址RAM首地址0x0000.0000
LowAddress0x0000.1000
HighAddress0x0060.0000
ROM 0x0100.0000
其他的地址逻辑地址和物理地址映射地址不变
0x8000.0000内部寄存器
..................
.................
相同的颜色映射对应的地址
ROM0x0000.0000VxWorksimage和文件系统
RAM首地址0xC000.0000存放LCD,MMU表等
0xC004.0000中断向量表等
0xC004.1000VxWorks运行位置
0xC064.0000VxWorks从ROM解压后Copy的位置
其他的地址映射地址不变
0x8000.0000内部寄存器
..............
..............
其中,LowAddress,HighAddress在系统配置文件config.h和Makefile中设置,参见BSP文件示例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 学习 编程