NEWS

首页   /   新闻资讯

NEWS

首页   /   新闻资讯

ARM简介及编程

发布时间:2022/4/1

ARM简介及编程

     1.ARM简介(摘录

  ARMAdvanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
  ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
  目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括IntelIBMLG半导体、NECSONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
  ARM架构是面向低预算市场设计的第一款RISC微处理器。
  2.产品介绍
  ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。
   ①CPU内核
   --ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。
  -- ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。
  --ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard总线。在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。常用于连网和顶置盒。
  体系扩展
  -- Thumb:16位系统的成本,提供32RISC性能,特别注意的是它所需的内存容量非常小。
  嵌入式ICE调试
  由于集成了类似于ICECPU内核调试技术,所以原型设计和系统芯片的调试得到了极大的简化。
  微处理器
  --ARM710系列,包括ARM710ARM710TARM720TARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache)、内存管理、写缓冲和JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。
   --ARM940T920T系列:低价、低能耗、高性能系统微处理器,配有Cache、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。
  --StrongARM:性能很高、同时满足常规应用需要的一种微处理器技术,与DEC联合研制,后来授权给IntelSA110处理器、SA1100 PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。
  --ARM7500ARM7500FE:高度集成的单芯片RISC计算机,基于一个缓存式ARM7 32位内核,拥有内存和I/O控制器、3DMA通道、片上视频控制器和调色板以及立体声端口;ARM7500FE则增加了一个浮点运算单元以及对EDO DRAM的支持。特别适合电视顶置盒和网络计算机(NC)。

Windows CE
Pocket PC只支持ARMWindows CE可支持多种嵌入式处理器,但基于Windows CEPocket PC则只支持ARM一种。微软在对SH3MIPSARM等嵌入式处理器做了评估后认为,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位和32DRAM 

ROM/SRAM/Flash Memory
控制 
可译码4,56个独立的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位和13GPIO port 
支持键盘阵列扫描(Scanning keyboard matrix) 

两个异步串口 UARTs 
支持高达115.2K 波特率 
内有两个接收发送(TX,RX) 16Bytes FIFOs缓冲 
支持MODEM控制信号 

DC-to-DC
转换器接口 
提供两个96KHz时钟输出,通过编程duty ratio(1/16---15/16)操作 

LCD
控制器 
直接信号扫描板接口,单色LCD 
面板的大小可编程从161024个像素,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
内部有128byteBootROM2KSRAM,当需要Download VxWorks image,ARM启动采用Boot方式启动运行存在128byte BootROM中的程序初始化ARM内部的COM口,从COM口接受数据到2KSRAM,这2K程序是用来真正Load VxWorks的,2K程序Load完毕后系统自动跳转到这2K程序执行,它的作用是再次初始化内部的COM,通过COM口接受VxWorksDRAM,然后由DRAM写入FLASH。在主板2K SRAM运行的Boot Load程序执行过程,可参看程序示例中ARM Boot Load程序

写入完毕后,切换到Normal模式重新启动系统,系统自动跳到FLASH 0X00000000开始运行VXWORKS 

PC机上的COM1ARM内部的UART1COM)通信来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]
中断号也是寄存器INTMRINTSR的位,所以在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 8TC1OI计时器1为使能. 0x800000300 计时器 1 的数据寄存器TC1D写入指定数据,这样数据开始从这个给定的数开始递减计数,计数递减至 0 ,会产生一个溢出underflow IRQ中断请求,中断状态寄存器INTSR1 0x80000240 8TC1OI置位.系统会跳到中断向量表地址 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的物理地址0x0ROM的起始地址,RAM在高位地址.这就需要系统在Boot过程中,执行MMU程序,重新映射RAMROM的地址.RAM起始地址为0x0.[/BLOCKQUOTE]
MMU
主要有ARM7中协处理器coprocessor 15控制,coporocessor主要控制:[BLOCKQUOTE]
片内的MMU 
指令和数据缓存(IDC) 
Write Buffer(WB) 

MMU
有两层页表(two-level page table)用来进行虚拟地址向物理地址转换,CP15定义16个寄存器,只有MRCMCR指令才能对它们操作.
VxWorks系统中,MMU表分成两部分:boot up tablefinal 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 

CPCI产品,PXI/PXIe产品,VPX 产品,飞腾主板

服务于客户是我们的宗旨。关注客户需求,满足客户需求,通过服务为客户创造价值,是我们不懈的追求;通过快速反应、精益生产、专业服务,实现产品性能和价值最大化,同时将费用和复杂性降到最低。

  备案号:沪ICP备20004832号-1

联系我们

联系地址

上海市松江区九亭镇西飞路1号A208-210

邮编:201615

电话:021-67630928

传真:021-67630905

手机:18939739869(同微信)

邮箱:rocky_pang@163.com

Q  Q: 2814911302

快速链接

展开