J-Link+Ozone调试教程

一、调试前的准备

使用J-Link将PC和单片机连接

以STM32入门教程中的"读写内部FLASH"实验为例,使用Keil打开该工程

按照下图所示的步骤进行操作,如果使用J-Link仿真器,则在第三步选择ST-Link Debugger

按照下图所示的步骤进行操作,输出选项卡需要勾选调试信息

按照下图所示的步骤进行操作,代码生成的优化选项中,优化等级需要选为0,否则Keil在编译程序的过程中可能会过度优化,导致编译得到的二进制机器码和C语言代码不是等价的,在调试过程中会引起代码执行顺序错乱

完成以上步骤后,编译程序,然后将其下载到单片机中

二、Ozone调试工程快速创建

1、新建工程

(1)打开Ozone,在菜单栏选择"File"→"New"→"Project",新建一个工程。(如果是初次使用,那么打开Ozone后会自动弹出向导,引导用户新建工程)

(2)在Device选择MCU型号(本教程使用STM32F103C8T6),并在Peripherals导入对应的.svd文件(芯片厂商提供,可生成外设寄存器树,直接在上位机查看和修改外设寄存器)。

(3)主机接口选择USB;目标接口视情况选择,对于ARM芯片,通过查看数据手册关于调试的章节,可以确认是否支持SWD,支持即可选择,而非ARM芯片仅支持JTAG;目标接口速率可以选择2MHz,若硬件稳定,则可以提速。

(4)选择编译输出的.elf文件,如果是使用Keil编译,则选择编译输出的.axf文件(.axf文件是ARM扩展版.elf文件),路径尽量不包含中文和全角字符。

(5)创建完成后,在菜单栏选择"File"→"Save Project as...",即可保存调试工程。

2、三种调试启动模式

(1)Download & Reset Program:擦除Flash,将固件烧录到Flash中,然后复位MCU,释放复位后程序从头全速运行。

(2)Attach to Running Program:连接后程序保持运行,可观察设备实时的动态变量,不会破坏RAM堆栈、寄存器。

(3)Attach & Halt Program:连接后停止正在运行的程序,直接冻结现场,立刻捕获当前寄存器、堆栈、内存快照,不会破坏RAM堆栈、寄存器。

三、Ozone基础调试功能

1、断点系统

(1)使用Ozone调试,Flash区不限制硬件断点数量(Cortex-M只有4~8个硬件断点,Keil调试受限于硬件数量),因为Ozone自动在Flash写入BKPT断点指令,缓存原始指令,断点取消后自动恢复代码。

(2)源码断点(程序断点):

①在代码浏览区的左侧有一些灰色的区域,鼠标左键点击,即可在区域对应的代码打上源码断点,当单片机运行到这些代码的时候,会触发停止运行的条件;如果需要取消源码断点,鼠标左键点击它对应的红色圆圈,即可取消断点。

②鼠标右键点击源码断点对应的红色圆圈,选择"Edit Breakpoint",在弹出的窗口中可以设置断点触发的前置条件。

1Condition填入条件表达式,如cnt>100。如果选择"Trigger when true",那么断点命中时,需要满足条件表达式才会真正停机;如果选择"Trigger on change",那么断点命中时,表达式数值发生过变化,才会真正停机。

2Skpi填入断点命中次数,假如设置为499,那么断点命中500次才会真正停机。

相关推荐
AOI小白新手上路7 分钟前
韦东山IMX6ULL快速入门路线
嵌入式硬件
糖糖单片机设计19 分钟前
基于 STM32 的智能净水器系统
stm32·单片机·嵌入式硬件
zcmodeltech23 分钟前
火电厂模型能演示冷态启动和故障处理吗?——基于STM32与Modbus RTU的集控实训控制系统设计
数据结构·stm32·单片机·嵌入式硬件·能源
llilian_1631 分钟前
标准时间间隔发生器应用解决方案 脉冲发生器 时间测量仪
大数据·网络·人工智能·功能测试·单片机·嵌入式硬件·51单片机
桀人44 分钟前
STM32之GPIO四种输出模式——P-MOS和N-MOS管的工作原理——双二极管钳位保护电路——上拉电阻
stm32·单片机·嵌入式硬件
HRTOS1 小时前
HRTOS 4.0 DEBUG:面向 8051 实时系统运行状态的轻量级调试组件
单片机·嵌入式硬件·51单片机
LCG元1 小时前
STM32F407 I2S驱动WM8978音频播放实战:PLLI2S时钟整定、DMA双缓冲防爆音与WAV采样率实测
stm32·嵌入式硬件·音视频
不怕犯错,就怕不做2 小时前
RK linux在buildroot中如何添加linux命令
linux·驱动开发·嵌入式硬件
咖丨喱2 小时前
【MMC驱动分析】
嵌入式硬件
fhq_fn_jgd2 小时前
51单片机(中断,定时器)
stm32·单片机·嵌入式硬件