ARM学习资料之ARM简介及编程

发布者:bln898最新更新时间:2014-12-08 来源: eepw关键字:ARM  学习资料  简介及编程 手机看文章 扫描二维码
随时随地手机看文章
  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程序[page]

写入完毕后,切换到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  学习资料  简介及编程 引用地址:ARM学习资料之ARM简介及编程

上一篇:ARM处理器的节能优势
下一篇:如何选择ARM CPU的操作系统

推荐阅读最新更新时间:2024-03-16 13:48

巨头携手通用平台65纳米工艺,提供先进物理IP支持
ARM公司近日宣布与IBM、特许半导体(Chartered)及三星电子有限公司合作,为其通用平台之65纳米通用工艺提供ARM Advantage产品——Artisan系列物理IP产品的一部分。在同IBM和Chartered共同为90纳米工艺提供物理IP的基础上,这一协议扩展了ARM为通用平台提供的设计实现支持。针对65纳米低功耗工艺向IBM、特许半导体和三星提供的低功耗的ARM Metro产品已于去年发布。 IBM系统和技术集团半导体技术平台副总裁Steve Longoria表示:“很多客户不仅需要业界领先的生产能力,同时也需要低风险、灵活的方式来管理他们的资源战略,通用平台模式已经被证明对于他们是非常有吸引力的。通过这次引入的
[焦点新闻]
中国同时开发四大架构CPU 粉碎美国封锁
近日美国方面禁止Intel将两款高端服务器芯片出售给中国,不过今天的中国已经不再是那个连火柴都要进口的国家,目前中国采用全球四大流行的处理器架构开发处理器,足以粉碎美国的技术封锁。   全球四大流行处理器架构有X86、ARM、MIPS和POWER,中国都有企业获得授权开发处理器。   早在2005年中国通过与AMD合作获得了部分X86架构的技术,当时AMD将X86 Geode微处理器核心技术授权给北京大学使用。去年初威盛科技将X86处理器技术转移到中国大陆,与中国大陆一家投资机构组建IC设计公司。   去年Intel将X86架构授权给紫光和瑞芯微。Intel将X86架构授权给紫光,并投巨资15亿美元
[单片机]
微软正在自研ARM芯片,在Surface中抛弃Intel
IT之家12月19日消息 据彭博社报道,微软将会推出一款新的 Surface 产品,该产品将运行在自研基于 ARM 的处理器上。如果属实,这将是微软自家芯片首次为 Surface 产品提供核心支持——因为此前微软一直坚持使用英特尔、高通以及最近的 AMD 处理器。 微软已经慢慢从英特尔转向其他公司,如高通和 AMD,但大多数 Surface 产品仍由英特尔 CPU 支持。据报道,微软正在自研基于 ARM 的芯片,以便在 Azure 云平台和 Surface 等以消费者为中心的产品中不再使用英特尔 CPU。 与 Apple Sillion 处理器一样,微软的神秘 Sillion 处理器也将基于 ARM 设计,设备将采用 Wind
[手机便携]
微软正在自研<font color='red'>ARM</font>芯片,在Surface中抛弃Intel
ARM汇编指令集之四——数据处理指令
数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。 数据传送指令用于在寄存器和存储器之间进行数据的双向传输。 算术逻辑运算指令完成常用的算术与逻辑运算,该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR中相应条件标志位。 比较指令不保存运算结果,只更新CPSR中相应的条件标志位。 数据处理指令共以下16条。 1、 MOV指令 MOV指令的格式为: MOV{条件}{S} 目的寄存器,源操作数 MOV指令可完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器。 其中S选项决定指令的操作是否影响CPSR中条件标志位的值,当没有S时指令不更新CPSR中条件标志位的值。 指令示例: MOV
[单片机]
ARM内核目标系统中的代码运行时间测试
在 ARM 系统中,有时需要精确的时间测量。通常 , 取时间的 C 函数(如 gettime() 等)不仅通用性差(必须包含头文件 DOS.H ,且不支持 Unix 、 Linux 和标准 C ),明显不适用于 ARM 系统 ;更成问题的是,其最短时间只能到 10-2 秒级,不能提供更短的时间分度。根本原因在于: 这类函数是基于系统实时时钟( RTC )的,而 RTC 通常采用标准化钟表晶振,频率只有 32.768 kHz 而已 。 然而很多应用涉及 μs 级的时间计量,这是标准化了的 RTC 以及基于它的时间函数所无能为力的。笔者在移植 DES 算法到 ARM 系统的实验过程中,便遇到过要定量评估加密算法耗
[嵌入式]
基于ARM9的心电模拟发生系统设计
随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电除颤技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能够真实地模拟急救除颤的场景,将会起到良好的学习效果。因此,在急救、有创性临床操作训练上,医学模拟教学日益显示出其成本低、重复性高、教学效率高以及符合医学伦理要求等优势。   除颤模拟发生系统可以任意选择34种状态(包括成人和儿童两大类)时也可以连接医用监护仪,使除颤模拟更加逼真。学员可以进行不同能量的除颤练习,同时这也便于老师检验学员的学习效果。   该系统是根据心电图的有关原理以及监护仪的信号合成原理研制的,严格按照医学的相关规
[工业控制]
基于<font color='red'>ARM</font>9的心电模拟发生系统设计
2011年ARM开发者大会系列:ARM Techcon系列之Mentor Graphics
Graphics是设计自动化()技术的领导产商,它提供完整的和设计解决方案,是全球三大EDA大佬之一。Mentor 除EDA外,还具备非常多助力汽车电子的产品,包括嵌入式软件等。
[机器人]
arm7 LPC2103 中断的处理方法
向量中断控制器(VIC)具 有 32 个中断请求输入,可将其编程分为3 类:FIQ 、向量IRQ和非向量IRQ 。可编程分配机制意味着不同外设的中断优先级可以动态分配并调整。 快速中断请求(FIQ )要求具有最高优先级。如果分配给 FIQ 的请求多于1 个,VIC 将中断请求“相或”后向ARM处理器产生 FIQ 信号。当只有一个中断被分配为 FIQ 时可实现 最短的FIQ 等待时间,因为FIQ 服务程序只要简单地启动器件的处理就可以了。但如果分配给FIQ 级的中断多于1 个,FIQ 服务程序从 VIC 中读出一个字来识别产生中断请求的 FIQ中断源是哪一个。 向量IRQ 具有中等优先级。该级别可分配32 个请求中的
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved