实现8位微控制器升级至32位的关键

本文作者:admin       点击: 2006-04-07 00:00
前言:

现今基于嵌入式微控制器 (MCU) 的应用对功能的要求不断增多,例如,电机控制必须具有更高的能源效率;以往独立的应用也必须联网。在这种情况下,对微控制器的性能和存储容量的要求也大为提高。对一些应用而言,解决的方法就是从8位或16位MCU升级至32位。这样一来,虽然性能得以提高,但也可能导致单元成本、系统复杂性以及软件开发成本的增加。本文将讨论如何通过系统集成将8位功能加入至32位系统中,以及提供功能强大的低成本开发工具,从而加快这种升级过程。

通过提升制造技术可以降低单元成本。不过,除非32位MCU具备和8位或16位系统相若的系统集成度,否则这些优点都将因为加入外部器件的成本而一笔勾销。高性能系统独有的高速缓存等往往令系统变得复杂。但是对那些正在升级至 32 位系统的典型实时控制应用而言,这些并不是必需的功能。虽然,把现有代码移植到新一代更高性能微控制器的成本是无法省去的,但为了减少整体所需的工作量,可以通过开发工具的设计来推动这种升级过程。

市场趋势:转向32位MCU

根据Gartner Dataquest公司统计,在过去10年间,32位微控制器在MCU市场的营业额从零开始增长到了近25%,目前的增长率高于8位或16位系统。而且,随着众多配备了针对特定市场领域,如汽车市场等的功能集的器件不断涌现,MCU 市场正在逐步分化。 从8位和16位MCU升级至 32位架构的重点是深度嵌入式实时控制应用。
此外,目前产业界还出现了一个明显趋势,就是ARM RISC处理器正逐渐成为32位MCU的行业标准,一如当初8051架构是8位系统的标准。目前,ARM 在32位嵌入式RISC MCU市场的占有率达 75%,截至2005年1月,ARM各合作伙伴已付运超过25亿片的的ARM 内核的MCU。

成本:技术和整合度的考虑

采用当前0.18μm的工艺技术,生产一块包含有一个32位RISC处理器、标准外围设备和一个小容量闪存的单芯片成本并不昂贵,但对于8位应用而言,单凭此尚不足够。从8位微控制器升级的应用需要有更高水平的系统集成度 (见图1),来满足整体的系统成本预算。而且,这种整合度必须让32位系统具有8位片上系统的基本功能。

32位器件必须采用单电源工作;集成大电流驱动 I/O 和收发器;控制系统上电;通过低成本晶振生成系统时钟;而且其 I/O上应具有可编程上拉电阻 (pull-up)。此外,32位器件还应确保在任何环境下应用的行为都可以预测,这需要一个节电检测器 (brown-out detector)、一个可编程监视器,以及一个集成RC振荡器,而毋需高速缓存和闪存加密位 (lock bit)。

从8位升级至 32位系统时的性能要求

嵌入式闪存的访问时间
基于8位微控制器的应用一般是以控制为主导 (control-driven) 的,要求对外部事件的确定过程式 (deterministic) 响应和可预测的响应时间。然而,用来加快对缓慢非易失性储存媒介之存取速度的高速缓存却不是决定性的,因此对于那些对时间要求严格的应用来说是不可接受的。提高实时性能又不增加成本的惟一方法,就是加快对嵌入式闪存的存取速度。
目前产业界的0.18μm工艺技术能在30MHz的ARM微控制器上进行单周期内访问,原始性能可达27MIPS,远高于现有的一般 8位微控制器。

提高中断处理能力
实时控制应用一般是采用中断驱动,利用多个中断源和规定每一中断时间内所需的响应来进行。基本的ARM架构有一个弱点,就是它的中断处理机制很简陋,没有中断优先所需的硬件装置。这时便需要一种装置来增强中断能力,如图2所示。它提供一组带有 8 个优先级别之可独立屏蔽的向量式中断源。永久存储在SRAM中的基本中断处理程序负责分配中断的优先级级别,然后执行一条指令,利用中断号 (每一中断源均获发一个独有编号) 作为偏移量 (offset),把用于所需中断服务程序的向量直接装载入程序计数器 (Program Counter)。这种简单有效的机制能够确保在最少数目的指令周期内,把控制传送到所需的中断服务程序中。

独立位设置/重设
ARM 架构的另一缺陷是不能利用单个 ARM 指令进行单独的位设置和重设操作。对实时控制应用而言,这些操作必须执行一个读/改/写 (read-modify-write) 序列。在多个任务共享同一外围设备的情况下,位操作 (bit manipulation) 必须是独立的 (atomic) (不易中断),这就要求在读/改/写序列期间屏蔽中断。

