ndx1986 发表于 2019-12-5 15:55:16

Ozone使用介绍-基础功能

本帖最后由 ndx1986 于 2019-12-5 17:00 编辑

最近刚“忽悠”领导买了个J-Trace Pro,顺便上Segger网上看了看Jtrace的相关介绍官网介绍
Segger为Jtrace搭配了一块小的测试板,主控是STM32F407VG(100pin),而且也给出了简单的上手视频。并推荐了自家的调试软件Ozone(不包含编译功能,仅能调试,编译的话有自家的SES)。


其实之前也下载过Ozone,不过也仅限于尝鲜性质的试玩。这次因为购买的Jtrace具备了Trace功能,恰好这两天有点时间,把Ozone的功能基本彻底的试用了一遍。
虽然Ozone感觉在我的系统(S家这点做得比较好,不论是IDE工具还是Ozone这种调试器,都是全平台支持的)上不太稳定(WIN 10 x64教育版),经常死机,但总的来说,感觉还是一款很有自己特色的调试软件,尤其搭配自家调试器(貌似也只能搭配自家……)。所以决定把这些东西写出来大家一起溜溜,写出来可能只能给小白扫扫盲(大神绕道),里面肯定也有各种错误,欢迎拍砖。

从官网下载安装完毕后,需要导入IDE工具生成的相关镜像文件,建议导入elf、axf这种包含更多信息的镜像(官网就有例程可以直接下载导入);同时建议将镜像文件和工程文件夹放在一起的话,Ozone可以将镜像对应的源文件都可以显现出来。
Ozone的调试功能比较多,我大概划分了3个分类:A、基本功能:使用和谐版Jlink在Ozone上,或者其他调试器在其他IDE工具上也能实现的基本功能B、跟踪功能:J-Trace所具有的跟踪功能C、特殊功能:Ozone所具有的我在IAR和ES、Keil上没见过(当然很可能也是不知道有……)的功能
A、基本功能:在基本功能下,我使用J-Trace时是关闭了Trace功能的,同时我也拿了一个“大家都有便宜的”的Jlink 实验了下也没问题点下Ozone中的View列表,会出现以下窗口,其中基本功能的窗口如下图,我做了个编号(为显示方便分为两组,0~12为1组,13~19为一组),和后图会对应上。基本上Ozone对应的所有能都在这个View能够提供的列表功能里面。调试器嘛,毕竟可以设置的地方(功能)会少一些

直接拿S家官网上的例程跑了下(S家官网的例程是带自家系统embOS的,没有用过……),我把上图的所有功能都展开了,方便看到窗口的实际样式。后面根据窗口的特点做简要描述:

0、文件窗口:这个没啥可多说的,把工程文件夹的最后实际参与编译的c、文件可以显示出来,和其他家IDE工具不同,Ozone是直接将每行C语句都反汇编放下该语句的下方的
1、断点(追踪窗口):因为现在还没有加入追踪功能,所以如果仅仅是断点(程序断点和数据断点的话,和keil下也没啥区别)。断点的一些进阶功能可以参考下这篇帖子《原来单片机中还隐藏了这些调试技巧 | 颠覆认知》---作者鱼鹰 EmbeddedOspreyhttps://blog.csdn.net/weixin_42876465/article/details/97823112
这篇帖子是基于Keil的,我试了下,Ozone的逻辑也差不多。在这个窗口中,会有部分中断向量的断点,应该是这个工程使用了S家自己定义的启动文件才会有,我使用armfly工程包或者自己建立的一些工程就没有这些选框
2、Call Stack窗口:对比Keil的Call Stack&Locals(keil是将这两个窗口放到一起的),Ozone的Call界面显示的东西会多一些,还显示了发挥地址和PC指针,栈使用量等参数
3、反汇编窗口:和keil也没有什么区别,不过因为Ozone在0文件窗口就支持直接看到反汇编的内容,所以对于Ozone这个窗口的作用可能会变小一些了
4、全局变量窗口:这个功能我没有在keil中看到过,不过感觉还挺好用的,将实际编译进镜像的所有全局变量全部显示出来,因为STM32的所有全局变量都是有固定内存地址的,所以内存地址、数据类型、以及定义所在文件,都可以直观显示出来。同时右键还可以将这些全局变量添加到数据断点,添加数据曲线等窗口,也可以在源文件、当前运行Memory(注意这个操作应该是Show Data)等窗口中显示出来。

