原创 从工程实践引发的关于调试工具的思考

2009-4-13 10:23 1321 2 2 分类: MCU/ 嵌入式

富有挑战性的工程实践


  随着社会的进步,越来越多的产品在设计之初就融入了环保节能的理念。在家用电器、工业设备、汽车交通等行业,更多的先进的电机控制方法得到了应用。笔者曾经经历过一次与电机控制相关的富有挑战性的工程实践。


  工程的设计目标是控制一台3KW的大功率直流无刷电机。设计中采用了Microchip公司的dsPIC33FJ32MC204数字信号控制器(Digital signal controller  Dsc)及C30编译器、Fairchild公司的FSBB30CH60智能功率模块(Smart Power Module   SPM)。控制器弱电部分与SPM共地,电气上不绝缘,控制器至SPM的PWM控制信号采用直接连接的方式,省略了高低电压部分之间的光电耦合器。出于安全考虑,在开发中电机控制系统和调试工具都由隔离电源供电。


  小功率级别的功能性调试结束后,工程面临了挑战,实验室无法提供3KW级别的隔离电源以及3KW级别的负载状态,于是工程将直接进入现场调试阶段,令人为难的是:调试工具的接入如何解决安全问题?


调试工具的现状


  与早先的在线仿真器ICE不同,dsPIC33FJ32MC204芯片本身具有在片调试功能(In Chip Debuger   ICD),当实现了MCLR/VPP、VDD、VSS、PGDx 和PGCx 等引脚的在线串行编程(In-Circuit Serial Programming  ICSP)连接后,就可以通过ICD2等在片调试工具进行代码下载和调试。


  在片调试功能的概念现在已经被越来越多地应用在以Flash为程序存储器的单片机中,ICD已经作为这些单片机的一个部分。在调试状态下,MCU的运行将在断点状态被触发时停止,MCU的内部状态将被回传至主机的开发界面如IDE等,并等待继续运行的命令。由于其占用的资源少而且更能反映系统的真实状态,极大地方便了开发过程。


  从设计工程师的角度来看,在代码的编译完成后所进行的调试过程,无非就是数据的验证过程,是设计数据和现实数据的验证过程,当二者由相异到趋于一致时,代码的调试即告完成,这些数据包括输入/输出数据以及运算和处理的数据等。


  事实上,调试工具提供了一条装载代码和数据验证的通道。


对策


  笔者研发了一种“软调试器”,在完成代码调试工作的同时,也实现了开发工作的安全要求。


1)       代码下载  目标系统出于安全考虑,处于断电状态,由IDE产生的代码可以通过软调试器下载至dsPIC33FJ32MC204,软调试器和目标系统的控制部分均由PC通过USB供电;


2)       数据验证  在目标系统运行时,软调试器与PC不连接,脱离IDE,由目标系统供电运行,通过软调试器上的显示器来进行设计数据的验证;


3)       调试代码嵌入  在调试阶段,用户代码中被嵌入了一个为软调试器服务的通信程序,它具备一个调试数据缓冲区,用户程序将需要验证的数据装入该缓冲区,并通过连接的ICSP连接线将这些缓冲区中的数据回传至软调试器,并在软调试器的数码管上显示出来,达到数据验证的目的;代码调试结束后,只要简单地将用户程序中的调试代码关闭即可。


  很明显,这种软调试器并没有使用dsPIC33FJ32MC204的ICD功能,它更象是一个编程器、用户系统端内嵌的数据通信软件模块、外接的数据接收/显示器三者的组合。与硬调试器不同,软调试器的断点及条件触发功能是通过目标系统的用户软件内嵌的调试模块来实现的。用户软件对被关注的数据进行判断,当这些数据符合判断指针时,相关的数据将被装入调试数据缓冲区。而通过软调试器的显示器,不仅看到了那些被触发的“断点数据和状态”,更可以密切地关注目标系统的运行数据。


思考与展望


  虽然笔者是针对Microchip的Dsc设计的软调试器,然而这一概念几乎可以用在所有的基于Flash单片机中的调试工具上。


1)    它本身就就是一个在线编程器;


2)      随着半导体技术的进步,Flash的容量会越来越大,MCU的速度也会越来越快,软调试器对目标系统的速度带宽和存储器资源的占用将会变得越来越微不足道;


3)      调试过程中并没有停止目标系统的运行以获得数据的回传,所有的触发条件由内嵌在用户程序中的调试模块完成,更好地展现了系统的实时性;

  在保证软调试器与目标系统之间通信标准化、适当的下载硬件接口后,那么它将有可能扮演一个跨越单片机平台、价廉物美的调试工具。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /5 下一条