这种解决方案是通过两个虚拟寄存器 (virtual register),一个用于位设置 (使启动),另一个用于位重设 (使失效),这能透过单条储存指令来启动位或使之失效 (图3)。由于这种指令对 ARM 处理器的影响是单独的,故不必屏蔽中断。

外围 DMA 控制器
在外围设备上要保持恒定的数据传输率,需要处理器的及时响应。采用一个外围直接内存访问 (DMA) 控制器就可消除这种约束。不同于CPU逐个字节地传输数据,这种DMA无需CPU干涉,便可直接把数据按模块进行传输。在每个模块传输结束时产生一个单独的中断,不再需要对外围设备轮询 (polling)。采用双指针机制 (dual pointer mechanism) 就可以自动管理模块数据传输,避免了对时间要求严格的指针重配置。

单电源
先进的CMOS技术使微控制器中的内核电源电压逐渐降低。采用0.18μm工艺时,其典型值是1.8V。不过,如果要保留与原有8位系统的兼容性,32位MCU必须采用电压范围在3.0V~3.6V之间的单电源。在这种情况下,可以利用一个内置电压调节器 (图4) 来产生内核及其它片上子系统所需的1.8V电压。该调节器的输出电压在生产阶段时校准。

以外部连接方式来提供1.8V电压环,能根据主板能力对功率源进行更好的控制。对于采用片上电压调节器、还是效率更高或待机耗电更低的外部电压调节器,最终用户拥有绝对的控制权。
使用外部连接方案的另一项优点,是可能使板上的其它IC也由内部产生的1.8V供电。

当 CPU 以较低的速度 (500Hz ~1.5MHz) 运行时,电压调节器会处于闲置 (idle) 模式,此时电压调节器的功耗降到2μA。这种情况下,最大输出电流为1mA,便足以维持CPU和大多数外围设备的活动。这有助于弥补32位MCU待机电流稍高的不足。

减低8位升级至32位过程的复杂性

要增加低成本32位ARM微控制器的市场接受程度,必须使用现有固件,以便于移植。简化专为C语言而最佳化的器件编程模型 (device programming model)、提供强有力的调试功能,以及使已建立的8位开发工具支持32位微控制器等,都是加快用户学习速度的关键。

一个适用于整个微控制器系列集成式外围设备、而且全面和一致的编程模型,正是简化升级复杂性的基础。要做到这种模型,最好的方法是通过一种均匀寄存器结构 (homogeneous register structure) 为所有外围设备指定系统和中断结构地址。只需一个紧密地集成在外围地址空间的外围DMA控制器,就可以显着减低对软件的要求。

为用户提供外围设备驱动器和完整的项目实例 (如可重用的源代码),可加快他们的学习进程,并尽快开始工作。当代码能够迅速被更新,而一旦被加载后器件就能完全自主时,片上闪存的优点就变得显而易见。ARM7 处理器适合于多种操作系统和软件模块如协议堆栈。此外,ARM 微控制器的顾问人数正日益增加,能有效帮助升级中的客户处理移植过程上遇到的各种问题。

对软件开发商而言,要加快移植过程并使固件有效,调试工具的质量至关重要。支持硬件断点 (hardware breakpoints) 的在线仿真 (In-Circuit-Emulation) 接口,提供对处理器的寄存器和内部存储空间的全面访问能力,此外也是连接软件可控追踪 (software-controlled trace) 调试器的界面。目前它们是具有最佳性价比的调试解决方案 (见图5)。编程人员使用指令集仿真器 (Instruction Set Simulator),可以在硬件调试之前提高固件的质量水平,从而缩短开发时间。

除了微控制器调试埠之外,使用片上硬件 (on-chip hardware) 也可以加快开发速度。一般而言,错位 (mis-aligned) 的数据存取极难处理,除非片上监控器能够予以识别,并向处理器发出一个异常中断请求。这正是ARM架构的功能之一。当处理器在调试模式下被中止时,有可能会发生监视器溢出 (overflow) 事故。但若在调试时自动把监视器中止,就可以预防这种情况的发生。此外,外围设备还可能在调试期间产生无效的中断请求,这些请求应该被过滤。

要避免在升级过程差不多完成时才出现最后错误,最好的方法是用闪存来存储程序。这样,在开发的最终阶段也可以对软件进行修改,不会影响生产周期,灵活性极佳。
   
总 结

从8位升级到32位微控制器不仅仅是器件成本的问题,而且还必须拥有近年来8位微控制器所达到的高集成度;提高实时性能的水平;并提供多元化的内存容量选择。就相同的功能集而言,现今的先进制造技术能使32位微控制器达到8位的价位。熟悉的开发工具和先进的调试解决方案,也使32位微控制器的升级变得更加简易。

由8位、16位和32位系统通用的开发工具支持的ARM微控制器,正渐渐成为业界嵌入式32位微控制器标准。Atmel公司的智能型ARM微控制器系列正是这一市场上的领先产品。