获得带有调试信息的OMF目标文件后,加载到如图1所示、的Proteus单片机仿真电路中,可以实现Proteus下的C源码级调试,如下图所示。
在Proteus仿真电路中,选中数字分析窗,按CTRI+T添加一条轨迹U4 (P2.1/A9),分析P2.1脚的输出信号,然后按空格键进行图表式仿真分析,可获得输出波形如下图所示。该波形与图25所示逻辑分析仪得到的波形是一致的。
与Keil相比较,Proteus对单片机的调试功能有限,为拓展Proteus的单片机调试能力,发挥出Proteus硬件系统仿真的优势性能,Proteus提供了与Keil联合调试的操纵方式。为实现这一过程,事先需要安装Proteus的AGDI驱动程序vDMAgdi.exe,安装成功后会在u Vision 4的调试器驱动选项中多出一项“Pro-teus VSM Simulator”并选择之,如图29所示。
与此同时,在Proteus中需要设置相应的调试方式,如下图所示,在Proteus的Debug菜单下勾中“Use Remote Debug Monitor”项,然后在Keil中启动调试即可。单片机中的调试信息可以在Keil中查看修改,系统硬件的运行情况可以在Proteus中直接观察。联调模式下Keil的调试操作同其软件仿真器操作完全一致,上小节所述命令与方法同样有效。
上面介绍的调试方法都是基于图形界面的,使用方便。而这些便捷的图形化的调试操作功能实现的背后都有相应的调试命令为之支撑,这些图形化调试操作的命令行格式均一一在Com-mand窗口中显示,如下图所示。
调试命令可以在命令窗口中直接输入,命令行输入的命令不但可以完成所有的图形化调试操作,而且还可以完成图形化调试操作实现不了的调试功能。如果我们掌握了常用的基于命令行的调试命令,就可以更有效地开展调试工作。笔者认为,了解并熟悉调试命令行的使用,包括工具链命令行的使用,对于一个优秀的电子工程研发人员而言,是一种必要的专业素养。下面着重介绍一下μ Vision 4的调试命令及其使用,μ Vision 4的调试命令列出如下表所示。
注意到,上表所示的调试命令有全部大写的,也有大小写混合的,不能混淆。在调试命令窗口输入的命令只要大写部分,不能输入小写部分的字母,但是输入的命令字母不区别大小写,表中书写完整是方便阅读及使用。u Vision 4的调试命令可以分为普通(General)命令、断点(B rea kpoint)命令、存储(Memory)命令和程序(Program)命令4类,下面分别介绍每项中常用的调试命令使用方法。
(1)常用普通调试命令。
①LOAD
语法:LOAD path\filename[options]装载目标文件或Intel格式的HE×文件。
说明:LOAD命令用于μVision 4调试器指定的一个需要载入的调试目标文件。如果在目标选项调试对话框中选中“LoddApplICation at Startup”项,如下图所示,那么当启动uVision 4调试器的时候就会自动将当前工程的目标文件载入。u Vision 4调试器会分析加载的文件类型,其支持的文件为可以包括调试信息的绝对目标文件或者是不包含调试信息的HE×编程文件。
举例
>LOAD D:\C51\MCU.OMF
如果路径中含有空格,那么路径需用双引号,而且单反斜杠改为双反斜杠,如:
>LOAD“D:\\my path\\MCU.OMF”
② RESET
说明:RESET不带参数时,Ll Vision 4调试器重启仿真或者复位目标CPU,相当于处理器重新启动,PC置为O且所有的特殊功能寄存器恢复为复位默认值,目标程序与所有调试信息被载入。使用过程中复位CPU的情况比较常用。
说明:INCLUDE命令用于指定一个命令文件,命令被从此文件中一行行地取出并传递给u Vision 4来执行。INCLUDE路径及文件参数的用法同LOAD命令。INCLUDE文件可以嵌套4层,使用该命令时必须先停止目标程序的执行,在命令窗口中可以按ESC键来停止程序运行。
说明:若无模块或函数名被指定,SCOPE命令将显示目标程序中所有函数的地址域;若只有模块名被指定,则显示模块程序中的所有函数的地址域;若模块和函数名均被指定,则显示指定
说明:BreakSet命令用于设置一个断点。当断点可用时,会停止目标程序的执行或者执行指定的命令。BreakSet命令支持执行、访问、条件三类断点,其功能与断点对话框的作用是一致的。断点定义时所带参数的含义详见下表。
需要注意的是,条件断点使用灵活但是由于要不断计算条件表达式,会对程序执行的速度有一定影响,执行断点和访问断点则不会。执行断点的设置地址只能在一条指令的第1字节处,否则是无效的断点。访问断点的存储类型必须唯一,其表达式中可用的操作符有:&、&&、<、<=、>、>=、==、!-。
说明:BreakList命令用于列出所有断点。断点的显示格式如下图所示。
说明:BreakDISAble命令使得当前定义的断点失效。一个失效的断点仍然会在断点列表中,但是执行目标程序时,uVision4会忽略掉这些不可用的断点。
说明:BreakEnable命令可以使得当前定义了但被BreakDisable命令禁止掉的断点重新变为有效。
说明:Display命令用于在命令窗口中显示一块存储区域的内容。存储区域内容可同时用十六进制和ASCII形式显示,如下图所示。
本文关键字:联合 电脑-单片机-自动控制,电子学习 - 基础知识 - 电脑-单片机-自动控制
上一篇:应用于单片机的高精度插补算法