12

Nuoeriris · 2021年03月25日

MM32F013x——巧用Ozone调试MM32 MCU

在上周的《基于Embedded Studio搭建MM32开发环境》的章节中,我们使用了Ozone这款工具进行调试,今天我们来向大家详细地介绍如何使用Ozone调试MM32 MCU,以及Ozone能给大家带来哪些便利性,体验这款工具的强大之处。

1. Ozone简介

Ozone 是 SEGGER公司开发的一个调试工具,用于J-Link和J-Trace的跨平台调试器和性能分析器,具有所有常见的视图(源代码、内存、控制台/终端、寄存器、反汇编、调用堆栈等等。)
主要特点:

  • 独立图形调试器
  • 调试任何工具链和IDE的输出
  • C / C ++源代码级调试和汇编指令调试
  • 用于任何目的的调试信息窗口:反汇编,内存,全局和本地,(实时)监视,CPU和外围设备寄存器
  • 源代码编辑器可立即修复错误
  • 将应用程序高速编程到目标中
  • 直接使用J-Link内置功能(无限的Flash断点,Flash下载,实时终端,指令跟踪)
  • 可编写脚本的项目文件可自动设置所有内容
  • 新项目向导可简化新项目的基本配置

Ozone已支持的编译器:Embedded Studio,GCC,Clang,MDK,IAR。

2. Ozone环境搭建

2.1 软件下载

在SEGGER的官网(https://www.segger.com/)下载最新的Ozone软件。

1.png

2.png

2.2 软件安装

双击Ozone软件安装包进行安装,完成安装如下图所示,同时会在桌面生成快捷方式。

3.png

3. 工程创建及调试

Ozone调试的方式有两种:

  1. 在集成IDE环境中直接调用Ozone来进行调试。
  2. 通过创建Ozone工程来进行调试。

第一种方式可以参照《基于Embedded Studio搭建MM32开发环境》,在这里就不过多的讲解说明,下面对通过创建Ozone工程来进行MCU调试进行讲解说明。

3.1 Ozone工程创建

打开Ozone软件,如下图所示:

4.png

点击菜单栏File->New->New Project Wizard..来新建工程。

5.png

然后在弹出的New Project Wizard对话框中,Device选项根据芯片的具体型号来选择实际的内核版本,例如此次使用的芯片为MM2F013x,为Cortex-M0内核,因此在Device选项中选择M0,Register Set对话框中的型号在Device对话框选择完成以后会自动选择,在Peripheral对话框中选择芯片的svd文件(目前为止Ozone安装包中包含的svd很不全面,如果我们使用的芯片的svd文件在Ozone的Periphaeral文件夹中没有包含,我们可以到MDK-Keil的安装路径下面找到PACK文件夹,并在此文件夹中找到相应芯片的svd文件,并拷贝到Ozone安装路径下面的Peripheral文件夹中即可,然后并选择芯片的svd文件)。

6.png

然后点击Next选项进入到Connection Settings选项卡来选择调试接口以及通讯速率。MM32F013x支持SWD接口,因此我们在Target Interface按钮中选择SWD接口,并在Target Interface Speed选项中选择通讯速率为4Mhz。

7.png

点击Next选项,然后进入到Program File选项卡来选择需要Debug的.elf文件。

8.png

后面的配置选择默认即可。

3.2 下载并进行调试

选择Debug选项卡的Download & Reset Program选项来下载程序到MCU并进入到调试界面,用户可以在View选项卡中选择各种窗口来帮助调试。

9.png

3.2.1 Memory窗口

Ozone可以直接通过在寄存器或者变量窗口直接右键Show Data就可以看到变量甚至寄存器的Memory状态。

10.png

11.png

在Memory中用户可以选择保存指定地址区间的数据。

12.png

13.png

3.2.2 Watch窗口

用户可以在View选项卡中选择Watch Data选项中的New Watch Data Window来调出Watch窗口显示变量的数值。

14.png

15.png

当用户需要查看某一个变量的数值的时候,直接选中此变量然后右击弹出相关的选项卡,然后选择Watch选项来将变量添加到Watch Data窗口。

16.png

3.2.3 Disassembly窗口

用户可以在View选项卡中选择Disassembly选项来显示汇编窗口,熟悉汇编的用户可以在此窗口中查看汇编指令,指令跟踪显示已执行的指令,并且与源代码视图同步。

17.png

3.2.4 Registers窗口

用户可以在View选项卡中选择Registers选项来查看寄存的数据,其中CPU为内核相关的寄存器,Peripheral为外设相关的寄存器。

18.png

如果用户在创建工程的时候没有选择svd文件,那么在进行调试的时候将无法查看外设寄存的数据。

3.2.5 Source File窗口

用户可以在View选项卡中选择Source File选项来查看相关的源文件,包含被编译的c文件、头文件,其中有程序大小,指令数,位置和状态(编译、包含、外部调用)。

19.png

3.2.6 Data Sampling窗口

选择Data Sampling选项来定时查看某一个变量的数据变化情况。如下图所示,Index为打印的序号,Times为打印的时间戳,sTimingDelay为变量名称。

20.png

使用Timeline来查看变量的变化曲线:

21.png

(点击查看视频)

3.2.7 断点

用户可以在IDE中间源文件的左侧添加断点,并同步到Break & Tracepoints窗口,在Break & Tracepoints窗口展示了断点的数量,断点所在的文件以及所在的行等基本信息。

22.png

视图可以移动和放在彼此以具有“标签”视图。 可以将视图移出主窗口,例如放置在单独的监视器显示器上。

3.2.8 调用窗口

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

23.png

3.2.9 脚本

Ozone有一个很好的脚本引擎,几乎一切都是可脚本的:

24.png

实际上Ozone项目文件是用脚本语言编写的C文件,这样我可以很容易地更改调试环境,在脚本中我们只需要按照Ozone的Console的命令格式来编写脚本命令即可,比如我们需要打开Global Data窗口,在Console窗口输入命令Window.Show ("Global Data");即可调出Global Data窗口,如果关闭此窗口输入Window.Close ("Global Data");即可。

25.png

推荐阅读
关注数
6108
内容数
272
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息