单片机调试,Ozone的使用

一、前言

单片机调试,目前常态可能是直接在MDK(keil)或者IAR中,直接用IDE的调试功能。

我喜欢用Ozone,因为他进调试快,基本上秒进,而MDK每次进入都要等很久,编译还要先退出调试模式,再编译,再进入调试模式,很耽误时间。

搜了一下,全网没多少相关使用经验,我这应该算开山祖师了,哈哈哈哈。

二、Ozone简介(抄的)

Ozone是Segger公司推出的一款高性能调试器软件,专为嵌入式系统开发设计。它支持多种微控制器架构,包括ARM Cortex-M、RISC-V等,并可与J-Link调试探针无缝配合使用。

支持实时变量监控和图形化显示,开发者可以直观地观察程序运行时的数据变化。提供完整的断点管理功能,包括硬件断点、软件断点和条件断点。

具备强大的内存查看和编辑功能,支持多种数据格式显示。集成RTOS感知调试功能,能够识别和调试FreeRTOS、embOS等常见实时操作系统。

看不懂,简单说就是只专注于调试(因为专一,所以专业),MDK有的Ozone都有,Ozone有的MDK不一定有。调试速度真的很快!!!

三、适用场景

需要一个Jlink和编译后生成的文件,我常用axf,其他不知道是否支持,可以去官网确认一下。

四、调试环境

MDU:stm32F407ze

jlink:SW接口

Ozone:版本V3.40

MDK:生成axf文件

五、创建工程

网上太多,不赘述。只说一个,一定要记得选外设信息的svd文件,看寄存器很方便。SVD文件一般在DFP里面,具体的参考我图中的路径。

六、功能

6.1 查看外设寄存器

View->Registers中打开,具体内容如下图。很明显,描述信息比MDK详细很多。

如果没选好svd文件,将会丢失Peripherals的所有内容,也看不了外设的寄存器。

6.2 查看变量

View->Wathed Data

右键要查看的变量 Watch或者拖到Wathed Data窗口,或者在Wathed Data窗口直接输入变量名

右键Wathed Data窗口的变量名,可以刷新该变量,默认是不刷新的,开启刷新对查看全局变量很方便。

6.3 查看函数堆栈

View->Call Stack

双击Call Stack窗口的函数会自动跳转到该函数

6.4 查看汇编(局部变量)

View->Disassembly或者右键变量Show Disassembly(ctrl+D)。

一般来说32位(比如浮点数,int型等)的局部变量会被存储到R0~R11寄存器中,打断点后在Wathed Data窗口也无法查看,MDK一定无法查看。

但Ozone可以从汇编中查看,如下图。在Disassembly窗口中,将鼠标放在该变量对应的寄存器时,会在鼠标附近显示该寄存器的值。我这里的adaptive_kp就存在S24寄存器里,可以在寄存器窗口通过对应的寄存器也能看到。

6.5 查看断点

View->Break & Tracepoints

还可以在断点窗口设置断点属性,比如该断点需要跳过几次等

6.6 数据图形化界面

右键要图形化查看的变量,点击Graph。(嗯,应该是,还没试过,后面验证了写清楚)

6.7 通过命令直接调用函数

View->console打开命令窗口。

命令窗口输入:Debug.SetNextPC 。(嗯,应该是,等我后面抽空试一下,明确一下命令和用法)

七、遇到不支持的芯片怎么办

移步我的另一篇博文Ozone添加不支持的芯片,这里以AT32举例

八、小技巧

MDK去掉Brose Infomation可以加快编译速度,但是调试过程中不能再F12跳转,而Ozone不影响,照样能实现跳转。

九、总结

对比MDK:

项目 MDK Ozone
功能 集成开发 专注调试
图形化 不支持 支持
查看32位局部变量 不支持 支持
命令调用 不支持 支持
相关推荐
莎士比亚的文学花园3 小时前
硬件通信——UART串行口
单片机·嵌入式硬件
guygg884 小时前
基于STM32的贪吃蛇游戏实现(OLED屏)
stm32·嵌入式硬件·游戏
BackCatK Chen4 小时前
STM32保姆级入门教程|第4章:GPIO输入+外部中断 实现按键控制LED(手把手全流程)
stm32·单片机·外部中断·按键控制 led·stm32cubeid·gpio 输入
悠哉悠哉愿意5 小时前
【单片机学习笔记】第十二届国赛经验复盘
笔记·单片机·嵌入式硬件·学习
rit84324995 小时前
STC8单片机模拟AD转换程序(NTC测温)
单片机·嵌入式硬件
szxinmai主板定制专家5 小时前
基于 STM32 + FPGA 船舶电站控制器设计与实现
arm开发·人工智能·stm32·嵌入式硬件·fpga开发·架构
我不是程序猿儿5 小时前
【嵌入式】编码器计数倍频,机械一格与电气计数
stm32·单片机·嵌入式硬件·学习
Hello World . .5 小时前
51单片机基础外设:GPIO(以LED、按键、数码管为例)
单片机·嵌入式硬件
Flamingˢ5 小时前
基于ARM的裸机程序设计和开发(三):C编程基础与Zynq裸机开发常用方法
c语言·arm开发·单片机
Crazyong7 小时前
FreeRTOS-CPU使用率统计
单片机·嵌入式硬件