KEIL软仿真技巧谈


转载自——百度文库


KEIL软仿真技巧谈(1)

 

 

 

废话少说,接上一章,话说建立了仿真环境后,我们就可以实现软件仿真了。在仿真状态下View菜单有一堆东西:

头4个BAR都是普通的工具栏了。这里说一下Debug ToolBar,就是调试工具栏:

单片机复位
全速运行
运行中STOP
单步运行,可以进入函数内运行
单步运行,可以跳过函数
如果运行进某个函数,此键能直接跳出当前函数
运行到你的光标处
找回你的PC指针:当你的程序有好几个文件的时候,有时候你会不知道运行到哪里去了,按这个你就可以找会你的PC指针所在处了。
仿真记录,相信很少人用到,其实这个东西可以记录下你的仿真过程,然后回放。从回放的“录象”中你可以观察每条指令的状态,例如对应的运行时间,各个寄存器的值。个人觉得这个功能在调试OS的时候特有用:)
ASM代码和C代码之间的转换,这个也是NB的调试利器,一般隐藏的BUG在ASM下无所遁形。
WATCH窗口,如果你不知道什么叫watch窗口,那证明你以前一定没写过程序。
挺逗的功能,可以看到每个函数有多少条指令,和你已经运行了某个函数的百分之多少代码。我从来不用这个东西的,呵呵
串口显示窗,如果你的程序有串口程序,那么单片机串口的输出就显示在这个窗上,如果你要对单片机串口输入数据,就在串口窗上打字就是了。
Memory Window,存储器观察窗,这里可以看code,data,xdata对应的数据
各函数占用时间的比例,个人感觉用处不大,在全速运行的时候会动态显示,用来调试UC/OS的时候可以看到各个任务占用的时间比。不过你需要先把你要观察的函数添加到表上才可以用。
这个东东一般没用。

好了,上面一堆东西,还是具体说说比较复杂的吧,其它东西你用过就自然会的了。

1

仿真记录,这个在软件仿真的时候有,至于硬件仿真就看你仿真器是否支持咯。当你需要记录的时候,就按,运行一段时间了,就按,那么刚才运行过的整段程序就会重现你眼前:

 

你可以选择当前灰色区域的所有指令,窗口都会显示那条指令对应的寄存器值等信息。

2

观察变量窗,这里可以用来观察全局变量和局部变量的,不过要你预先手动添加。具体方法就是找到你要观察的变量,然后点右键添加进指定的WATCH窗口,如下图:

 

添加后打开WATCH窗口就看到你刚才的变量了:

显示的数制可以是十进制和十六进制的,只要你在当前变量上点右键选择:

3

Memory Window, 这里可以看到个存储器的值,只需要在窗口上敲你需要显示的变量区和地址:

不同的英文字头对应不同的区域
c: 代码区,也就是ROM
d: data区,就是片内RAM
x: xdata区,片外RAM

如果你想修改某个区的值,只需要点右键Modify Memory at xxx 就可以修改了:

 

唉,打字打到手软,贴图贴到累,这一章先到此为止。还不会用DEBUG工具栏的看完应该会用了吧~~~

 


RealView MDK具有强大的调试功能。正确使用这些调试功能可以更快更准地发现软件中存在的问题,其中有些调试小技巧并不是很引人注意,在实际工作中如果能注意并使用这些小技巧将大大方便我们工作。下面从Symbol窗口、逻辑分析仪和Watch窗口三个方面来介绍一下调试中的小技巧。

一、Symbol窗口

ymbol窗口可以查看虚拟寄存器和外围特殊寄存器的名称、地址、类型。当我们想要在内存窗口中查看外围寄存器的值时。是不是需要去手册上查一下这个寄存器的地址呢。答案是――可以,但有个更方便直接的方法,就是从Symbol窗口可以查到所有外围特殊寄存器的地址和类型。在调试时打开Symbol窗口的方法:单击MDK菜单View然后点击,在工程工作区左边即可看到该窗口,如下图。

二、逻辑分析仪

逻辑分析仪可以跟踪全局变量、虚拟寄存器和外围特殊寄存器的值。

1、我们可能需要将IO端口的数据寄存器某位的值在逻辑分析仪上显示出来。一种方法是在逻辑分析仪的Setup对话框里通过Mask来屏蔽那些不需要显示的位。还有一种更简单的方法,就是在寄存器名后面加上后缀“.位序”。比如A口有16个引脚。其对应的数据寄存器为PORTA(16位)。现在需要跟踪引脚7的值。则只需添加信号PORTA.7即可,系统会自动设置Mask值。 实际上,任何跟踪的信号,只要是整型数据都能使用上面提供的方法。这对于位显示非常直观,简捷。

2、当我们需要在逻辑分析仪中显示Symbol窗口中列出的虚拟寄存器和外围特殊寄存器的值时,没必要在Setup对话框中写出该信号的名称。只需将Symbol窗口的寄存器名直接拖到逻辑分析仪中即可。

三、Watch窗口

Watch窗口可以查看程序中全局变量的值并实时更新。也可查看外围特殊寄存器和虚拟寄存器的值。我们可以在Watch窗口中按F2然后将变量名敲进去,回车就可看到该变量的值,但更方便的方法是可以直接将选中的该变量或寄存器名直接拖到Watch窗口中。

注:调试窗口可以在View菜单下根据需要让其显示或隐藏。

 

 


猜你喜欢

转载自blog.csdn.net/qq_38405680/article/details/81365002