5、局部变量窗口:这个没啥可说的,跑进一个函数断点后看到这个函数内部所有局部变量的情况(一般的做法都是把需要观察的局部变量添加到手动变量窗口了,编号8窗口)
8、手动添加变量窗口:除了变量以外,还可以添加函数,不过只貌似显示函数的所在地址,Ozone可以单独给每个需要观察的内容设定刷新率,Keil的话,我只会设置Peridodic Window Update,周期感觉1s?

6、Memory窗口:Ozone比Keil下的常规操作会多支持Save 和 Load甚至Fill(个人感觉Load和Fill的作用不太大吧,毕竟更改这些地方,对程序影响太大了)。有个好评的地方在与,Ozone可以直接通过在寄存器或者变量窗口直接右键Show Data就可以看到变量甚至寄存器的Memory状态。对理解MCU来说,感觉还是很有用的。
7、寄存器窗口:与其他IDE没有什么不同,不过比较奇怪的一点是,Ozone支持的STM32一些内核的寄存器(比如DPB、或者DWT等)ST官方手册都没有仔细些,ARM的一些Core的手册才给出的寄存器。反而在Keil下没有找到这些寄存器的选项。
9和10都是动态的曲线,上一个Gif的图大家可以直观感受一下
9、数据曲线窗口;一个基于横轴时间、纵轴变量值(or 变量计算值)的曲线。可以设定变量的采样率和基于变量的计算表达式

Ozone的表达式支持类型


10、功耗曲线窗口:功耗测试曲线和和数据曲线类似,如果使用Jlink或者Jtrace的5V-Supply给目标板供电,都可以被Ozone进行检测,并同步将消耗的电流显示出来。这样有个作用就是可以查看目标板在执行到哪里的时候功耗最大(或者与预期是否一致等)。不过希望Ozone能做一个功耗触发的功能,就是PC端测量到电流达到某个阈值后,立刻通过调试口让目标程序停下来,方便直接定位预期电流消耗的程序位置。
不太好的一点是,最大提供电流仅仅是300mA,比隔壁IAR 的I-jet Trace Arm的600mA要小不少。

11、OS支持窗口:我OS用的很少,embOS更是第一次跑(Ozone官方例程里使用的是自家的OS)。Ozone的RTOS支持目前只有embOS、FreeRTOS还有一个ChibiOS。看介绍都是基于插件来实现的。ChibiOS我也是第一次听说,不过试用了下FreeRTOS,感觉功能比embOS的要少一些。不知道是使用FreeRTOS版本匹配问题,还是本身支持力度的问题。
12、控制台窗口:Ozone项目文件是用脚本语言编写的C文件,各种操作,实际上也是基于命令实现的,通过控制台窗口可以很好的观察到每个执行的命令。同时基本所有设置也都可以通过命令的方式来进行下发,不知道这样对于从高层次往底层搞开发的人来说会更方便。控制台打“?”可以看到所有命令的介绍。


第二组:除了Terminal窗口外,其他的窗口都是Static静态的,也就是编译结束后,就已经固定不变了。



13、终端窗口:终端打印我使用的很少,所以贴一张Ozone手册的介绍吧。基本上就是用了S家自带的RTT技术,或者SWO功能。其中写到一个Semihosting,没看懂有啥用……

