ARM结构最初是为了便携式PC而开发的,其操作系统管理中断处理和制定处理的优先级别。但它从来不是面向确定过程式实时应用的。为克服在外部非易失性内存中存储代码导致的性能下降,PC 处理器在高速缓存中采用代码遮蔽技术。但当某一需要的指令代码正好不在高速缓存中时,这种技术就会导致不可预见的延迟。如果不用借助操作系统来实现外设连接,那就需要中断屏蔽和额外的软件支出。总之,这种使 ARM 适合于 PC 应用的结构同时也使它不太适合实时应用。AT91SAM7 器件是ARM7微控制器中独特的产品,配备了一整套支持实时应用的功能,包括一个有8个优先级别的中断控制器、基于硬件的细致位操作、上电复位电路、单电源电压、欠压监测器和实时时钟。
确定过程式处理
SAM7X 微控制器上的 25ns 高速非易失性闪存允许其在单周期内直接从闪存读取指令,而无需代码遮蔽,并能确保以确定过程式的方式完成指令处理。SAM7X可在不借助高速缓存的情况下以 38MIPS 的速度处理闪存的原始数据;而在处理片上SRAM的数据时速度可达50MIPS。
中断控制
实时控制应用通常是由中断驱动的应用,其特点是有多个中断源,且对每个中断都会有一个可预计的响应。ARM核结构采用了一个简单的双中断机制;在该机制中,其中一个中断负责处理所有非紧急的中断任务,并没有硬件制定优先级别。这在高度互连的 嵌入式系统 中是不能接受的,因为这样互连环境下的高吞吐量通信接口要求快速中断处理与低优先级系统功能并行。Atmel 公司的AT91ARM7通过一套可独立屏蔽的中断向量源和一个有8个优先级的中断控制器解决了这个问题。其基本的中断处理程序永久驻留在SRAM中,负责判别各中断源的优先级别。一旦需要,它便会执行一条指令,使用中断号 (每一个中断源均获分配专用的中断号) 把相应中断服务程序的向量直接加载到程序计数器中。可惜的是,ARM7 结构没有细致的位操作指令,因而要15条指令 (即要15个时钟周期) 才能完成这些置位/复位操作。ARM7先用6个指令取消中断,然后用9个指令执行RMW操作,完成复位,最后用6个指令重新激活中断。这牵涉大量的编程、除错调试和处理操作,尤其是当支持这些操作的指令来自8位或16位处理器时,工作量更加庞大。
细致位操作
在现今对成本敏感的应用中,节省代码和数据空间是首要考虑的问题,因此能在I/O空间中对个别位字进行设置 (set) 和清除 (clear) 就最理想不过。如果不具备这种位操作的能力,则需要在目标的 I/O地址内执行一个读、改、写 (Read-Modify-Write, RMW) 操作;也就是说,将该 I/O 空间读入 SRAM、修改目标位,然后将结果写回I/O寄存器。当然,这很耗费闪存和SRAM等的系统资源,而且也增加功耗。位操作得以发挥优势的另一种情况是激活和取消中断。如果要利用 RMW操作来激活或取消某个中断,你必须先取消所有中断,接着进行 RMW操作来激活或取消特定的中断,然后重新激活所有中断。Atmel 公司已对 ARM7 结构进行了扩充,允许在 I/O 空间内设置和清除位字。每个外设都有一个“设置”控制寄存器和一个“清除”控制寄存器。这样,就可用一个 6 个周期的加载/移动/存储序列来处理所有中断屏蔽以及位设置和清除操作,从而减少 60% 的处理开支和代码。
单电源
随着工艺技术的尺度越来越小,微控制器的核心电源的电压范围必须适当。在0.18微米工艺节点,核心电源一般在1.8V。然而,为了与传统的8位系统兼容,32位微控制器必须由一个电压范围从 3.0V 到 3.6V 的单电源来供电。新的微控制器用一个片上调压器产生核心部分和其他片上子系统所要求的1.8V电压。具有这个带外部连接的1.8V电源,能更好地基于系统板提供的功能来控制各个功率源。至于使用这个片上调压器还是使用具有更高效率或更低待机功耗的外接电源,可完全由终端用户自行决定和控制。这个调压器具有在CPU低速 (500Hz 到1.5MHz) 时进入待机模式的特点,这可降低调压器的功耗,使电流降到20mA。在这种情况下,最大输出电流为1mA,足以驱动CPU和大多数外设,这有助于弥补32位微控制器较高的待机电流。
结语
现今嵌入式系统逐步朝着嵌入式网络发展,常常要与其它网络联网。为这样的设计选择一个微控制器需要同时考虑器件的互连能力、数据传输能力、安全性,且又不失实时应用处理所要求的监管和控制功能。微控制器供货商正纷纷推出针对这类应用的32位微控制器。设计人员需要根据自己的特定系统来评估每一种产品。