王朝网络
分享
 
 
 

针对Motorola微处理器的BDM调试系统的设计

王朝厨房·作者佚名  2007-01-04
宽屏版  字体: |||超大  

简敬元,龙占超

(华中科技大学电信系湖北 武汉430074)

目前应用Motorola微处理器开发嵌入式系统时基本上都是使用Motorola公司提供的开发系统或者CodeWarrior公司的开发系统等付费昂贵的调试工具。最近由于Flash技术的发展,特别是一些CPU(如CPU12/16/32/32+,PowerPC5xx/8xx,ColdFire等) 可以用JTAG口在背景模式下调试,故仿真器已可以省去。而且随着BDM调试模式逐渐标准化,自制BDM调试工具变得越来越容易,特别是对于支持BDM调试模式的多种类型的CPU,自己设计的BDM调试系统只需少量的改动即可移植使用,而不必重复购买价格昂贵的调试开发系统,这样做可以节省大量的成本。

1BDM调试模式介绍

Motorola 微处理器的调试模块针对不同场合的应用分别提供了3种调试支持:实时跟踪、BDM调试和实时调试。实时跟踪是要求能够跟踪应用程序的动态执行路径,这是实时系统的基本要求;在BDM调试方式下,处理器被停机,大量的命令可以被发送到处理器中访问内存和寄存器,外部仿真系统使用一个三脚、串行的双工通道与处理器通信;实时调试则可以不需要CPU停止运行,调试中断允许实时系统执行一个惟一的服务例程,快速保存主要的寄存器和变量等上下文内容,并使系统立即返回到正常操作,外部的开发系统能访问被保存的数据是因为硬件支持处理器和BDM初始化命令的一致性操作。

其中BDM调试模式为设计人员提供了一种低层次的调试手段,让用户能够中断CPU的运行,单步调试程序,读取CPU的各个寄存器的内容,这些仅仅是通过向CPU发送几个简单的命令就可以实现,显然,这样使调试软件的设计很简单,通常自己就可以编写。硬件调试卡的设计也非常简单,关键是要满足好通信时序关系和电平转换要求。

这几种调试方式都共用26脚的BDM调试引脚信号,这些信号的定义如表1所示,BDM调试主要使用了DSCLK,DSI,DSO三种信号。

2BDM调试系统的运行条件及其系统组成

(1)系统运行的限制条件

尽管许多BDM命令可以与处理器并行操作,但是要想安全可靠地使用BDM操作,最好的方法就是让处理器停止运行。但是停机操作对于那些要求实时响应的应用程序的调试显然不理想。但是由于实时跟踪和实时调试模块与BDM调试模块引脚共用,所以升级和扩展BDM调试系统,可以很容易支持实时应用程序的调试。

(2)BDM调试系统组成

该系统主要由3个部分组成,如图1所示。

BDM 调试卡作用是完成从并口到BDM调试端口(信号定义如表1所示)的操作时序的转换;BDM调试卡的驱动程序则是完成开发系统与待开发的嵌入式系统的通信过程处理,如合成一定格式的数据包、解释接收到的应答数据或者微处理器的状态数据等;BDM调试软件则是功能软件,完成读写指定位置的Flash或者 SRAM数据、暂停、复位等功能。

值得注意的是,由于现在BDM调试模块的标准化,调试卡和驱动程序在不同型号的CPU上将具有通用性,只是BDM调试软件需要根据各种CPU对应的指令集来稍加修改即可复用。下面将以作者开发的一个针对Motorola公司的32位单片机MCF5272设计BDM调试系统的过程进行论述。

3CodeFire系列处理器MCF5272的BDM调试系统的设计

3.1BDM调试卡设计

BDM 接口的串行操作时序分析如图2所示。从图2中可以看出,在调试模块的串行状态机中所有的事件是基于处理器时钟(PSTCLK)的上升沿的。DSCLK的频率是PSTCLK的1/5,并且DSCLK的上升沿相对于PSTCLK的上升沿有一定的延时。这里的 DSCLK的作用类似于周期性的使能信号。每一次串行数据的传输可分为4个阶段:C1,C2,C3和C4。在DSCLK的高电平期间,数据从DSI输入,经过2个PSTCLK周期的同步(C1和C2)而被采样,然后在DSCLK的低电平期间PSTCLK的第1个上升沿处(C3)来临时BDM状态机改变状态,随后在第2个PSTCLK上升沿(C4),DSI准备传送新的数据,DSO上则输出原来数据输入相对应的应答数据。BDM状态机在DSI上数据采样检测到的时候改变状态,当所有的数据传输完毕,BDM状态机的状态也就不会有什么改变。

根据BDM端口的信号定义,不难看出这些信号都是单向的。其中要注意的是:PSTCLK是调试模块从处理器中获取的,而DSCLK则是外部的开发系统产生的。要实现从并口到BDM口的时序操作转换,最简单的方式是使并口工作在SPP端口模式下的4位组模式,在该模式下每次通过状态端口的4个状态位反向传送半个字节,两次传输完成向PC机传送一个字节数据[1]。他的操作时序如图3所示。

由于所有的信号都是单向的,时序和逻辑比较简单,因此,采用GAL器件实现并口操作时序与BDM操作时序的转换。GAL要实现的功能主要是数据的串并和并串转换。

GAL器件与并口接口的信号有:

输入信号:D0~D7,C1(主机忙状态线),DSCLK(提供串行通信时钟信号)。

