作者:杨硕,华清远见嵌入式学院讲师。
一.AT91SAM9261 SOC简介
AT91SAM9261是atmel公司生产的以ARM926EJ-S ARM Thumb处理器为核心的完全片上系统(SOC),它扩展了DSP指令集和Jazelle Java加速器。主时钟频率190MHz时性能高达210MIPS。
AT91SAM926是一个为带LCD显示应用而优化了的主机处理器。它的集成LCD控制器支持BW而且达到16M {MOD}彩,主动和被动LCD显示。16K字节的片上SRAM可配置为帧缓冲,能将LCD刷新对整体处理器性能上的影响降低到最小。外部总线接口包括支持同步DRAM(SDRAM)和支持静态存储器的控制器,并有特殊接口电路以支持CompactFLASH和NandFLASH。
AT91SAM9261集成了一个支持映射的基于ROM的Bootloader,例如从外部DataFlash映射到外部SDRAM。由软件控制的功率管理控制器(PMC)通过有选择的启用和关闭处理器、各种外设以及对工作频率的调节使得系统功率损耗保持最低。
AT91SAM9261还集成了宽范围的调试特性。包括JTAG-ICE,一个专用的UART调试通道(DBUG)和嵌入式实时追踪。这使所有应用和开发,特别是严格要求实时性的应用得以实现。下面是AT91SAM9261的功能框图:
二.处理器ARM926EJ-S介绍
ARM926EJ-S是通用微处理器ARM9家族中的一员,属于V5TEJ版ARM架构,针对的是多任务应用,全存储器管理、高性能、小核心尺寸和低功耗都是它的特点。
ARM926EJ-S处理器支持32位ARM和16位THUMB指令集,使得用户能在高性能和高代码密度上取得平衡。它支持8为JAVA指令集并且包括Java字节代码有效执行的功能部件,提供和JIT(Just In Time编译器)形似的Java性能,这些性能为下一代Java无线应用和嵌入式的设备提供了有效支持。为了提高DSP性能,还包含了一个增强的乘法器设计。
ARM926EJ-S提供了一个完整的处理器子系统,包括:
ARM9EJ-S整核
MMU
独立的数据和指令AMBA AHB总线接口
独立的指令和数据TCM接口
三.AT91SAM9261的存储器映射机制
如图,由总线矩阵完成对初级地址解码,也就是先进高性能总线(AHB)对其附加功能部件的主控和从控接口的实现。
解码时把4G字节地址空间分成16个256M字节的区域,1-8号区域(0x10000000~0x90000000)通过片选信号NGS0---NGS7指向EBI。区域0(0x0~0x0fffffff)是为片内存储器(32K ROM和16K SRAM)寻址的保留区域,并且一个二级解码提供1M字节的内部存储区域。15号区域(0xf0000000~0xffffffff)是为外设预留的且外设预留的且提供访问先进外围总线(APB)的权限。其他区域是未被使用的,当在该区域内进行存取操作时,会向主控提供一个中断。
总线矩阵管理五个主控和5个从控。每个主控有其自己的总线和解码器,这样就允许每个主控有一个不同的存储器映射。每个从控有其自己的仲裁,这样就允许每个从控有一个不同的仲裁。
总线矩阵主控制器列表:
主控0
ARM926指令
主控1
ARM926数据
主控2
PDC
主控3
LCD控制器
主控4
USB主机
总线矩阵从控制器列表:
从控0
内部SRAM
从控1
内部ROM
从控2
LCD控制器和USB主机控制器
从控3
外部总线接口
从控4
内部外设
嵌入式存储器:
32K ROM
--- 全速总线下单周期存取
16K 快速SRAM
--- 全速总线下单周期存取
每个主控的内部存储器映射,取决于复位时重映射状态和BMS状态。
内部存储器映射:
Adress
主控0:ARM926指令
主控1:ARM926数据
REMAP(RCB0) = 0
REMAP(RCB0)=1
REMAP(RCB1)=0
REMAP(RCB1)=1
BMS = 1
BMS = 0
BMS=1
BMS=0
0x0
Int.ROM
EBI NCS0
Int. RAM C
Int.ROM
EBI NCS0
Int. RAM C
四.AT91SAM9261的启动策略分析
系统上电复位后,首先会检测BMS(Boot Mode Select)引脚上的电平,如果BMS检测到1,系统从片上ROM启动;如果检测到BMS为0,系统从外部总线接口(EBI)片选0所接的存储器(通常都是Nor Flash)启动。
这一过程可用下图表示:
AT91SAM9261芯片的内部ROM中固化了一段启动代码,如果BMS引脚电平为1,则执行这段启动代码。启动代码会检测和芯片连接的外部的各个存储媒介(SPI DATAFLASH, NAND FLASH or SDCARD)上是否有有效的应用程序,如果有,则把它下载到内部快速SRAM中去运行;如果没有发现有效的应用程序,则执行SAM-BA应用程序,SAM-BA是一种小型监控程序接口,也是固化在ROM中的程序。它实现以下功能:
——启动 PLL 输出,为 USB 外设提供一个 48MHz 的工作频率
——连接 USB 外设
——连接 USART 外设
——等待一个来自于 USB 或者 COM 的主机连接(PC)
用户可以通过PC端的SAM-BA GUI程序通过USB或者串口下载有效的应用到外部存储器(DATAFLASH,NAND FLASH or SDCARD)
启动程序算法流程图如下所示:
五.总结
本文从四个方面由浅入深介绍了AT91SAM9261片上系统。比起常用的32为ARM处理器S3C2410,AT91SAM9261采用了ARM926EJ-S内核并外扩了DSP指令设备和JAzELLEJava加速器。在工作频率为180 MHz的情况下,其运算速度为200 MIPS。S3C2410采用的是ARM920T内核,虽然它的主频最高可达200 MHz,但在处理诸如乘加指令时没有AT91SAM9261快,尤其在处理流媒体数据时更为明显。16KB的内部SRAM在播放流媒体数据时起到了很好的帧缓冲作用,另外,AT91SAM9261 发挥了ARM926EJ-S紧密式耦合内存架构的优势,让传统(非高速缓存)SRAM直接连接到ARM处理器上而不会出现滞后情况。AT91SAM9261在工控和消费电子领域均有广泛应用,尤其是应用于工控领域的PDA手持设备。