互连嵌入式系统的演变
过去嵌入式系统通常是深嵌于最终产品之中,以系统控制为基础,一般不与外界连接。其微控制器在一个相当封闭的系统中工作,定时查询外设、收集数据、完成简单的处理工作,以及控制开关和LED指示灯。此外,微控制器也进行少量的数据操作或数据传输。由于它们不会与局域网 (LAN)或互联网(Internet)连接,所以不存在保安的问题。然而,这一切现在都改变了。现今的嵌入式系统一般都要连接到局域网,这样就有数十、甚至上百个控制器连接在一起。举例说,汽车制造和工业控制领域中的CAN有上百个微控制器在相互作用;ZigBee 无线控制网络也有若多数量的微控制器互连在一起。而且,随着嵌入式网络越来越复杂(因此需要更大的网络带宽和更远的传输距离),嵌入式以太网也开始涉足于工业控制、建筑物自动化、医疗和保安产品市场。
目前市场的发展趋势是将这些局域网需要通过企业内联网或外联网特别是互联网与外界连接。嵌入式系统联网要求的不断增加,导致微控制器必须具备更多性能:更强的互连性,增加程序和数据内存空间来支持相应的通信协议,提高性能和处理带宽以进行系统传输数据、执行通信协议和提供严密的保安能力。在需要通过内联网或互联网监控CAN或ZigBee 网络的应用环境中,嵌入式微控制器必须能支持10/100M以太网、CAN、ZigBee 网络以及其他网络协议,更必须具有先进的安全加密算法。
另一个影响嵌入式系统的因素是通用串行总线 (USB) 的快
速普及,尤其是在 PC 及其外设领域。与提供基本通信链路的传统通用异步收发器 (UART) 接口不同,USB是一种内置丰富驱动程序的即插即用式总线接口,能缩短开发周期和设备安装时间。不但设计人员喜欢这种接口,终端用户也因为不必为新购的外设安装加载新的设备驱动程序而乐于使用。再考虑到采用笔记本电脑对复印机、自助售货机、ATM机,工厂自动化设备、家用安全系统等完成系统设置和现场服务,可以预计USB在嵌入式系统将占一重要席位。新款的笔记本电脑都只配备了USB接口,所以由它们服务的系统也必须有USB接口,否则这些系统便得采用旧款PC或USB适配器。
还有一点,随着嵌入式系统越来越多地通过使用外部网络来监控,尤其是该系统可以通过互联网或无线网络来访问时,对保安的要求必然会更高。没有人能容忍局外人恶意破坏系统、关断防火报警系统,或随便打开输油管的阀门,所以保安就成为了嵌入式系统非常重要的一环。
对微控制器结构的意义:高带宽、高互连性、高可预见性
嵌入式系统朝着嵌入式网络的趋势发展从根本上改变了其结构,而结构却是人们在选择一个微控制器时必须考虑的。微控制器必须具有多种网络协议接口,能传输并验证大量数据,足够的安全性以及内存和处理能力,以容纳众多的协议堆栈;而且,在许多情况下,还必须在能耗很少的前提下完成这些任务。8位和16位处理器显然在内存资源和处理能力上达不到这些要求,许然需要 8 位和 16 位处理器具备的“确定过程式性能” (deterministic performance) 和监管功能,而这些对32位处理器来说却很罕有。此外,对成本敏感的系统还得与8位和16位微控制器的价格相若,而且配套开发工具的价格也必须容易接受。
要适应嵌入式市场不断增长的互连需求和支持这类应用的实时性要求,这种处理器还是不够的。要满足现今的互连应用环境,嵌入式微控制器需要能够支持多种通信协议、高速数据传输,系统安全和确定过程式实时处理。Atmel公司的SAM7 微控制器系列基于ARM技术,并具有USB接口,其最新的SAM7X 微控制器正朝着上述的领域发展。这种微控制器的工作频率达50 MIPS,配备片上以太网和CAN通信协议,采用硬件实现的AES/3DES加密技术,安全键存储技术以及各种外部接口包括USB、USART、串行外围接口 (SPI)、同步串行接口 (SSC)、双线接口SSC/I2S和双线接口 (TWI)。该微控制器采用一个外设DMA控制器独立实现高速数据的传输,无需占用 ARM7 处理器资源,并具有 8 位和 16 位处理器常备的实时系统控制功能 (32 位系统很少有这些功能),包括欠压检测器、上电复位电路、实时时钟和监控定时器。SAM7X 微控制器还包括一些外设:一个 10位模数转换器、脉冲宽度调制以及功率管理控制器。SAM7X 的存储密度从 128 到 256Kbit 闪存和 32 到 64Kbit SRAM 不等。这些功能才可真正满足嵌入式网络环境的需求。
嵌入式互连的发展趋势
随着越来越多设备互连在一起,连接电缆的长度和网络带宽均大幅增长。最大带宽为1Mbps的CAN网络逐渐达到极限,开始被100Mbps以太网取代。事实上,以太网和互联网使用的都是相同的通信协议,即TCP/IP。由于在将一个远程
传感器通过互联网连接到某一台PC时无需转换协议,因此整个网络便会简化,设备的互操作性得以增强。采用互联网这类公共通信网络对安全性的要求也大为提高。不过,CAN 也不会在一夜之间消失,而是继续存在于嵌入式网络世界内一段时间。ZigBee 很可能在低数据传输率控制应用中占一重要席位;而与PC 连接方面, USB 势将成为标准。
通用串行接口 (USB) 是一种用于将外设作为即插即用设备连接到PC上的接口标准。因此,USB替代了PC上的串行接口 (UART),而且比后者的传输速率更大,在全速模式下可达12Mbps。
随着以太网协议渗透到嵌入式领域,嵌入式系统网络必须能与以太网络接口。SAM7X采用10/100-Mbps IEEE 802.3兼容的以太网媒体访问控制器,该控制器可配置为全双工或半双工模式,并有一个能确保提供100Mbps数据吞吐速率的专用 DMA控制器;可编程的数据包收发间隔,并支持虚拟局域网标记帧以及自动暂停帧的生成及终止功能。双模式接口能让SAM7X通过媒体独立接口或简化的媒体独立接口 (RMII) ,无缝地接入高速以太网应用中的各种物理层 (PHY) 。MII 能扩大系统在物理层的选择,而RMII 则可节省微控制器上的一些 I/O。SAM7X MCU 可直接与 POS-PHY 第2层/SPI-3 兼容的设备连接,包括与标准网络处理器连接。通过片上系统缓冲器进行的无损失流量控制,可省去外部存储器或流量控制装置。此外,还支持高达10240字节的巨型帧。SAM7X 的地址检查器能识别4个特定的48位地址,并包含一个64位散列寄存器,用于匹配多点广播和单点广播地址。它能识别所有广播地址,复制所有数据帧,并可用于匹配外部地址。其统计寄存器模块包含各种寄存器,用于记录与收发操作相关的各种事件。这些寄存器与存储在接收缓冲列表中的状态字可通过软件读取,生成符合 IEEE 802.3 标准的网络管理统计数据。
能否高速传输数据?如何快速传输数据?
在绝大多数32位控制器中,处理器本身在外设和内外存间传输数据时每次只传输一个字节。如果要传输的数据量不大,这没什么问题。但若数据传输速率达到1Mbps,即使是快速处理器也要瘫痪。在1Mbps速率下,数据传输占用 28% 的处理器资源;速率到 2Mbps 时,数据传输占用 50% 以上的处理器资源;而速率达到 4Mbps 时,处理器就不能处理其他事务了。如果考虑到全速 USB2.0 的数据速率为 12Mbps,CAN 的数据速率为 1Mbps,以太网络的数据速率为 100 Mbps,SAM7 SPI 和 USART 外设的数据速率也能达到 25Mbps,那么很明显任何一个需要在大范围互连的嵌入式
控制系统都必须解决数据传输的问题。在一个涉及大量数据传输的应用中,微控制器能否既是网关又是控制器?
Atmel的DMA方案产品有一个外设DMA控制器 (PDC),能直接将每个SAM7X 外设连接到片上内存,并配有一个更高级的专门DMA,针对以太网MAC。由于 PDC 完全独立于处理器运行,因此它没有任何中断的成本,并能大幅度降低数据传输所需的时钟周期数。每个 SAM7X 外设都有两条专用 PDC 通道,各用于接收和发送数据。每个 PDC 通道的用户接口都集成在各外设的内存中,并有一个 32 位内存指针寄存器;一个 16 位传输计数寄存器;一个用于下一个存储的 32 位内存指针寄存器和一个用于下一个传输的传输计数寄存器。外设通过收发信号触发 PDC 传输。当第一个编程好的数据块被传输后,对应的外设会产生一个传输结束中断,第二个数据块便会自动开始传输,而ARM处理器此时可并行处理第一个数据块。这样,就可以消除为更新处理器上DMA内存指针所带来的实时中断限制,对于维持外设上的高速数据传输来说,这是非常关键的。
在这个方案下,可以随时读取下一个数据传输的存储位置和剩余要传输的数据块。PDC 有一些专用的状态寄存器,它们显示各个传输通道是否激活。通过一些控制位,便可安全地读取指针和计数寄存器,而不会出现两次读数不同的情况。PDC将状态标志发送给在状态寄存器中可见的那个外设。当该外设接收到一个外部字符,便会发送一个接收就绪的信号给PDC,而 PDC 便会请求访问系统总线。当该请求获得允许,PDC便开始读取外设的接收保持寄存器,然后触发一个内存写操作。每次传输后,相关的PDC内存指针地址将增加,剩余的传输数目将减少。当内存块满时,下一个内存块的传输便会自动开始;或者会有一个信号传送到外设,以停止传输。至于向外设发送数据,传输过程正好与此相反。如果在相同的外设上同时出现相同类型 (接收或发送) 的请求,请求的优先级别由外设的编号决定;当请求不是同时发生,则按请求出现的先后而处理。来自接收方的请求先处理,然后处理发送方的请求。
SAM7X 结构中的 DMA 方案使其能同时充当网关和控制器,甚至在高数据速率下也能如此。
实时应用的支持
虽然许多 32 位系统厂商都努力在其微控制器上增加连通性,采用USB、以太网或其他协议,但大部分都不曾解决实时应用的问题。大多数的嵌入式控制应用是确定过程式的,即指令和数据必须在一个可以准确预计的时钟周期内到达正确的地方。这是“实时”应用的本质所在。可惜,绝大多数 32 位控制器都不具备实时应用所要求的性能。
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位微控制器。设计人员需要根据自己的特定系统来评估每一种产品。