单片机调试,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位局部变量 不支持 支持
命令调用 不支持 支持
相关推荐
飞凌嵌入式2 小时前
AIoT出海背景下,嵌入式主控的国际认证之路与价值思考
大数据·人工智能·嵌入式硬件·区块链·嵌入式
进阶的猪2 小时前
stm32 GPIO输出-使用固件库点亮LED灯 Q&A
c语言·笔记·stm32·单片机
沐欣工作室_lvyiyi2 小时前
基于STM32单片机的冷链运输监测系统(论文+源码)
stm32·单片机·毕业设计·冷链运输监测系统
IT方大同3 小时前
KEY(按键)&BUZZ(蜂鸣器)
单片机·嵌入式硬件
zd8451015003 小时前
STM32多路步进电机控制板
单片机·嵌入式硬件
进阶的猪3 小时前
stm32 USART-中断回显实验 Q&A
stm32·单片机·嵌入式硬件
应用市场3 小时前
基于 C# WinForms 的 Windows 系统监控工具开发实战
windows·单片机·c#
@good_good_study3 小时前
STM32 通用定时器基础中断配置函数及实验
stm32·单片机
wotaifuzao3 小时前
STM32最新的CubeMx v6-16-1下载及安装-包含固件库下载教程(免费提供下多版本载链接)(二)
stm32·单片机·嵌入式硬件·cubemx·stm32cubemx·stm32f407