针对Motorola微处理器的BDM调试系统的设计
发送数据时最高位为控制标志,该位保留,在开发系统向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.3 BDM调试软件的设计
该软件应该具有如下基本的功能:系统初始化,重启系统,检查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相应软件的功能,为产品的快速低成本开发做出了贡献。
系统 设计 调试 BDM Motorola 微处理器 针对 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)