具BDM界面之8位控制器:以Motorola HCS08系列组件为例-(I)

本文作者:admin       点击: 2003-09-01 00:00
前言:
前言
低价位的8位微控制器(MCU)已在现今许多应用系统被广泛地使用,但设计工程师通常却需要使用复杂和昂贵的仿真器来测试这些MCU的软件。仿真器对于掌控驱动器的实时系统来说更是不可或缺,尤其是当这些系统需要经过测试或是及时执行,譬如引擎或是阀门。
由于8位MCU大多使用在较简易及具成本考量的应用系统中,研发人员不一定都能接受高价的开发工具。Motorola推出新的8位MCU-HCS08系列,便具有背景除错模式(BDM)接口和芯片内部仿真器,让使用者透过单线接口来对MCU的闪存进行可程序化作业并利用芯片内部仿真器对软件系统进行测试或除错。
       本文将分别在本期与下期当中,以Motorola 的HCS08系列为例,具体说明具有BDM功能的8位控制器的实际运作方式及其效能。

以HCS08微控制器为基础的开发与测试工作
对开发者而言,开发工具的价格和性能与MCU的性能同样重要。HCS08的一系列开发工具包括开发软件和能够在PC的除错器与MCU上的BDM接口间进行信号与指令转换的BDM pod(图1)。Motorola并提供CodeWarriorTM [1]作为开发软件。其它的软件开发系统则由COSMIC等公司提供 [2]。除此之外,Motorola提供以并行接口(M68MULTILINKS08)、USB界面(USBMULTILINKS08)、USB/以太网络接口(M68CYCLONEPRO)等通用背景除错接口来充当BDM pod/界面。Hitex等公司还提供了其它的产品[3]。
在过去,仿真器的使用通常需要进入到目标微控制器的数据总线与地址总线中。这将启动仿真器或逻辑分析仪并记录及显示MCU中周期精确的活动,还可以在重要/关键时刻暂停应用程序。随着MCU的发展,其执行速度越来越快,封装体积也越来越小,但相对的软件测试就变得越发的困难。采用先进和优良技术制造的HCS08系列MCU体积精巧,逻辑布线的成本也因而减少。因此同样大小的硅片上能够容纳更多的线路。同时,芯片内部仿真器所需的逻辑线路比地址总线和数据总线所须的配套电路成本高出许多。因此在芯片中整合仿真器功能比为数据总线和地址总线外接针脚更具成本效益。
摩托罗拉HCS08系列MCU的BDM pod(BDM接口)仅通过单支接脚就能与计算机上的除错器相连。这免去了笨重的仿真器线缆及连接线缆和面板间昂贵又复杂的转接器插槽。现今许多装置已经小到仿真器的装置无法置入装置中,也无法装置入机板中。开发者经常想在工作中对装置进行测试,但却常常发现,要在仿真器或总线分析仪找到足够的空间不仅非常困难,甚至不可能。比如在汽车应用中,各种电子器件隐藏于引擎、车门、或照明设备当中。这些需要电池供电的电子装置必须要轻巧且机动,通常无法提供与仿真器间繁琐及短距离的连结。
         在开发与测试阶段,开发者可通过除错转接头(pod)与目标MCU之间的单线式除错接口,对闪存进行编程、或是执行除错功能。除错程序也可在之后的现场测试中简单地执行(当器件经过现场验证后,开发者也可比较容易的执行除错功能)。背景除错控制器(Background Debug Controller; BDC)可以自行进入MCU整个内存的数据,且不会影响CPU的性能(非干扰式存取)。另外,BDC还支持传统的除错功能,例如读取和修改缓存器、设定断点和执行追踪指令。
由于HCS08系列微控制器能在特定触发器中提供总线信息,开发系统的外部除错器就能够以精确的时间周期来重建MCU中已经发生过的事件。要注意的是,除错器并不需要连接进入MCU的地址与数据内部总线。因此,HCS08系列微控制器也不具备地址与数据总线信号,甚至在MCU的测试模式下也是如此。
   整个除错过程由单线式背景除错接口传送到MCU的指令控制。除错模块为除错器提供了特别要求的触发器和总线信息,使得除错器能够有顺序且操作简易的方式显示。
