程跃武,TI 中国模拟产品应用工程师
前言
MSC1210 是一款内置 8051内核及其他高性能外围设备的24位Delta-sigma 模数转换器,可为高精度数据采集系统提供片上解决方案。因此,MSC1210成为高精度"智能传感器"优选方案。对低于100nV的高精度工业智能传感器输出信号,其关键是在不牺牲模拟性能的条件下进行有效编码调试,故本文主要针对智能传感器开发进行探讨,并介绍包括集成开发环境(IDE)仿真器以及将仿真器与在系统调试器(ISDs)进行比较的调试方法。
智能传感器
过程控制仪表通过高精度模拟传感信号来监控控制设备,该传感信号被转换为 4~20mA 的标准模拟信号来进行传输(它是长期以来工业过程控制中普遍使用的一种传输方式)。随着现代科技的发展,计算机如今已成为用来监测、控制仪表系统,来自中心点的传感器线束及其群集间的监控设备。这类传感器中集成了高精度的模数转换器及高性能的处理器而成为智能传感器。智能传感器用更准确、可靠的数字网络以及更简单的内部连接替代了 4~20mA 的传输线,同时,它集成了分布式控制功能,提高了整体性能并降低成本。
用于智能传感器的 MSC1210
MSC1210包含了智能传感器所需的多种功能,如:
l 高精度模数转换:高于22位的有效精度;
l 嵌入式传感信号调整电路:输入缓存器、可编程增益放大、偏置数模转换器、增益与偏置校正功能;
l 低功耗降低了对供电网络的要求:小于4mW;
l 增强型的处理器内核:每条指令4个机器周期的8051核;
l 嵌入式存储器:程序 (32KB),数据 (1.2KB)
l 高性能通信口:SPI口、FIFO,2个UART口;
l 可靠的工业标准电路:低电压检测、开路检测、看门狗时钟电路、宽的工作条件(电源:2.7~5.25V,工作温度:-40~+85°C)
智能传感器编程系统
由于智能传感器是集传感器复杂信号转换、过程控制以及网络于一体的系统,其代码开发必须解决以下问题:
l 开发系统对模拟信号精度的影响;
l 硬件的物理尺寸;
l 开发主机到目标系统的通信媒体;
l 实时控制与网络时序;
l 开发系统电源。
微系统控制器 (MSC) 提供了多种开发环境以满足不同的开发需求。适用于MSC器件的开发系统。该开发环境可用于仿真系统和在系统调试。在系统调试器 (ISD) 又可分为基于软件和基于硬件的调试。在这些方案中,Keil与Raisonance仿真器、MSCMon终端监视器以及Keil ISD51 IDE监视器均适用于智能传感器程序开发。
用来初始化智能传感器的模拟器集成开发环境
集成开发环境 (IDE) 是一套用户化的图形接口开发工具,该工具集成在同一环境中,可缩短程序开发周期并减少程序错误,从而还可提高软件质量。IDE在该环境中提供诸如编辑、汇编、编译、链接、项目管理、修订控制以及器件仿真等工具。一般情况下,IDE仿真器在 Microsoft? Windows? 仿真8051器件,在UNIX平台下的仿真器的使用并不普遍。
仿真器可使用户无需实际硬件便可仿真程序的运行过程。用户可验证算法和时序,仿真外设、中断及输入输出口。这一点尤为重要,因为这可使用户在没有完成硬件的情况下进行程序开发和系统性能的评估。图4为用于 MSC 设备的 IDE 仿真器的结构框图。用户可以进行反汇编、断点设置、存储器监测/修改、程序运行跟踪以及外设监控等操作。仿真器也支持程序检测工具,该工具可"标识"已执行过的程序。仿真器还提供性能分析工具,可记录执行时间,以便用户分析程序的性能。而仿真器最常用的是单步执行功能,它可单部"进入"或"越过"目标函数。仿真器中的机器周期计数非常准确,因此可轻松评估无效的执行时间。
普通 PC Windows IDE 仿真器包括Keil调试器以及Raisonance调试器。Keil IDE 用户手册可以作为仿真器具体操作的参考。Raisonance IDE 调试特方法似于与 Keil IDE 。请参考本文结束部分的"相关网站"。
使用IDE仿真器对智能传感器进行程序开发的优点
l 由于无须任何硬件参与开发,仿真是一种低成本的程序开发方法;
l 程序开发可以在系统硬件完成之前开始;
l IDE仿真器最适合智能传感器的初部程序开发。
使用IDE仿真器对智能传感器进行程序开发的缺点
l 无法仿真精确的模拟信号;
l 难以仿真过程控制中的网络时序及实时转换;
l 当软件开发进入必须有最终硬件参与共同完成的阶段时,就需要在目标系统或 ISD(指令式系统设计)中完成。
对于智能传感器开发来说,特设调试区是不够的
与PC仿真不同的是,ISD在实际系统中执行并调试软件。特设调试是最简单的方法,只需在需要的地方插入调试代码。例如,可简单添加一个打印语句并查看其结果。这种方式仅适用于简单的程序调试,当软件长度增加时,出现的若干个打印语句就会变得难以控制了。
智能传感器的在系统调试
ISD 开发环境在智能传感器中内置调试支持。开发程序会处理来自传感器的实际系统输入并提供瞬时系统响应,而不是系统仿真。因此,可解决系统级问题,如:传感器精度、控制系统稳定性以及传感器网络吞吐量等。如图3所示,ISD 分为两类:软件方式和硬件 方式。软件方式ISD 又分为基于终端的ISD与基于 IDE 的ISD两类。终端调试包括一通用监控器及片上调试器。IDE调试包括源监控器与闪存 ISD。基于硬件的ISD又分为在电路仿真器 (ICE) 与内建调试器模块 (BDM)。
由于智能传感器是紧凑型系统,它们大多不能容忍占用额外电路板空间的、增加功耗及系统成本的外部存储器。因此,MSC1210必须提供ISD 所需的所有资源。包括ISD代码空间、CPU 的时序处理的ISD路径以及ISD口。
需要外部存储器的软件方式ISD,如通用 MON51、Keil MON51 及 Raisonance MON51,这些工具都不是智能传感器开发的最佳选择。而需要额外 ICE 连接总线的硬件 ISD 也是如此,该硬件 ISD 会消耗更大 ICE 总线功率,产生更多系统噪声。在系统调试尽量不要采用 ICE,需要外部存储器的ICE及 ISD 只能用于半成品开发。
软件ISD调试方式是智能传感器开发的理想选择
对于智能传感器等远程目标系统的监控器是嵌入在存储器中的 ISD 软件监控器。ISD监控程序用于用户程序与调试端程序之间的程序衔接。监控器将程序从编程端(例如采用片上通用异步收发器的个人电脑端程序)下载到目标系统存储器,然后进行功能调试,诸如存储器或特殊功能寄存器的读取和修改、中央处理器的状态请求、用户程序转移、单步或断点操作等。
传感器网络作为调试端口
紧凑型远程智能传感器在连接端口到终端时,可能会产生问题。一个可行的方法是通过传感器网络将传感器与终端连接起来,完成命令、响应及用户程序的下载等。然而,由于传感器网络标准种类繁多,用户需要专门设计一个带有传感器网络处理的ISD监控程序。
通过传感网络或调试端口下载用户程序
包括MSC1210在内的可编程微控制器一般都带有内置的串/并行闪存编程操作功能。用户只需将 MSC1210 设定为闪存编程模式,便可通过UART0 把用户程序下载到远程传感器中。若没有调试端口,或系统需要尽可能减少网络连接传感器的数量时,用户程序可通过一般传感网络直接下载。MSC1210的可编程闪存具有自动更新的能力。换句话说,在运行嵌入式ISD监控程序Load User Code 时, MSC1210内置于闪存中的监控程序会将用户码下载并保存到同一闪存中。
MSC1210 IAP 闪存
在下载用户程序时,嵌入式闪存因忙于执行写、删除操作。这时,CPU不可对闪存操作,故MSC1210带有一个可提供闪存擦写程序的2KB嵌入式自启动ROM。该ROM程序可用于嵌入式闪存的内部在应用编程 (IAP)。MSC1210 用户应用程序,如ISD的监控程序,可以使 ROM 程序对闪存进行编程操作。
ISD 监控器 - 嵌入式 MSCMon
ISD监控器可通过通用的监控程序进行修改,该程序在因特网上随处可见,并且大部分已通过测试适合MSC1210,如:Steve Kemplin 编写的 MonPlus、Paul Stoffregen 编写的 PaulMon 以及 Ultramon(编者不明)。
MSCMon - 片上 MSC 监控程序
除了快闪的内部在应用程序外,嵌入式 ROM 还带有用于监控程序及其应用的其他支持程序。利用 autobaud、put_string或cmd_parser等系统引导调试子例程,用户可获得最低开销的调试设置 - MSCon。
嵌入式 MSC 调试子例程不仅支持基本调试命令,如:S-单步、B-中断 以及Q-继续,同时支持包括CP-程序页删除、CW-程序写、XP-X页数据删除 以及 L-装载等的闪存命令。使用MSCMon 可大幅度节约调试空间,最低配置的 MSCon 仅需29字节的快闪程序空间。此外,由于用户程序储存在闪存中,下载程序可作为最终应用。完整的命令列表如图6所示。值得一提的是,MSC 监控程序保存在闪存中,通过Load User Code命令下载用户程序。由于 MSC 监控程序的存储要求很低,用户程序可以连接在 MSCMon上。
MSCon 需要 PC 调试终端,如Hyper-term、Tera-term、Procomm 或 Telix。在没有调试端口或调试终端的情况下,就需要有用户传感器网络程序。
汇编与源程序调试
采用 RS-232 端口的典型调试终端程序时,没有源程序或监控操作的信息。源程序调试,如单步执行需要机器代码与源代码之间的关联表,因此只支持汇编级调试。而 PC IDE 程序与监控程序通过特殊的握手信号,获得一般监控程序和MSCMon所没有的外部源码信息。将这些高性能源级接口与调试命令连接,使用户操作变得简单易行。
Keil ISD51 监控程序是闪存中的内嵌程序,与 IDE通信实现源级调试。IDE的图象用户接口可大大提高调试效率。用户可随时对CPU 寄存器及其中的任何存储器内容进行监控。由于它是源级监视程序,其调试质量要远远优于汇编级监视程序。而ISD51的小容量要求使得监控程序与用户码在目标系统中的编译和下载同时完成。MSC1210带有一内建硬件断点,用于检测硬件中的断点地址。ISD51 充分利用硬件断点功能,执行性能比通过软件实现提高了100倍。
尽管 Keil ISD51 是极具吸引力的工具,但仍需要 RS232 调试端口。另外指令式系统设计的监控程序与用户传感器网络之间的通信设置部分需要单独开发。
总结
由于ISD监控程序内置在智能传感器中,最终的智能传感器不会由于程序开发装置而降低了模拟性能。MSCMon 与 Keil ISD51 监控器只需较小的代码空间。针对某些对代码空间较敏感的应用领域,在产品设计阶段可考虑采用带有较大存储器的MSC1210系列版本,到实际生产中再降低内存。指令式系统设计监控器在调试阶段无须附加硬件,这样可有效降低开发成本。
摘自 电子设计技术