14、调用窗口:可以看到编译后工程之间的函数调用关系,和调用深度等相关内容,比较直观。这是一个静态的程序图框,用于描述函数、子函数之间的相互引用关系以及所占用的堆栈量、代码总量、调用深度等有点类似于keil中的htm(Obj过程文件中)文件的描述

12+96 = 108;108+24 =132;出现的+;是因为出现了fp-call,所以对应的depth里面会有FP,也会有“+”

15、查询窗口:就不贴图了,没啥可说的。Ctrl+F的记录
16、函数窗口:功能没啥可说的, 就是被编译的所有函数的集合。再次表扬下Ozone的这个Filter Bar的这个功能,方便查找,Fliter Bar在很多窗口里面都有的


17、Memory占用窗口:S家好像对这种条状图来表达RAM和Flash占用的方式有点执念。之前S家IDE工具ES中也会给出一个条状图


18、源文件窗口:包含被编译的c文件、头文件。其中有程序大小,指令数,位置和状态(编译、包含、外部调用)。

19、Jlink/Trace控制面板窗口:通过usb访问一个虚拟的服务器,可以对Jlink做对应的设置。和装上Jlink驱动后的Command的命令行方式类似吧

eric2013 发表于 2019-12-5 16:46:42

非常感谢楼主整理这么详细的介绍帖{:8:}

eric2013 发表于 2019-12-5 16:55:57

Ozone今年推出了一个这种功能,有时间可以测评下

SEGGER的Ozone调试组件新增的快照功能,超级实用,解决随机性死机的利器
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94967

wujialing3000 发表于 2019-12-5 22:12:29

好文好文,感谢分享。敢问兄台通过那个渠道购买的?最近我也在想买一套。

missfox 发表于 2019-12-5 22:23:03

这速度,果然是不一样,楼主介绍很详细{:34:}

soga238 发表于 2019-12-5 23:11:58

手里的JLINk PRO突然不香了:(

ndx1986 发表于 2019-12-5 23:30:54

wujialing3000 发表于 2019-12-5 22:12
好文好文,感谢分享。敢问兄台通过那个渠道购买的?最近我也在想买一套。

代理商从风标那里买的,价格和官网换算过来差不多

ndx1986 发表于 2019-12-5 23:31:17

eric2013 发表于 2019-12-5 16:55
Ozone今年推出了一个这种功能,有时间可以测评下

SEGGER的Ozone调试组件新增的快照功能,超级实用,解决 ...

下个帖子就介绍:)

eric2013 发表于 2019-12-6 09:00:49

ndx1986 发表于 2019-12-5 23:31
下个帖子就介绍

{:8:}

fjt131543789 发表于 2019-12-10 09:20:00

感谢大神分享!!可惜我们公司买的是J-link Ultra,使用不了Trace功能,听采购说是从北京麦克泰买的,国内好几个代理商么??

fjt131543789 发表于 2020-3-16 15:34:08

感谢大神分享!我现在遇到一个问题,就是创建工程时候我选择了elf文件,但是进去Ozone后,发现源文件都没有只能自己添加,这个要怎么解决呢?

tianqi911 发表于 2020-6-17 12:18:38

:lol学习学习。好文章。

calvinxxw 发表于 2020-9-3 12:08:15

全局变量能否在运行状态下刷新显示?怎么我非要停下来才能看

eric2013 发表于 2020-9-3 13:43:21

calvinxxw 发表于 2020-9-3 12:08
全局变量能否在运行状态下刷新显示?怎么我非要停下来才能看

可以运行时查看的。

金金子 发表于 2020-10-23 21:02:32

您好,我是初入门者,看到博主的分享非常开心,导师近期买了J-trace设备,但由于我太菜,所以在阅读部分Ozone手册后,仍然无法解决我的问题,所以特来请教。
我的问题是在建立项目后显示找不到源文件

金金子 发表于 2020-10-23 21:04:08

fjt131543789 发表于 2020-3-16 15:34
感谢大神分享!我现在遇到一个问题,就是创建工程时候我选择了elf文件,但是进去Ozone后,发现源文件都没有 ...

