Board logo

标题: MC68HC912B32背景调试模式设计(2) [打印本页]

作者: 我是MT    时间: 2015-10-6 10:18     标题: MC68HC912B32背景调试模式设计(2)

3.2 BDM调试器系统软件设计
CPU12的BDM通信协议也称为单线通信协议。下面按照该协议,以JB8作为主控制芯片详细介绍B32的BDM调试系统的软件设计。在程序开始前,需要宏定义一些常量以方便下面程序的调用。具体的宏定义有:

3.2.1 调用读写汇编子程序
通过调用读写汇编子程序,可以读取和发送一个字节,具体函数如下:

调用写子程序的输入参数是需要被写的一个字节,调用读子程序的返回参数是读取到的一个字节。
3.2.2 读写汇编子程序
主机方以下降沿通知目标机方的BKGD端,位通信开始,每一位传输至少需要16个时钟周期。具体过程如下:

主机首先拉低BKGD引脚,并时低电平维持时间不短于512个时钟周期,目标机探测到下降沿信号后清命令寄存器,同时等待接收主机的BDM命令。
主机写位0到目标机BKGD端的操作为:主机拉低目标机的BKGD端不少于12个时钟周期,目标机在探测到低电平以后的第10个周期对BKGD采样,读入该位的0。
主机写位1到目标机BKGD端的操作为:主机拉低目标机的BKGD端2-4个时钟周期后释放BKGD端,使之为高电平,目标机在探测到低电平以后的第10个周期对BKGD采样,读入该位的1。
下面是写一个字节的汇编代码:


主机读目标机BKGD端的信息时,主机拉低目标机BKGD端2-4个周期后释放BKGD端,然后定义该引脚为输入状态,读取BKGD端的电平,如果目标机输出为0电平,则继续拉低BKGD端,从探测到主机拉低BKGD端起持续13个时钟周期,所以主机的读操作应在从拉低BKGD线算起的13个时钟周期内完成,对于目标机输出为1的情况,无需目标机输出高电平,因为BKGD端已用电阻上拉,只需定义该引脚为输入,则自然会使之为1。
下面是读取一个字节的汇编代码:
对于硬件命令,命令之间间隔要大于150个时钟周期,对于固件命令,送出读命令到读取数据之间要延迟32个时钟周期,写命令后面可紧跟需要写的数据,但与下一条命令之间要间隔32个时钟周期。
3.2.3 测试程序
为了测试以上程序的正确性,特用VC6.0编写了一个计算机端的测试程序。该程序通过串口与JB8通信,以完成对B32 Flash的读写和擦除。由于源代码较长,限于篇幅不在此列出。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0