欢迎来到天天文库
浏览记录
ID:44164633
大小:142.29 KB
页数:3页
时间:2019-10-19
《BDM 调试介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MC68HC912B32背景调试模式介绍(一)背景调试模式背景调试模式(BackgroundDebugMode)是当前MCU普遍采用的调试方式之一,它可用来进行系统开发,在线调试和编程,应用程序的下载和在线更新。因为BDM控制模块不寄居在CPU中,所以BDM硬件命令可以在CPU正常运行时被并行执行,其他的BDM命令是基于固件的,且必须在CPU处于背景调试模式下才能被执行。BDM模块利用CPU的空闲周期和CPU进行通信,必要时可以从CPU的工作周期中偷取一个周期。以CPU12为内核的MCU的运行模式有单片方
2、式(singlechip)和扩展方式(ExpandedMode)两种,运行模式主要由BKGD,MODB和MODA引脚的状态决定。在单片模式下又有两种运行模式:普通运行模式(Normalsinglechip)和特殊运行模式(Specialsinglechip),而只有在特殊模式下BDM才能被激活,因此特殊单片模式又称BDM模式。PC通过BDM头与目标机相连,如图1所示。RS-232BDMCableBDMTargetPCBDM插头图1PC通过BDM和目标机相连(二)BDM串行接口BDM串行接口通过BKGD引脚
3、和外部主机进行通信单线通信,该引脚需要一个外部控制器在BKGD引脚上产生一个下降沿来指示位通信的开始,每一位的传递需要至少16个E时钟周期。BKGD是一个漏极开路驱动的引脚,平时靠内部上拉电阻维持高电平。可以被外部控制器或者MCU驱动。如果在两个下降沿之间的时间超过512个E时钟周期则会产生超时,此时硬件将清除命令寄存器。目前常用的BDM调试头如图2所示。BKGD12GNDNC34RESETVFP56VDD图2BDM调试插头引脚定义(三)进入BDM模式如果要使用固件指令则必须先将BDM激活,BDM在任何操
4、作模式下都可以被激活。以下介绍让目标机进入BDM调试模式的方法:首先,将目标机的BKGD引脚拉低,然后给目标机的RESET引脚加低电平,即给目标机复位,复位脉冲要足够宽,至少要大于目标机的512个E时钟周期。当然如果用MCU制作BDM调试头,则至少需要两个I/O口来控制目标机的BKGD和RESET引脚,否则只能通过硬件跳线的方式将BKGD跳低电平,在让目标机复位后再将BKGD跳高,以进入目标机的BDM模式。在进入BDM模式以后,带有程序的片内BDM专用ROM将替换$FF00~$FFFF的Flash,这部分
5、空间在普通单片方式下是存放中断向量的。(四)BDM指令:BDM有两类命令,一类是在一般运行模式下都可以直接执行的,被称为硬件命令(HardwareCommand);另一类则是通过BDM方式下强制换成$FF00~$FFFF空间的ROM中的程序执行的,被称为固件指令(FirmwareCommand)。硬件指令允许读或者写目标系统包括片内RAM、EEPROM、I/O和控制寄存器在内的所有内存。硬件指令可以不在BDM模式下而被执行,表1列出了BDM模块的硬件指令。表1BDM硬件指令命令操作码(Hex)操作数描述B
6、ACKGROUND90无进入背景调试模式。16位地址READ_BD_BYTEE4读取BDM内存区一个字节。16位数据输出FF01,正在执行用户程序,BDM执行不能执行。00000000输出FF01,STATUSE4BDM执行可被执行。10000000输出FF01,BDM被激活,等待接受命令。11000000输出16位地址READ_BD_WORDEC读取BDM内存区两个字节。16位数据输出16位地址READ_BYTEE0读取BDM内存区以外的内存区一个字节。16位数据输出16位地址READ_WORDE8读取
7、BDM内存区以外的内存区二个字节。16位数据输出16位地址WRITE_BD_BYTEC4往BDM内存区写一个字节。16位数据输入ENABLEFF01,写1*******到$FF01,置位ENBDM位,使允许C4FIRMWARE1*******(输入)执行固件指令。16位地址WRITE_BD_WORDCC往BDM内存区写两个字节。16位数据输入16位地址WRITE_BYTEC0往BDM内存区以外的内存区写一个字节。16位数据输入16位地址WRITE_WORDC8往BDM内存区以外的内存区写二个字节。16位数
8、据输入固件指令必须在HC12单片机的BDMROM中执行,且CPU必须在背景调试模式下才能执行,通常使用硬件指令BACKGROUND使CPU进入背景调试模式。当BDM被激活时,BDMROM就被分配到地址空间:$FF20~$FFFF,同时七个BDM寄存器被分配到地址空间:$FF00~$FF06,此时CPU就可以通过执行ROM中的代码来完成相应的固件指令操作。表2介绍了常用的三个固件指令。表2BDM固件指令命令操作码(Hex)操作数
此文档下载收益归作者所有