S12单片机BDM调试器使用技巧
2009-05-19
作者:薛 涛,邵贝贝
摘 要: 全国大学生“飞思卡尔杯”智能汽车竞赛推荐使用Freescale公司的MC9S12系列单片机为主控芯片;有USB接口的TTBDM调试器是主要软件调试工具。TTBDM调试器通过USB接口与PC通信,BDM接口与目标CPU通信,实现嵌入式软件的在线调试。根据往届车模竞赛中参赛者遇到的一些问题和本中心在长期支持国内S12系列单片机用户中积累的经验,总结出BDM调试器的用法和注意事项,提供一些使用技巧,以求对参赛者和S12产品开发工程师有所帮助。
关键词: 9S12单片机;BDM;TTBDM
第四届全国大学生“飞思卡尔杯”智能气车竞赛推荐采用最新的MC9S12XS128(以下简称XS128)单片机作为主控芯片,替代MC9S12DG128。XS128是Freescale公司推出的S12系列单片机中的一款增强型16位单片机。片内资源丰富,接口模块有SPI、SCI、IIC、A/D、PWM等常见模块,在汽车电子应用领域具有广泛用途。XS128和以往大赛使用的S12DG128系列单片机一样,调试接口都是使用Freescale公司传统的BDM(Background Debug Module)接口。
1 MC9S12XS128单片机介绍
(1)CPU:增强型16位HCS12 CPU,片内总线时钟最高40 MHz;
(2)片内资源:8 KB RAM、128 KB程序闪存、2 KB数据闪存;
(3)串行接口模块:SCI、SPI;
(4)脉宽调制模块(PWM)可设置成4路8位或者2路16位,逻辑时钟选择频率宽;
(5)1个16路12位精度A/D转换器;
(6)控制器局域网模块(CAN);
(7)增强型捕捉定时器。
MC9S12XS128单片机有112、80和64引脚3种封装形式。80-pin封装的单片机没有引出用于扩展方式的端口,仅引出了一个8路A/D接口。竞赛可使用112或80引脚封装器件。
2 BDM接口和使用
BDM调试器内部有一个8位的MC9HC08JB16单片机,该单片机有USB接口,可与PC机信息交互。HC08单片机和S12单片机间仅使用一根I/O线通信,这根相连的信号线名为BKGD。HC08单片机将BKGD置为输出,以串行发送命令,发送完成后转为输入,以接收信息。S12单片机收到命令后转为输出,根据调试器发来的命令回送信息,然后立即转入接收态。BDM工具以此方式实现S12单片机的在线调试、内部闪存的烧写等功能。关于BDM接口的实现,读者可以参考Freescale任何一款S12单片机的器件手册,其对BDM接口的命令字、交互模式等都有详细描述。这里主要介绍如何使用BDM接口。
BDM接口虽然只有BKGD一根信号线,但实际使用过程中,Freescale规定用一个双排、6引脚的接插件做BDM接口,如图1所示,引脚间距为2.54 mm(100 mil)。
虽然使用的是6引脚接插件,实际上有用引脚只有4个。其中BKGD连接到S12处理器的BKGD引脚,RESET连接到S12处理器的RESET引脚,GND是S12目标板的地信号,而VDD信号是来自目标板的电源信号。VDD信号的连接将在下文中详细阐述。
BDM接口的使用,需要配合PC上安装的CodeWarrior软件和BDM调试工具TTBDM。BDM接口是S12单片机专用的调试接口,PC上运行的调试软件需要通过USB接口连到HC08单片机,经过HC08单片机的一根I/O线连到S12单片机的BKGD引脚实现PC和S12单片机的通信,进而实现在线调试和烧写闪存功能。
3 利用“BDM for S12(TTBDM)”调试程序
BDM调试工具主要实现三方面的功能:
(1)应用程序的下载与更新;
(2)单片机内部资源的配置与修复;
(3)应用程序的动态调试。
本中心提供面向S12系列单片机的BDM工具,TTBDM在硬件设计上做了改进,兼容S12和S08两种BDM调试器。软件基于Daniel Malik的TBDML(forums.freescale.com)以及open source BDM软件。TTBDM可以下载S12或者S08的BDM调试固件,分别用于调试S12和S08单片机。本文仅从用户角度讲述“TTBDM”的使用方法和常见问题的解决办法。详情请登陆本中心网站www.tsinghua-mot.net,下载最新版本的“BDM for S12(TTBDM)”用户手册。
4 TTBDM硬件设置
BDM for S12(TTBDM)设计了跳线开关,允许用户对TTBDM进行一些特定配置,以此满足不同用户的需求。打开TTBDM的硬件小盒,能够看到4个可以设置的跳线,分别是J4、J5、J6和J7,如图2所示。
图3为J4跳线的引脚图。J4用来选择6-pin双排插针BDM接口中BKGD信号是在第1引脚引出还是从第3引脚引出。当J4跳线连接在左侧靠近电路板边沿的标记3引脚时,BKGD信号连接到BDM的第3引脚,如图3(a);当J4跳线连接在右侧靠近R12的标记引脚时,BKGD信号连接到BDM接口的第1引脚,如图3(b)。
J4端接线在1位置处适用于按照Motorola规定的BDM信号定义。采用这种定义时,BDM头一定不能插反,插反会导致VDD与BKGD短路,烧毁BDM中HC08单片机的I/O端或S12单片机的BKGD端,甚至两者都被损坏。J4短接线在3位置处,适用于专门为大学生车模竞赛设计的S12XS单片机小模块,其优点是如果将BDM插反,也不会损坏S12单片机和BDM调试器。
J5用来给TTBDM的HC08JB16单片机编程。请注意一定不要在J5上插短接线。
J6用于调试S08单片机,在S12的调试中也一定不要插上短接线。
J7是为了保留BDM调试接口的一些特性而设计的,J7允许用户设定是否使用PC机的USB口上的电源给目标板供电,供
3.3 V还是供5 V。建议不要用PC的USB口给目标板供电。默认情况下,J7不焊接任何插件,表示不向目标板供电。由于PC机的USB接口可提供5 V/500 mA的供电能力,所以TTBDM调试头不需要从目标板上取电。但TTBDM并不知道目标板用的是5 V电源还是3.3 V电源,也就是说BDM上的VDD是5 V还是3.3 V。为了目标板的VDD电压适应5 V或3.3 V的BKGD和Reset电平,需要从目标板取电,以调整BKGD和Reset电平。如果目标板是5 V供电,则BDM接口的信号电平为5 V;如果目标板是3.3 V供电,则BDM接口的信号电平为3.3 V。其他电平也可以工作,如接口是2.5 V等。这部分实现电路如图4所示。
其中VCC_USB是从USB接口来的5V电源,用来给整个TTBDM调试器供电;而VCC_SHIFT是从目标板来的电压VDD,不同VDD使得RESET信号和BKGD信号工作在不同的电压范围,能够与目标板VDD匹配。从目标板取出的VDD电流小于1mA。
5 TTBDM使用中常见问题及解决办法
问题1:正确安装了BDM for S12(TTBDM)的驱动程序和动态链接库,并用BDM连接了目标单片机后,在Hiwave.exe的“TBDML HCS12”菜单中没有出现“Flash...”项,无法对目标单片机进行调试。
解决办法:首先,用户应该确保目标板供电正常,BDM for S12(TTBDM)默认的电源工作方式是目标板自供电。如果还有问题,用户应该打开BDM的包装小盒,查看跳线J4是否已经短接。
问题2:驱动程序安装正常,跳线没有问题,目标板供电,但BDM还是不工作。
解决办法:可能是用户的CodeWarrior版本不对,没有利用CodeWarrio V4.7以上的版本。安装高版本的CodeWarrior即可解决问题。
问题3:BDM调试目标板基本正常,能够下载程序、擦除闪存、设断点调试,但是,在某次使用中闪存突然被“锁死”,之后目标板无法继续使用。
解决办法:Freescale公司的HCS12系列单片机具有片内闪存的加密功能,对于加密或保护后的闪存,用户无法通过BDM调试工具对其闪存进行程序擦除、读取等操作。同时,如果用户在利用BDM调试单片机时操作不当,同样会使单片机出现闪存、无法读取、擦除和下载等问题。监控程序在$F000到$FFFF这一段加了保护,但并没有加密。即使对加了密的S12,也可以使用TTBDM工具方便地解锁和擦除。在决定使用擦除保护程序时,应考虑在出现单片机被锁定的情况下有没有能力解锁。对于闪存没有进入“保护模式”的单片机,如果利用BDM for S12(TTBDM)调试单片机,当用户点击“TBDML HCS12”菜单下的“Flash…”命令时,会出现如图5所示的正常情况。从图中可以看出,当前目标板单片机的FLASH_C000存储区域已有下载程序,状态为“Programmed”,其余模块为空,状态为“Blank”。因此,可以继续对该单片机的闪存进行读取、擦除和下载等操作。但是,在出现上述闪存加密问题后,HCS12系列单片机就进入了“闪存保护模式”,即Secure Mode。这时,如果利用BDM for S12(TTBDM)调试单片机,当用户点击“TBDML HCS12”菜单下的“Flash…”命令时,图5中部分FLASH区域的状态就会显示为“Skipped”。此时,用户便无法再对闪存进行正常操作。因此,需要解除闪存的“保护模式”(Secure Mode),执行Unsecure的操作。BDM for S12(TTBDM)提供了Unsecure的功能,具体操作过程较为复杂,请参阅用户手册。
以上提到的是在应用过程中发现的比较普遍的问题,也是用户经常咨询和讨论的一些问题。在设计之前最好能完整地阅读帮助文档以及芯片数据手册,了解各个工作状态。很多可能出现的问题在数据手册里已有明确说明。这样做在程序设计的前期可能会影响一些进度,但到后期调试阶段会带来极大的方便。至于工具使用上的问题,Freescale单片机/DSP应用开发研究中心会及时在大赛的官方网站上做出相应说明,请大家留意。
参考文献
[1] 邵贝贝.单片机嵌入式应用的在线开发方法.北京:清华大学出版社,2004.
[2] MC9S12XS128 Device User Guide.Freescale semiconductor,2008,5.