neozng1@hnu.edu.cn

本教程的示例代码是笔者参加RoboMaster机甲大师赛为机器人编写的控制器框架,你可以直接克隆仓库,阅读仓库下的Markdown文档获得更好的体验,记得点一个小⭐: basic_framework: basic_framework (gitee.com)

所有安装包也可以在此百度网盘链接下获得:
链接: https://pan.baidu.com/s/1sO_EI4cToyIAcScOQx-JSg?pwd=6666
提取码:6666

Ozone暂时只支持jlink。
22/11/16 重要更新:安装Ozone3.24 32-bit和J-Link7.22b目前可以支持J-link和 dap-link/cmsis-dap

软件安装

安装Ozone和J-link工具箱(驱动、gdb以及各种调试工具)。安装包都在网盘链接。

注意,如果希望支持daplink(包括正点原子无线调试器),请务必安装网盘对应的版本(Ozone3.24 32-bit和J-Link7.22b)。

经过测试发现只有32位的ozone3.24支持daplink。

应该先安装Ozone,再安装jlink。以下为步骤:

  1. 安装Ozone

这一步注意选择install a new instance(安装一个新的实例)。后续一路确认即可。

2. 安装jlink

这一步注意不要勾选update dll in other application,否则jlink会把ozone里面老的驱动和启动项替代掉。choose destination和ozone一样,选择install a new instance。如果安装了老的相同版本的jlink,请先卸载(版本相同不用管,直接新装一个)。

3. 替换动态链接库
将网盘上下载的JLinkARM.dll放到JLink和Ozone的安装目录下,替换原来的库。下载下来的库经过修改,使得J-LinkOB在使用的时候不会报“The JLink is defective"和”you are using a clone version“的错误。
之后如果安装其他版本的jlink,也请注意不要勾选update DLL in other application,否则会替换掉修改过的动态链接库。

配置调试项目

安装好两个软件之后,打开ozone后会显示一个new project wizard,如果没有打开,在工具栏的File-> New -> New project wizard。

选择M4内核,为了能够查看外设寄存器的值还需要svd文件。所有mcu的svd都在图中的文件夹里提供,当然你也可以使用我们仓库根目录下的文件。

接口选择swd,接口速度不需要太高,如果调试的时候需要观察大量的变量并且使用日志功能,可以调高这个值。如果连接了jlikn,上面的窗口中会显示。如果链接了dap-link,比如无线调试器,会出现Unknown CMSIS-dap。选择你要使用的调试器,然后继续。

选择构建之后生成的.elf文件(在项目文件夹下的build中)。这是调试器专用的文件格式,对其内容感兴趣可以自行搜索细节。此外ozone还支持.bin .hex .axf(最后一个是amr-cc,也就是keil的工具链会生成的)等格式。

这页不要动。如果希望保存jlink的调试日志,最后一个选项选择一个文件或者新建一个日志文件。

常用调试窗口和功能

下图的配置是笔者常用的layout。每个窗口是否显示、放在什么位置等都是可以自己定义的。通过工具栏的view选项卡可以自行选择需要展示的窗口。

  1. 调试控制:和vscode类似
  2. 变量watch窗口,这里的变量不会实时更新,只有在暂停或遇到断点的时候才会更新。若希望实时查看,在这里右键选择需要动态查看的变量,选择Graph,他就会出现在窗口8的位置。
  3. 断点和运行追踪管理
  4. 调试控制台,输出调试器的信息。
  5. 终端,支持一些jlink script的命令。单片机通过log模块发送的日志也会显示在这里。
  6. 代码窗口,用于添加断点、添加查看等。鼠标悬停在变量上可以快速查看变量值和类型。希望打开整个项目文件,点击工具栏的view选项卡,单击Source Files就可以打开一个项目中所有源文件的窗口。右键点击函数或变量可以跳转到定义和声明、查看汇编代码等。按F12跳转到定义。
  7. 变量可视化窗口,这就是Ozone的大杀器。在变量添加到查看(watch)之后,右键点击watch中的变量选择Graph,变量会被添加到可视化查看中。你可以选择“示波器”的显示时间步长以及颜色等信息,还可以更改采样率。
    注意,如果添加到动态调试窗口中没有反应,请在窗口8中修改一下”Sample Freq“为100Hz或200Hz即可
  8. 窗口8和7配合。在窗口8中会实时显示变量值,并且统计平均值和最大最小值,而且还会将所有采样值保存到一个csv文件当中,如果需要进一步分析可以导出这个数据文件。
  9. 内存视图。可以直接查看任意内存位置的值。

