[ M3 PN ] STM32F10XXX(Cortex-M3) MDK-RAM-keil + J-Link 在线调试 笔记
2014-02-27 12:59
357 查看
1 程序调试方式
(1) 使用SEGGER J-Flash(J-Link)下载程序到闪存中运行。(2) 使用串口ISP 来下载HEX 文件到CPU 中运行。
(3) J-Link + MDK 组合,来在线调试程序(可下载、单步调试)。
下载:是将具体的文件如.axf或HEX下载到开发板的flash(SRAM)中去,在开发板启动之后就会运行所下载文件。根据运行结果再将修改的程序下至开发板中运行。
通过J-Link下载.axf文件时是在J-Link开发板与PC连接好后,通过点击KEIL中的“load”按钮将.axf文件下载到开发板内。
通过串口ISP下载HEX文件在C51中常见,如51下载程序到单片机内。
在线调试:通过调试器(如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: 单步执行,每次执行一行。
F10: 跳过当前行语句。
Ctrl + F11: 跳出当前函数。
Ctrl+ F10: 运行到光标所处的行。
按F11到176行时,经执行过得tx_data数组个元素的值就在watch窗口中显示出来。
工具栏窗口
在“在线调试”状态下,许多“工具栏小窗口”会冒出来。在红色方框内的几个小窗口从左到右依次是:
Register Window:
用于显示各寄存器的值,并显示运行时间。
Call Stack Window: 用于显示main函数内的变量及所调用的子函数地址/值。
Watch Window: 用来查看特殊变量的窗口。用户可自行输入某个变量名,根据程序运行的进度查看其值。
其它的窗口也有其特殊的用途,在对其有需要时可以打开瞧瞧。打开和关闭这些窗口的方式都是点击一下图标的方式。
查看寄存器值
进入调试之后,点击"Peripherals",然后选择要查看的寄存器名称。
进入调试之后,点击"View->SystemVier",然后选择要查看的寄存器名称。
进入调试之后,点击"View->Watch Windows"或者点击工具栏,只输入指针所指的寄存器的名称。
[2] 设置断点调试
单步调试毕竟是单步或者跳过函数的执行。在程序十分庞大时,F系列的键或者鼠标都要被按坏,设置断点后,程序运行到断点处就停下了,然后就可以再用单步调试的方式进行调试。开始在线调试
点击调试按钮开始调试,如图Figure 5。断点设置
到想要运行的代码处设置一个断点。设置断点的方法:在源代码行号前双击。
用开始/停止在线调试旁边的图标。
Debug >> Insert/Remove Breakpoint(F9)。
使能/消除使能/移除断点的方法也是以上列举的3点。
点击Run
Debug>> Run(F5)经以上3个步骤后,代码就从上一次代码停留处运行到断点处,结合Figure 4看下图。
Figure6:断点处
3 C基本数据类型占内存大小查看
将以下变量声明为全局变量后,在Watch窗口中观察的各变量的值。cl =sizeof(char); ucl = sizeof(unsigned char); scl = sizeof(signed char); il = sizeof(int); ui = sizeof(unsigned int); sil = sizeof(signed int); ll = sizeof(long); ul = sizeof(unsigned long); sl = sizeof(signed long); lll = sizeof(long long); fl = sizeof(float); dl = sizeof(double); ldl =sizeof(long double); |
Figure7:Cortex-M3 C语言基本类型大小
在keil下的编译器+stm32f10xxx芯片下,char占一个字节,int占4个字节,long占4个字节,long long 占8个字节,float占4个字节,double占8个字节, long double 占8个字节。
Keil环境熟悉:一个博主写的比较详细的文章。
Practical Note Over.
相关文章推荐
- [ M3 PN ] STM32F10XXX(Cortex-M3) MDK + J-Link环境搭建 建立工程 下载程序
- [ M3 PN ] STM32F10XXX(Cortex-M3) MDK-RAM 点亮流水灯
- [ M3 PN ] STM32F10XXX(Cortex-M3) MDK-RAM 使用固件库函数的配置
- [ M3 LN ] STM32F10XXX(Cortex-M3) MDK-RAM 时钟初始化配置
- [ M3 PN ] STM32F10XXX(Cortex-M3) MDK-RAM TIMx中断
- STM32F10XXX(Cortex-M3) MDK-RAM 使用固件库函数的配置
- STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)
- MDK/Keil 中,J-Link调试查看变量值总是显示<not in scope>
- Keil for ARM/ Realview MDK 中用JTAG调试的方法 && keil c 的在线调试与断点设置
- 基于固件库的STM32F10x程序在Keil v5 MDK 下的RAM调试方法
- Keil(MDK-ARM)使用教程——在线调试
- Keil(MDK-ARM)使用教程(三)_在线调试
- Keil(MDK-ARM)使用教程(三)_在线调试
- TQ2440 在Keil V5 MDK下创建工程 并 使用Jlink 在RAM调试 方法
- Keil(MDK-ARM)系列教程(八)_在线调试(Ⅰ)
- cortex_m3_stm32嵌入式学习笔记(十三):USMART调试组件移植(调试神器)
- Keil(MDK-ARM)在线调试(Ⅰ)(转)
- STM32学习笔记之时钟分析(硬件设计(535)&keil(476)&Cortex-M3(171)&PCB(334)很有见解)
- 【转载】keil(MDK-ARM)的调试使用
- uboot移植到Keil(mdk-arm)笔记