本教程的示例代码是笔者参加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。以下为步骤:
这一步注意选择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选项卡可以自行选择需要展示的窗口。
再次注意,这些窗口是否开启以及位置都是可以自定义的。
另外,如果使用dap-link,调试过程中可能会反复提示没有license,请查阅basic_framework: basic_framework (gitee.com)获取解决方案。
如果在调试过程中发现bug或者需要更改代码,不需要终止调试或者关闭窗口。直接前往vscode修改并重新编译,Ozone会自动检测到.elf文件的变化,询问你是否重新加载项目。选择是后会自动开始下载并进入调试。
在代码窗口中选中需要观察的变量添加到watch窗口在watch选择要动态查看的变量添加到Datasample窗口
第一步的快捷键是ctrl+w
,选中变量之后按。
第二部的快捷键是ctrl+g
,选中watch中的变量后按。
第三步可以修改示波器的步长和采样频率。
在变量的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分别保存一套调试配置。
在网盘上下载daplink_register_license.rar
,解压出来之后打开。请关闭杀毒软件。
根据Ozone打开时提示的daplink的序列号,将其输入注册机,电机generate,就会生成5个license。
windows菜单搜索J-link license manager,点击添加license,将注册机生成的五个license依次复制黏贴并添加到的license manager中即可。