一种用于多处理器在线调试的调试系统设计与实现
2023-03-28汪利建刘少龙
李 川,汪利建,刘少龙
(中国航空工业集团公司西安航空计算技术研究所,陕西 西安 710068)
0 引 言
在通用航空领域,广泛采用综合化、模块化的航空电子设备。航空电子设备一般由机柜和多个用于实现特定功能的电子模块组成,在大部分功能模块上都会有微控制单元(Micro Controller Unit,MCU)或数字信号处理器(Digital Signal Processing,DSP)来进行数据处理。在电子设备软件调试或升级过程中,经常需要每个电子模块的MCU或DSP烧录程序或进行在线调试[1,2]。传统的调试方法是将需要调试的功能模块拆卸下来,单独进行调试。这种方法有以下缺点:(1)每次调试都需要将模块拆卸,过程烦琐;(2)模块脱离机柜后无法满足调试环境的要求。针对此类问题,本文以TMS570系列MCU为例设计了一种调试电路,可以在不用打开机柜的状态下对所有的电子模块进行调试。
1 设计原理及关键技术
1.1 MCU调试原理
目前,主流的芯片调试方法为借助联合测试行动小组(Joint Test Action Group,JTAG)协议[3]。JTAG是一种国际标准测试协议,用于芯片内部测试,大部分MCU芯片都支持JTAG接口。JTAG接口最常用的4个信号线分别为测试时钟(Test Clock,TCK)、测试模式选择(Test Mode Select,TMS)、测试数据输入(Test Data Input,TDI)以及测试数据输出(Test Data Output,TDO),通过控制这4个信号线即可访问MCU内部,实现对芯片的编程和在线测试[4-7]。
1.2 USB与JTAG协议转换
JTAG接口虽然可以实现Flash编程和Debug调试,但是其接口无法直接和PC端进行物理连接。通用串行总线(Universal Serial Bus,USB)接口作为PC机必不可少的通信接口之一,支持热插拔,传输速度快。基于此,通过在USB接口和JTAG接口之间进行协议转换,实现PC机对MCU的访问[8,9]。
FT2232HL是FTDI公司的一种双通道高速USB串行通信协议转换芯片,通过多协议同步串行引擎(Multi-Protocol Synchronous Serial Engine,MPSSE)实现USB设备和其他串行设备的通信。FT2232HL包含2个独立的MPSSE,可以将1路USB接口同时转为1路JTAG接口和1路通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)。此 外,FT2232HL还可以通过外挂1个电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)来存储配置信息。
1.3 USB HUB
USB集线器(USB HUB)是一种扩展USB接口的工具,可以将一个USB接口扩展为多个,并且这些接口可以同时使用[10]。TUSB2046B是德州仪器公司生产的一种一拖四集线器,该芯片兼容USB 2.0标准,支持单独供电和总线供电2种模式,同时支持自动挂起和恢复操作,提供了一种灵活的USB扩展方案。
1.4 CCS调试工具
CCS是TI公司提供的一款专业嵌入式软件开发工具,利用CCS IDE可以将写好的软件代码烧写到嵌入式芯片中,同时也可以通过Debug功能对芯片进行在线调试。当嵌入式芯片通过仿真器连接到PC机时,CCS可以通过2种方式去识别设备并连接。第一种方式为“Only one installed”,这种方式只能用于连接一个仿真器的情形;第二种方式为“Select by serial number”,当同时有多个仿真器连接到PC机时,CCS可以通过序列号来选择其中一个进行调试。本文所设计的调试系统就是基于CCS软件提供的第二种连接方式。
2 调试系统设计及实现
基于JTAG和USB HUB技术,设计了一种可以实现4个模块同时在线调试的系统。调试系统的物理架构如图1所示,主要包括功能模块上的调试电路、机柜背板上的USB HUB控制器电路以及PC机上的软件调试工具。4个调试电路通过USB HUB复用1个USB接口,通过USB数据线连接好机柜和PC后,即可通过选择每个功能模块的序列号对相应的模块进行调试。
图1 多模块调试系统物理架构
每个功能模块上的调试电路设计如图2所示。
图2 功能模块上的调试电路设计
MCU器件的型号为TMS570LS3137,FT2232HL作为协议转换器,将USB协议转换为JTAG和UART协议。外部Flash存储器通过串行外设接口(Serial Peripheral Interface,SPI)总线挂载在FT2232HL上,用于存储FT2232的配置信息,其中包括需要转换的接口协议、序列号等信息。FT2232的USB端口通过模块底部的连接器可以延伸至背板。
在机箱背板中,设计了一个USB HUB,实现了USB接口扩展。HUB的上游端口从机柜引出,下游端口与各个功能模块的调试电路相连。USB HUB电路设计如图3所示,由电磁兼容(Electro Magnetic Compatibility,EMC)防护电路、HUB控制器以及过流保护电路构成。
图3 USB HUB电路设计
标准USB接口由4根线组成,分别是差分数据线D+、D-和电源线VCC、GND。通过一个TUSB2046芯片将1路USB数据线分为4路,实现USB接口扩展。电源线USB VCC通过一个4通道过流检测器TPS2044进行过流保护,当TPS2044检测到某个通道的输出电流超过500 mA时,会发出一个过流信号给TUSB2046,TUSB2046立即关断使能,TPS2044停止输出,从而起到过流保护作用。
3 功能验证
基于实际的硬件电路、开发工具以及测试代码验证系统功能,其中开发工具包括CCS11.1.0、FT2232HL配置工具以及串口调试助手,测试代码内容包括软硬件初始化和通过UART循环发送各自模块的代号。
(1)配置调试电路。每次单独插入1个功能模块到背板上,利用PC机上的FT2232HL配置工具依次对4个模块的调试电路进行配置。将FT2232HL的2个MPSSE通道的功能分别设置为JTAG和UART,并给每个功能模块设置一个序列号。将配置好的信息写入调试电路的FLASH芯片中,4个功能模块的序列号依次为Module1~Module4。
(2)将4个功能模块全部插入到背板上,连接USB数据线。
(3)在CCS软件中打开测试代码的工程,在“连接选项”界面选择连接方式为“通过序列号连接”,输入配置的模块序列号,烧写程序,如图4所示。
图4 CCS软件配置
(4)打开串口工具,观察串口打印的信息。按照以上步骤进行测试,4个功能模块的测试代码均烧录成功。重新给机柜上电运行,串口助手界面显示4个功能模块都在循环打印各自的代号,测试结果与预期相符。
4 结 论
基于FT2232HL和USB HUB的多模块在线调试系统优化了模块化航空电子设备的调试步骤和调试流程,具有较强的实用性。经过实验验证和分析,所设计的方案能够通过一个USB接口实现对多个功能模块进行程序烧录、在线仿真以及UART通信,性能稳定且方便易用,值得推广借鉴。