3.2 PICkit 2硬件调试器
PICkit 2 编程器除了可以烧写程序以外,还可以与MPLAB IDE集成开发环境相配合,作为硬件的调试器使用,这也是我们为什么称PICkit 2为编程器/调试器的原因。MPLAB IDE 允许将PICkit 2 用作在线调试器,可以让单片机在板上完成运行、检查和修改程序的过程。这样,你可以一边调试程序,一边测试硬件。
使用PICkit 2的调试功能
PICkit 2在作为调试器使用时,可以运行、停止、单步运行程序,设置一个或多个断点,也可以将处理器复位。当处理器停止运行时,可检查和修改寄存器的内容。
1)连接编程器和目标板。使用PICkit 2对于所有低档PIC 单片机和部分中档PIC 单片机在线调试时需要在编程器和目标板之间加入ICD转接头。PIC18系列单片机在进行硬件调试时不需要转接头,直接使用ICSP 编程接口进行调试。所以我们只要将PICkit 2编程器的USB接口与PC相连,将编程器的ICSP接口与目标板的ICSP接口相连即可。
2)检查编程器是否支持目标单片机。在菜单栏选择“Configure→Select Device”选项,如图3-16所示。
该对话框会显示MPLAB IDE集成开发环境下对于选定器件的支持情况,具体如图3-17所示。
在此窗口中:
在器件支持窗口中,红色的圆圈表示该设备对选定的目标单片机不支持;黄色表示该设备对选定的目标单片机提供beta 支持,即MICROCHIP尚未对其进行内部认证测试;绿色表示该设备对选定的目标单片机完全支持。从图3-17中不难看出,PICkit 2编程器不仅支持对PIC18F4520的烧写,还支持对该芯片的仿真调试。
3)配置位与在线调试。我们前面说过,部分PIC16中档单片机以及所有PIC18系列高档单片机在调试时不需要ICD转接头,直接使用ICSP端口即可。这样的PIC单片机有一个共同的特点,就是在配置字中都会有一个DEBUG 位,该位用于使能和禁止PIC 单片机的调试模式。当我们使用PICkit 2对这类芯片进行在线调试时,MPLAB IDE软件会自动地设置该位,确保调试的正常进行,所以我们在源代码中无须对该配置位进行干预,使用默认值即可。
4)编译写好的程序,之后在菜单栏“Debugger→Select Tool”选项里勾选“PICkit 2”,将其设为硬件调试器,如图3-18所示。
这时,硬件工具栏上会出现三组按钮,它们分别是:
调试工具条(Debug),如图3-19所示。这组按钮的功能我们在软件模拟器中已经做了介绍。
资源工具条(Resources),如图3-20所示。工具条上可以显示目标单片机支持的硬件断点的数量、已经使用的断点的数量等信息。
点击资源工具条上的蓝色“i”形按钮,可以打开断点详情窗口,如图3-21所示。窗口中可以显示出不同的断点类型及其使用情况。
PICkit 2调试工具条(PICkit 2 Debug Toolbar),如图3-22所示。该工具条与PICkit 2的编程工具条类似,我们分别来介绍一下这些按钮的功能。
单击“打开先进断点对话框”按钮,出现“PICkit 2 Advanced Breakpoints”窗口,如图3-23所示。
部分PIC18系列的单片机支持高级断点。高级断点允许在文件寄存器的某个地址处设置断点,并在读取或写入该文件寄存器时触发断点,让程序暂停执行。这种断点也可以设置为当从某个文件寄存器中读取或向该寄存器中写入特定值时,才会暂停执行。此外,还可以对任何种类的断点类型设置通过计数(Pass Count)。假如我们把某个程度存储器中断点的通过计数设置为2,程序会通过该断点两次而不停止,当程序第三次通过该断点时,断点会将程序暂停。所有断点的默认通过计数都为“0”,表示程序在第一次遇到断点时就会暂停执行。
5)在这里我们同样可以打开各种观察窗口,来查看每一条指令的运行结果。接下来只要单击“单步”按钮即可开始在线调试了。程序会自动打开汇编源文件窗口,程序指针会定位在汇编源文件的程序开始处,多次单步运行后,程序指针会跳转到C程序的主函数入口处,并且会顺序地执行程序,当程序执行到图3-24所示的位置时,目标板的状态如图3-25所示。
6)再次单步运行程序到图3-26所示的位置,目标板的状态发生变化如图3-27所示。
从上述步骤不难看出,硬件的在线调试器能够在实际的工作环境下驱动单片机,使其单步或连续地执行程序,达到软硬件联合调试的目的。