跟我一样,自己添加可以,但是显示找不到的源文件,而且提示的路径根本不存在

eric2013 发表于 2020-10-24 08:53:32

金金子 发表于 2020-10-23 21:04
跟我一样,自己添加可以,但是显示找不到的源文件,而且提示的路径根本不存在

MDK和IAR的可执行文件使用Ozone调试的正确姿势,可以随时连接芯片做调试
http://www.armbbs.cn/forum.php?mod=viewthread&tid=97452&fromuid=58
(出处: 硬汉嵌入式论坛)

金金子 发表于 2020-10-25 13:37:45

翻墙可以看到一个详细视频的讲解,谢谢解答

xjtyonly51 发表于 2020-10-26 09:20:37

好文啊, 种草了

ndx1986 发表于 2020-10-27 08:51:13

金金子 发表于 2020-10-23 21:02
您好,我是初入门者,看到博主的分享非常开心,导师近期买了J-trace设备,但由于我太菜,所以在阅读部分Ozo ...

使用的是IAR么?注意不要有中文目录。我之前试过,keil和iar都可以正确识别到源文件。

不过使用keil编译的axf文件,Download直接调试,会有点问题:ozone导入axf反汇编过来执行的感觉有点不太对。我当时对比了下两者的反汇编代码,发现ozone反汇编的有点问题,导致ozone执行axf的时候经常会进入到HardFault。(可以参考硬汉给你流的链接,使用attact的方法进行ozone的调试)

使用IAR编译生成的elf导入时,Download直接调试时,没有发现在上面的问题(当然也不排除是代码不一样,我用两个工程做的实验)

建议如果使用ozone,还是建立一个ES的工程靠谱些,毕竟一家的东西,出问题说不过去了。

另:导师对你们真好:loveliness:

王海靖 发表于 2021-4-20 15:22:29

ndx1986 发表于 2020-10-27 08:51
使用的是IAR么?注意不要有中文目录。我之前试过,keil和iar都可以正确识别到源文件。

不过使用keil编 ...

大佬,我买可一个 J-LINK PRO 使用 Ozone ,看手册说的是支持代码覆盖率的查看,但是实际运行的时候代码覆盖率这里显示的都是0,是我的操作不对,还是 只有 J-Trace 才支持?

ndx1986 发表于 2021-4-25 10:45:15

王海靖 发表于 2021-4-20 15:22
大佬,我买可一个 J-LINK PRO 使用 Ozone ,看手册说的是支持代码覆盖率的查看,但是实际运行的时候代码覆 ...

只有J-Trace才可以,Jlink不具备跟踪功能的,代码覆盖率属于Trace的范畴,看我另一篇帖子,这篇帖子里面的功能Jlink支持,但是那篇就是只有Trace才支持的了。

xyang 发表于 2021-6-1 08:45:51

您好,有个问题想请教您,希望能得到您的帮助。Ozone的Data Sampling采样频率最高只能到1K吗,为什么设置了更高的频率,比如10K,采集的速率还是1K

wrdt24435 发表于 2021-10-5 14:47:27

请问Ozone的下载算法是咋弄的

Keepgoing 发表于 2022-4-14 11:07:41

好棒的帖子,感谢分享,最近刚了解到Ozone

离鸿的今夏 发表于 2023-1-5 12:06:57

大佬我想询问如何进行变量绘图查看,我下载的是最新的v3.28b版本,但是界面只能这样

Cappi 发表于 2023-10-2 13:50:49

V5是什么意思呀,什么情况才可以看到这个值

wwwwwwzj 发表于 2024-3-20 15:02:41

Cappi 发表于 2023-10-2 13:50
V5是什么意思呀,什么情况才可以看到这个值

说的是安富莱V5开发板吧
页: [1]
查看完整版本: Ozone使用介绍-基础功能