再次注意,这些窗口是否开启以及位置都是可以自定义的。
另外,如果使用dap-link,调试过程中可能会反复提示没有license,请查阅basic_framework: basic_framework (gitee.com)获取解决方案。

如果在调试过程中发现bug或者需要更改代码,不需要终止调试或者关闭窗口。直接前往vscode修改并重新编译,Ozone会自动检测到.elf文件的变化,询问你是否重新加载项目。选择是后会自动开始下载并进入调试。

  • 变量动态查看(可视化)

    • 如果没有打开窗口,现在view->timeline中打开可视化窗口。动态变量查看的窗口也在view->data sampling。
      启用动态变量查看的流程如下:

在代码窗口中选中需要观察的变量添加到watch窗口在watch选择要动态查看的变量添加到Datasample窗口

第一步的快捷键是ctrl+w,选中变量之后按。
第二部的快捷键是ctrl+g,选中watch中的变量后按。
第三步可以修改示波器的步长和采样频率。

  • 如果当前文件没有你要的变量,你想查看项目中的其他文件夹,在view-> source files中可以打开该项目所有的源文件,双击可以打开源文件。

在变量的watch窗口右键点击变量,选择一个refresh rate也可以实时查看变量(和keil一样)。

  • 日志打印

在Terminal窗口查看,还可以通过命令直接控制单片机的运行(不过不常用)。

未打开窗口则在view-> terminal中打开。

  • 外设查看

在view-> register中打开窗口,选择Peripherals可以查看所有外设寄存器

CPU选项卡可以查看CPU的寄存器。

  • 调用栈

在view-> call stack中打开窗口。

常用快捷键

组合 功能
ctrl+w 添加到查看
ctrl+g 添加到动态查看(需要先添加到查看)
f12 跳转到定义
f5 启动调试
f10 单步跳过
f11 单步进入
shift+f11 单步跳出
右键+break on change 当变量发生变化的时候进入此断点
ctrl+H 展示调用图,会列出该函数调用的所有函数(内部调用栈)

保存调试项目

退出时可以将调试项目保存在项目的根目录下,方便下次调试使用,不需要重新设置。可以为jlink和daplink分别保存一套调试配置。

附录1:为daplink添加license

在网盘上下载daplink_register_license.rar,解压出来之后打开。请关闭杀毒软件。

根据Ozone打开时提示的daplink的序列号,将其输入注册机,电机generate,就会生成5个license。

windows菜单搜索J-link license manager,点击添加license,将注册机生成的五个license依次复制黏贴并添加到的license manager中即可。

