
1 程序调试方式 (1) 使用SEGGER J-Flash(J-Link)下载程序到闪存中运行。 (2) 使用串口ISP 来下载HEX 文件到CPU 中运行。 (3) J-Link + MDK 组合,来在线调试程序(可下载、单步调试)。
下载:是将具体的文件如.axf或HEX下载到开发板的flash(SRAM)中去,在开发板启动之后就会运行所下载文件。根据运行结果再将修改的程序下至开发板中运行。
在线调试:通过调试器(如J-Link)将开发板和PC相连,既将程序下载到开发板中运行又能看见程序运行的结果(如变量的值)。 2 MDK-RAM-keil + J-Link在线调试(1) J-Link + 开发板连接PC Figure1:使用在线调试工具J-Link (2) 设置项目编译属性因为是使用J-Link在线调试程序,需要选择J-Link调试工具(建立工程的时候如果设置好了就不用再设置了)。如果J-Link连接开发板的接口为JTAG则PORT要选择”JTAG”。如下图: Figure2:选择J-Link调试器 如果“JTAG Device Chain”处有内容则说明检测到了设备。 还需要在Utilities选项中做一些设置: Figure3:Utilities设置 在”settings”中,点击”Add”按钮时选中开发板的控制芯片即可。然后点击OK保存。现在就可以进行在线调试了。 (3) 在线调试[1] 单步调试开始调试 程序经1编译通过后(第一个按钮表示只编译当前处在编辑界面的文件,第二个按钮表示编译整个工程中修改过或还未编译过的文件,最后一个按钮表示重新编译所有的文件)。确认J-Link连接完好,开发板已上电后,点击2中的按钮开始/结束在线调试。 Figure4:在线调试开始 1:绿色图标表示光标所在的行,黄色图标处为要运行的下一条语句。在线调试开始时处在mian()入口处。 2:这是调试开始后弹出的窗口,watch窗口用来观察程序中各种变量的“值”及“类型”,可以在watch窗口中手动添加待观察变量。 3:程序中的tx_data为具11个元素的数组,从值可以看出来程序还未运行到175行处。 单步调试按钮单步模式下可以点击以下图标让程序往下执行: 以上几个图标对应的快捷键依次是:
按F11到176行时,经执行过得tx_data数组个元素的值就在watch窗口中显示出来。 工具栏窗口在“在线调试”状态下,许多“工具栏小窗口”会冒出来。
查看寄存器值
[2] 设置断点调试单步调试毕竟是单步或者跳过函数的执行。在程序十分庞大时,F系列的键或者鼠标都要被按坏,设置断点后,程序运行到断点处就停下了,然后就可以再用单步调试的方式进行调试。 开始在线调试点击调试按钮开始调试,如图Figure 5。 断点设置到想要运行的代码处设置一个断点。设置断点的方法:
使能/消除使能/移除断点的方法也是以上列举的3点。 点击Run
Figure6:断点处 3 C基本数据类型占内存大小查看将以下变量声明为全局变量后,在Watch窗口中观察的各变量的值。
Watch窗口中各变量的值: Figure7:Cortex-M3 C语言基本类型大小 在keil下的编译器+stm32f10xxx芯片下,char占一个字节,int占4个字节,long占4个字节,long long 占8个字节,float占4个字节,double占8个字节, long double 占8个字节。 |
谢谢楼主![]() |
谢谢楼主分享 |
有想法 |
没有在RAM中调试吗? |
谢谢分享 |
入门不错。。。 |
好详细的图文教程,顶一个 |