HCS08系列微控制器衍生产品上的芯片内建除错控制器(BDC)提供了以下功能:各个透过单一针脚选择的模式,通信也是透过单一针脚选择的。该针脚在重置(reset)过程中被采样, MCU即会开始除错模式或执行应用程序,不需要附加的针脚。但是,附加的针脚也可以连接到背景除错模式接口(BDM pod)中,让除错变得更方便。这些附加的针脚包括接地VSS、电压供应VDD 和重置/复位针脚。它们与目标硬件之间的相互作用都是通过BDM pod/接口进行的。另外如有需要,除错器可将目标硬件置于重置模式。
BDC模块的背景除错控制缓存器并没有嵌入到MCU的记忆配罝图(memory map)中去。这种方式将可以预防不小心改变除错模式设定时,程序的遗失问题。除错器还必须能够确定频率,因为除错控制器的时脉是由总线频率或是由独立于总线频率的其它内部频率(约8MHz)决定的。目标系统的通信速率可由同步(SYNC)指令来决定。当采用内部振荡器时,通信的串行传输率(baud rate)为500kps,或者总线频率被16等分。由于需要连系交换,有效的通信速率多少会有所降低。但对MCU内存进行存取的非干扰式指令并不会降低CPU的工作速度,因为BDC模式采用了被称为「空闲」的总线周期,在这个周期中,CPU并不会存取内部总线。因此除错器也不会与实际应用资源产生任何冲突。而且,除错器还要求不影响用户的内存;一旦采用软件监控,也不会影响MCU任何片上周边功能。其它的指令也可以对CPU的缓存器进行存取。例如,GO和TRACE指令可启动应用软件或者执行一项单步指令。
HCS08上的芯片内建除错模块(DBG)的特征如下:包括A、B两个触发比较器和9种触发模式。A为针对16位地址总线的地址比较器,而比较器B既可用于16位地址总线也可用于8位数据总线。由于触发器模式允许灵活的组合触发选项,可能的触发类型就包括:单个地址触发;两个地址的触发(顺序可以设定);同时触发一个地址和一个数据(可设定地址与数据间是否对应);触发一个地址时将数据保存在FIFO 内存中;触发地址的范围(可设定触发是在地址范围内还是范围外)。开发人员可以设定数据触发后的反应类型,可以针对读、写,或者其它的读写标记(R/W flag)反应。触发模式还允许对各个断点进行定义,这些断点既可针对地址,也可针对数据。已经执行过的程序部分的追踪信息,可通过8-STEP FIFO内存得到。除错器可以采用FIFO内存设定跟踪内存,并以已预先处理过的方式告诉软件工程师。
HCS08系列微控制器提供了不同的省电模式,一旦某种省电模式被启动,BDM接口的通信将被中断;除错器可发出一项BACKGROUND指令,进而重置MCU、启动除错模式。在除错器读取到想要的信息后,BDC模块能通过GO指令和再执行,跳回到程序中的WAIT或STOP指令,从而将MCU复位于刚才的省电模式。开发者也可以透过它测试包含WAIT和STOP等指令的软件。而其它的MCU就不可能通过仿真器或监控软件来实现这一功能。系统重置指令可通过特定的缓存器执行,而这个缓存器的地址只可以在BDC模块中进行设定。除错器可通过BDM界面触发复位。同样的功能也可以通过BDM连接器上的重置针脚实现。然而重置线是双向的,这意味着重置既可以从除错器触发,也可以从系统或MCU触发。
    Motorola为所有的HCS08系列微控制器产品[4]提供了一个驻留在ROM中的除错监控软件,这项ROM补强软件同样采用了BDG模块。若触发了某个断点,ROM补强会中止软件中断(SWI),因而可以强迫CPU进入SWI中断服务程序来修正程序,并在一个确定的地址取得相应的指令。在中断服务程序之后,开发者可以巧妙的处理程序计数器,使得错误指令不会再被执行。另外,开发者还可以在非挥发性内存中储存错误指令开始的地址。之后这个地址可通过接口传送至微控制器中,软件中的错误就能被修正。
        软件开发系统也包含了Metroworks的CodeWarriorTM;。这是一个整合式开发系统,包含了一套完整的整合开发环境(IDE):工程管理器、编辑器、C语言编译器、汇编程序、连接器、仿真器和BDM除错器。其它功能包括ProcessorExpert,其支持软件开发者配置MCU的周边单元,如TPM (定时器/PWM模块)、SCI(异步串行接口)、A/D转换器、PLL等。它使得MCU周边功能的配置成为可能,并提供了可连接周边模块的API(应用编程接口),使得各周边功能能在程序代码中被启动(call up)。应用代码位于API的顶端,由 ProcessorExpertTM产生。这种方法方便了代码的搬移,使得开发者可以在其它架构上采用同一个API。