输出信号:S3,S4,S5,S7(这4个信号做数据反向输出),S6(给PC机提供一个中断信号)。

他与BDM端口接口的信号有:

输入信号:PSTCLK,DSO。

输出信号:DSI。

故需配置12个输入端和6个输出端,故选用74GAL16V8的器件即可满足要求[2]。现在GAL器件要实现的即是将与并口接口的输入信号 (D0~D7,C1,DSCLK)转换成与BDM接口的输出信号(DSI),同理,也要将与BDM端口接口的输入信号(PSTCLK,DSO)转换成与并口接口的输出信号(S3,S4,S5,S6,S7),实现了这2个转换,然后对GAL编程,设计PCB版图,可以很快做出BDM调试卡。

3.2BDM驱动程序的设计

BDM 调试卡已经实现了并口到BDM口的时序操作转换,按照一定的数据格式传送和接收数据则是BDM调试卡的驱动程序要完成的工作,驱动程序对数据的处理分为2 层:底层完成基本的字节数据的收发(恢复和拆分);上层则完成数据包的收发。底层的数据收发原理在调试卡的设计过程中已经做了详细的介绍,以下主要介绍数据包的收发处理程序设计应注意的事项。

从BDM操作时序图中可以看出,串行通道数据传输速度从直流到PSTCLK频率的1/5频率之间,该通道使用双工模式,数据可在主控设备和从控设备之间同时发送和接收,每次传送的数据块由一个17 b的数据包组成,该数据包由一个状态/控制位和一个16 b数据字组成。数据格式如下所示:

发送数据时最高位为控制标志,该位保留,在开发系统向CPU发出命令和数据时,该位应该被清除。

接收数据时最高位为状态标志位,指示从CPU返回的消息类型。他与数据域及数据表示的消息含义之间的关系为:

显然,由于每次只能传送一个字节,故发送一个数据包需要执行3次传送操作。应注意由于并口工作在4位组模式,每次只能接收4 b数据[1],而并口操作是以字节为单位进行的,因此,实际上接收一个数据包最少应该执行6次接收操作,而不是5次。也即是说最后剩下一位数据也要当一个字节传送,这在驱动程序的设计当中很容易弄错。

BDM 调试模块为外部开发系统提供了12个基本类型的命令(用助记符表示):RAREG/RDREG(读A/D寄存器),WAREG/WDREG(写A/D寄存器),READ(从存储器读数据),WRITE(向存储器写数据),DUMP(与READ命令结合使用转储数据块),FILL(与WRITE命令结合使用填充数据块),GO(继续执行程序),NOP(不做任何操作,可以被用做一个空指令),RCREG(读系统控制寄存器),WCREG(向系统控制寄存器写入数据),RDMREG(读调试模块寄存器),WDMREG(写向调试模块寄存器写入数据);各种命令和他对应的应答数据的格式可以从MCF5272芯片资料上查到。上层驱动程序最终的任务就是实现这12种基本命令数据和应答数据的收发,并为调试软件提供相应的函数调用接口,具体的驱动程序设计比较简单,关键是要注意对从调试模块返回的状态数据进行出错处理。特别是应该区别CPU还没准备好和总线操作被中止2种消息。前者出现的比较多,一般是在CPU正在执行一个任务,不能及时响应BDM命令时返回的消息,而后者则往往是CPU执行了2条有冲突的指令(也即是非法访问资源)。这个在驱动程序中看不出有很大的区别,但是在调试应用程序时经常报告“BUSError”信息。

3.3BDM调试软件的设计

该软件应该具有如下基本的功能:系统初始化,重启系统,检查CPU外围期间工作是否正常,读写Flash中的数据,读写SRAM中的数据,单步执行程序。

调试软件主要是调用驱动程序实现的12种BDM调试命令接口函数来实现各种功能的。其中需要传递参数给驱动程序的有:

①检查外部设备接口是否工作正常:如RS232串口、USB口、并口、网口等。这类操作需要接口地址和中断号等参数,并且需要返回操作结果。

②读写SRAM和Flash中的数据:这些操作需要提供存储器的地址范围。

调试软件的设计因开发系统的操作系统不同,在实现上有比较大的区别,但处理过程基本相同,因此,软件的设计也比较简单,没有必要赘述。

3.4系统运行及其测试

应用MCF5272做嵌入式系统开发时,开发平台的操作系统是RedHatLinux,因此,驱动程序和调试软件都是针对Linux设计的。驱动程序将 BDM调试卡作为一个字符设备看待,BDM卡的初始化是在/usr/src/linux/driverschar/mem.c中添加BDM卡初始化代码[3],该设备的基本入口点在驱动程序的file_operation结构中,对BDM卡的操作命令均在此实现,具体代码不再详述。

调试系统做整体测试时,首先要在Linux下创建一个字符型的BDM设备,然后执行insmod命令将驱动程序模块打入操作系统内核中[3],在成功地创建了BDM设备文件和安装好BDM调试卡的驱动程序之后,就可以调试和执行该调试软件了。

4结语

BDM调试系统具有成本低、操作方便、移植简单等特点。在Linux环境下针对MCF5272成功开发了BDM调试系统后,又先后将该系统软件稍加改动,就轻易地移植到与MCF5272同属ColdFire系列的MCF5249和Power PC系列的MPC555等CPU上,并且在Window下重新编写了驱动程序和调试软件,使用图形界面操作,基本上达到了CodeWarrior相应软件的功能,为产品的快速低成本开发做出了贡献。

本文摘自《现代电子技术》

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有