雷长发
新型的SOC调试接口
雷长发
针对SOC调试问题,本文研究便捷的接口调试方式和手段,能同时满足从系统底层驱动到应用层的各种调试场合。
JTAG和UART作为最常用的软件开发调试手段,从IC研发、软件调试到产品返修等环节都频繁的使用,贯穿整个产品周期。
然而,作为调试接口的JTAG和UART,在产品中不会直接用到(UART较少用到),所以在成品机中这些调试接口都没有直接引出来。如此一来,当出现问题需要调试时,调试接口引出就相当麻烦。开发过程中,经常插拔调试口,可靠性和可维护性不高。量产过程查问题,批量样机问题排查起来耗时巨大,浪费人力物力。返修机免不了拆壳飞线等,拆壳极易损坏外壳,飞线难度较大并且耗时。
所以现有的JTAG和UART调试方式繁琐且耗时等诸多不够方便的地方,不能很好的满足开发调试需要。
类似技术中,USB打印是一项改良技术。通过协议的转换,在PC端注册一个COM口,能把UART打印信息通过USB物理接口传输过来,一定程度上改善了UART传输问题。
USB UART能解决拆机和焊接UART线缆的工作量,但也存在诸多问题:1)USB只完成了UART的传输,不能替代JTAG的部分;2)USB UART采用缓存技术存在延时问题,不能实时反应UART输出;3)USB UART采用缓存技术,存在缓存溢出而丢失信息的风险。
所以,USB UART只能部分满足UART调试的需求,大部分需求不能满足。
ADB(Android Debug Bridge)是Android提供的一个通用调试工具,物理接口是USB,PC端工具通过监听Socket TCP端口的方式实现与下位机的通讯,实现对下位机的控制与调试信息的传输等,可以在PC端对下位机进行全面的操作。
ADB工具很强大,但都是建立在android平台的基础上,适合调试android的应用程序,对跨平台的应用程序也是鞭长莫及,对底层和驱动的调试更是无能为力。所以ADB工具的适用范围不足以满足系统级以及驱动开发人员的调试需求。
综上所述,需要一种便捷的接口调试方式和手段,能同时满足从系统底层驱动到应用层的各种调试、debug场合。
通过pin复用关系,把JTAG和UART信号复用到SDIO接口上,如图1所示。
复用关系包含但不限于表1。
SD卡外形的PCB接口板如图2所示。
调试时,把定制的SD卡外形的接口板插入到SD卡槽内,引出对应的JTAG和UART信号,即可方便的进行各种调试,满足各种调试的场合。
本文方法具备以下几个特点。
表1 PIN复用关系表
图1 JTAG/UART复用到SDIO示意图
热插拔设计,即插即用。
转接板满足JTAG调试需求,也满足UART调试需求,一举多得。
转接板与SD(TF)卡座兼容,做到非侵入式(破坏式)调试,节省调试样机的焊接人力物力。
只需改变pin脚复用关系,无需增加SOC成本。
可以预见这种处理给调试带来的极大的便利。不管是底层调试需用用到的JTAG,还是系统、驱动和应用调试需要用的UART,即插即用的方式贯穿整个项目开发过程,适用各种调试场合。节省大量焊接连接线缆的人力物力以及时间消耗。由于使用即插即用的转接板,无需在PCB再焊接各种JTAG、UART。转接板做成SD(TF)卡形式,调试时直接插入到SD(TF)卡座内,不再是侵入式(破坏式)调试,降低成品机特别是返修机的调试、维护成本。
图2 SD卡接口板示意图
本文针对现有JTAG和UART接口在SOC调试出现的问题,研究了一种便捷的接口调试方式和手段,能同时满足从系统底层驱动到应用层的各种调试、debug场合。
10.3969/j.issn.1001-8972.2015.15.021