完整的MCU系统可以在非常短的时间内(数小时内)被初始化和测试,而无须开发者了解MCU的每一个细节。因此开发者不必在开发初期花大量的时间阅读数据手册了。CodeWarriorTM免费提供4K以内的C程序 (CodeWarrior特定版),如果程序员处于编译作业阶段,则CodeWarriorTM不限大小都可以免费取得。

高效能的表现
HCS08系列的产品具高性能、低电压、超省电等特征。HCS08微控制器的内部处理速度以总线频率fBus表示,最高可达20 MHz ;这意味着内部时脉为50奈秒,这对于2.08~3.6V范围内的电压供应VDD而言是合适的。在2.08~1.8V时,HCS08微控制器可以最高8MHz的速度运行。由于HCS08包含了一个CISC(复杂指令集计算机),初始命令的执行时间通常需要一个时钟周期以上。3个时钟周期值可用来对某一指令进行简单的MIPS评估,因为最常用的指令要求2、3或4个时钟周期。以MIPS衡量的性能介于6~7个MIPS之间。要想确定CISC处理器的MIPS值是比较困难的,因为每单位时间执行命令的数量不能被精确的定义,尤其是每条指令的周期数量都是变化的。这就是为什么我们采用基准(benchmark)程序来表征和比较微控制器性能的原因。基准测试也有很多种,每个基准测试都确定了MCU的性能指针。
一般而言,有了许多基准的帮助,开发者就可以对CPU进行独立评估。然而在嵌入式设计中,CPU和周边器件整件的性能决定了整个系统的性能。这就是为什么最好采用应用基准进行测试的原因,特殊应用的相关性能不会影响应用基准的结果。图2描绘了一个基准的简单执行过程。几乎每一个系统都有来自于各种传感器的模拟输入值,这些数值被转换成了MCU中的数字信号。在控制电路中,它们代表了实际数值或回馈数值。控制偏量(deviation)是由控制算法决定的,例如对PID控制器而言,正确的变量是由回馈值和给定值(setpoint)一起计算出来的。这个正确的变量被送到控制要素或当成PWM信号送到制动器。控制系统性能的评判标准是某个特定MCU 所能实现的最小采样间隔TA或最大采样频率fA。这个评判标准取决于传感器取得一个数据的时间、A/D转换器的转化时间、PID算法的计算时间和PWM数值产生的修正速度。
系统定时器产生周期性的中断,而这些中断对每个控制进程进行了初始化。在HCS08系列微控制器中,任意一个TPM定时器都可被用来产生实时中断。定时器ISR(中断服务程序)中的控制进程首先进行真实值采样,然后进行A/D转换。HCS08微控制器需要花费13 µs来完成这一初始化过程。在转换过程中,CPU既能执行其它工作,也可以切换到WAIT模式,以减少耗电。在这一模式下,CPU是不响应的,因此耗电能减少大约三分之一。一旦A/D转换结束,将产生一个A/D转换结束的中断,把CPU从WAIT模式中切换出来。此时的反馈值再加上输入的给定值,控制算法就能够计算出所要求的控制偏量和修正变量,而控制算法计算出修正变量所要求的时间取决于CPU的计算能力。一个PID算法包括加法、乘法和数值比较。通常情况下,数值仅限于8位或16位,以尽量降低计算时间。HCS08系列微控制器由于具有很高的运行速度,非常适合采用各种控制算法,并提供硬件MUL和DTV指令来支持算法的计算。当实施不同类型的算法时,该微控制器的控制周期时间从1~100ms不等。

多重的省电模式
除了CPU的性能得到增加外,HCS08系列微控制器的电压供应范围也被特定为1.8~3.6V,这意谓着该MCU系列也适合电池供电的便携式应用装置。其设计标准就为尽可能的降低功耗,以确保最长的电池使用时间。系统的功耗要求是MCU各种操作模式下的电流之和。HCS08已经采用了各种省电模式以确保灵活的电源管理,这些模式在表1中都有列出。通过采用省电模式,电源要求可以减少到一个微安培以下。
不同运行状态下的功耗可由各种模式所要求的功耗之和计算得出(图3)。功耗要求首先取决于STOP模式下的电源要求和MCU在该模式下的运行时间,因为基本上,MCU可根据应用处于某一STOP模式下。当然在这种情况下,MCU在RUN模式下运行的时间要比在STOP模式下运行的时间短许多。