文章目录
- 嵌入式:ARM的IO访问与芯片选择
- ARM的IO访问
- (1)存储器映射I/O
- (2)直接存储器访问DMA
- 基于ARM核的芯片选择
- (1)从应用的角度上ARM芯片选择的一般原则
- (2)多内核ARM芯片
- ARM的IO访问
嵌入式:ARM的IO访问与芯片选择
ARM的IO访问
ARM架构中的处理器核一般都没有I/O部件和模块,ARM架构处理器的I/O可通过AMBA总线来扩充。
(1)存储器映射I/O
ARM采用了存储器映射I/O方式。即把I/O端口地址作为特殊的存储器地址。但I/O和真正的存储器有所不同:存储器的单元可以重复读多次,其值是一致的。而I/O设备的连续2次输入,其输入值可能有所不同。这些差异,会影响到存储器系统中的Cache和写缓冲作用,因此应该把存储器映射I/O单元标识为非Cache(Uncachable)和非缓冲的(Unbufferable)。在许多ARM架构系统里,I/O单元对于用户码是不可访问的,只可以通过系统管理调用(SWI)或通过C的库函数来使用这些调用。
(2)直接存储器访问DMA
在I/O数据流量比较大且中断处理比较频繁的场合,会明显影响系统的性能。因此,许多系统采用了存储器直接访问DMA , 这样,I/O的数据块传送至存储器的缓冲区就不需要处理器介入。而中断也仅仅出现在出错时或缓冲器满时。
一般一些高档的ARM架构处理器中具有DMA功能。
基于ARM核的芯片选择
(1)从应用的角度上ARM芯片选择的一般原则
处理器速度:ARM7 工作频率在20-100MHz,速度为0.9MIPS/MHz;ARM9的芯片工作频率一般为200MHz,速度为1.1MIPS/MHz; ARM10的芯片工作频率可以达到700MHz。应选择满足应用要求的ARM芯片。
内置存储器容量:如果系统不需要大容量存储器,且一些产品对PCB面积要求非常严格,要求所设计的PCB面积很小,就要考虑片内有存储器的芯片。如:OKI的ML67Q4001,内部有256K的Flash;ATMEL的AT91FR40162,内部有2M的Flash和256KSRAM。
MMU:是否使用WinCE和Linux,如果使用则需要带MMU(如:ARM720T、ARM920T、ARM922T、ARM946T)。ARM7TDMI不带MMU,但uCLinux也能用。
USB接口:有些ARM芯片内置USB控制器
GPIO数量:有些是与地址线、数据线和串口线等复用。
中断控制器:ARM内核只提供快速中断FIQ和标准中断IRQ两个中断向量,但各个半导体厂家在设计芯片时,加入了自己不同的中断控制器来支持串口中断、外部中断、定时中断等硬件中断。选择具有合适的中断控制器的芯片能在很大程度上减少任务调度的工作量。 如:PHILIPS的SAA7750,所有GPIO都可设置成FIQ或IRQ,并且可选择上升沿、下降沿、高电平、低电平四种方式。这对红外遥控接收和键盘等任务都很方便。
IIS(Integrate Interface of Sound)音频接口 nWAIT信号 :这是外部总线速度控制信号。利用该信号与GAL就可以实现与WLAN卡和Bluetooth卡接口,而不需要专用控制芯片。当需要外部扩展DSP协处理器时该信号也是必须的。
RTC(Real Time Clock):如SAA7750和S3C2410等ARM芯片的RTC直接提供了年、月、日、时、分、秒格式。
LCD控制器:一些ARM芯片内置LCD控制器。
PWM输出:有些有PWM输出,这对电机控制非常有利。
ADC和DAC:有些ARM芯片内置2-8通道的8-12位通用ADC,可用于电量检测、触摸屏和温度监测等。SAA7750内置了一个16位立体声音频ADC和DAC,并且带耳机驱动。
PS2:用来带键盘鼠标。
CAN总线:如现代公司的HMS30C7202就集成了2路CAN总线接口。
扩展总线:大部分ARM芯片都有外部扩展接口,不同的芯片可以扩展的芯片数量不同。外部总线有8位、16位或32位。
UART和IrDA:几乎所有ARM芯片都有1到2个UART接口。
时钟计数器和看门狗计数器:一般ARM芯片都有1个或多个定时计数器和看门狗计数器。
电源管理功能:一般ARM芯片都有低功耗模式、睡眠模式和关闭模式。
DMA控制器:有些ARM芯片内部集成有DMA,可与硬盘等外部设备高速进行数据交换,并且减少对CPU资源的占用。
可选择的其他部件:HDLC、SDLC、CD_ROM译码器、 Ethernet MAC、 VGA控制器,I2C、SPI、 PCI、PCMCIA 等接口。
(2)多内核ARM芯片
- ARM DSP
- ARM FPGA
- 多ARM核