CubeMX+VSCode+Ozone的STM32开发工作流(三)利用Ozone进行可视化调试和代码分析相关推荐

  1. CubeMX+VSCode+Ozone的STM32开发工作流(一)背景知识介绍

    neozng1@hnu.edu.cn TODO: 1. 添加一键编译+启用ozone调试/一键编译+下载的脚本,使得整个进一步流程自动化 2. 增加更多的背景知识介绍 3. 增加VSCode下RTT ...

  2. CubeMX+VSCode+Ozone的STM32开发工作流(二)VSCode环境配置

    neozng1@hnu.edu.cn 本教程的示例代码是笔者参加RoboMaster机甲大师赛为机器人编写的控制器框架,你可以直接克隆仓库,阅读仓库下的Markdown文档获得更好的体验,记得点一个小 ...

  3. entfrm开发平台,一个免费开源可视化的无代码开发平台

    简介 entfrm开发平台,是一个以模块化为核心的无代码开发平台,是一个集PC和APP快速开发.系统管理.运维监控.开发工具.OAuth2授权.可视化数据源管理与数据构建.API动态生成与统计.工作流 ...

  4. VSCode搭建ARM(STM32开发环境)

    目录 需要用到的工具 软件安装 下载安装 Visual Studio Code 下载安装 STM32Cubemx 下载安装 ARM GCC交叉编译工具链 下载安装 Msys2 下载安装 OpenOCD ...

  5. STM32开发 -- LIS3DH三轴加速度计开发详解

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/87096085 这次要讲一下LIS3DH三轴加速度计的开发使用,之前是有讲过 ...

  6. STM32开发记录三: 硬件IIC调试(STHC3温湿度传感器)

    一.STM32_CubeMX配置 /* I2C4 init function */ void MX_I2C4_Init(void) {hi2c4.Instance = I2C4;hi2c4.Init. ...

  7. (三.1)基于MicroBlaze的PowerlinkC代码分析

    本文简单介绍ISE平台下的MicroBlaze的大致框架,然后分析开源的C代码在平台中的是使用以及通信原理的分析与笔者本身的理解.本文不介绍 本次使用的是ISE14.7搭建平台,使用xilinx_op ...

  8. 三、第一个cocos2d程序的代码分析

    在 第一讲 中已经新建了第一个cocos2d程序,运行效果如下: 在这讲中我们来分析下里面的代码,了解cocos2d的工作原理,看看屏幕上的这个"Hello World"是如何显示 ...

  9. cocos2D(三)---- 第一个cocos2d程序的代码分析

    在第一讲中已经新建了第一个cocos2d程序,运行效果如下: 在这讲中我们来分析下里面的代码,了解cocos2d的工作原理,看看屏幕上的这个"Hello World"是如何显示出来 ...

最新文章

  1. Create PDB with Sample schemas in 12C
  2. Python基础教程:高阶函数和函数嵌套
  3. JPA关系映射系列一:one-to-one外键关联
  4. [html] 能否做到禁止打印页面?如果可以那要怎么做?
  5. c语言把数据存放在文件中,急求如何将下列C语言程序数据存储到文件中?
  6. git 修改commit_Git从8到13 深入了解Git特性
  7. rocket mq 监听端口_MQ消息最终一致性解决方案
  8. java 分治法排序_分治法实现1-N的数字按字典序全排列组合 Java语言
  9. 最强光源解析,做纺织的你知道D65,CWF,TL84,U30,HOR的区别吗?
  10. 机器学习指南_管理机器学习实验的快速指南
  11. Google 谷歌翻译 API
  12. 最近不少朋友问WPS专业版,再发一次
  13. 多肽细胞穿膜肽TAT修饰牛血清白蛋白BSA/人血清白蛋白HSA/卵清白蛋白OVA纳米粒(实验要求)
  14. 使用 Moment.js 吧时间戳生成格式化时间
  15. NUAA 南航操作系统实验 代码部分
  16. ES6中import * as xxx from 'xxx'的作用
  17. 总结Android系统启动完整流程(六)
  18. 止咳绝招 献给身边咳嗽的人
  19. 零基础怎样制作自己的网页网站具体流程 - WordPress建站
  20. Gif录制工具Gyazo 官方版

热门文章

  1. 一个完整的短视频包含哪些要素?做短视频还要学会把控全局
  2. 三坐标测头标定原理和标准球实操
  3. 尝试:百炫录音盒软件开源
  4. linux忘了用户名和密码_Linux 忘记密码解决方法
  5. ARM平台性能大比拼
  6. 集成框架 -- 聚水潭对接
  7. FENIX珠宝 邂逅灵魂的印记
  8. PBD加密,PBD加密专家
  9. 10V/15V/18V/24V/30V/35V/40V/50V/60V耐高压 LDO IC
  10. Spring 之 IoC 学习笔记