# 调试XiUOS的技巧:使用Qzone调试stm32f407-st-discovery开发板
# 调试XiUOS的技巧:使用JLink调试STM32F407-discovery开发板
# 调试环境
操作系统:ubuntu 18.04,windows 10
调试工具:JLink(已集成于开发板)
调试开发板:STM32F407-discovery(实物如图)

# Ozone简介
Ozone是SEGGER公司开发的用于配合J-Link使用的调试工具,可以在运行期间查看内存变量、调用栈及其他信息,支持指令断点、内存断点、单步调试、内存监控等多种调试方式。使用Ozone调试stm32f407-st-discovery开发板须先使用SEGGER公司的工具ST-Link Reflash Utility将其板载ST-Link芯片刷成J-Link固件,该工具后续也可将板载ST-Link固件恢复为ST-Link。下述Ozone与ST-Link Reflash Utility均可以在SEGGER官网下载到。
# 调试步骤
# 步骤一 (Windows环境下)
切换板载STLink芯片固件至JLink固件:
下载安装stlink驱动及烧录软件:STM32_ST-LINK_Utility_v3.9.0 (opens new window)。链接:http://xuos.io/downloads/STM32_ST-LINK_Utility_v3.9.0.exe
将开发板连接至计算机

开发板默认配置为stlink,在设备管理器中可以看到连接的stlink设备

下载SEGGER官方工具,下载地址:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace。 (opens new window)链接:
https://www.segger.com/downloads/jlink/#STLink_Reflash

将下载得到的zip压缩包解压,运行STLinkReflash.exe。接受相关协议后进入以下界面:

四个选项分别为:
[0].退出工具;
[1].将固件切换至JLink;
[2].升级JLink固件;
[3].将固件切换至STLink。
此处须选择1,成功后得到以下输出: Selection>1
Preparing for FW update (can take up to 10 seconds)...O.K.
Identifying ST-LINK variant...O.K.: ST-LINK/V2-1
Performing firmware update...O.K.
此时在设备管理器中可以看到连接了jlink设备

# 步骤二(Ubuntu环境下)
下载JLink驱动(Ubuntu下载DEB包)
下载地址:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace (opens new window)

安装JLink驱动
dpkg -i JLink_Linux_V632i_x86_64.deb
V后面为版本号,以下载的为准,安装完成后将JLink连接到计算机,运行JLinkExe检查其驱动是否已经正确安装,如果是,将看到以下信息:
$ JLinkExe
SEGGER J-Link Commander V7. 0a (Compiled Apr 16 2021 15:36:25)
DLL version V7.00a, compiled Apr 16 2021 15:36:09
Connecting to J-Link via USB...O.K.
Firmware: J-Link OB-K22-SiFive compiled Mar 3 2021 14:13:05
Hardware version: V1.00
S/N: 979015641
VTref=3.300V
Type "connect" to establish a target connection, '?' for help
J-Link>
# 步骤三(Ubuntu环境下)
下载Ozone(Ubuntu下载DEB包),下载地址:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace (opens new window)

安装Ozone:
dpkg -i Ozone_Linux_V322e_x86_64.deb
安装完成后使用运行“Ozone”命令,启动Ozone图形界面,按照下图设置调试项目,期间需要选择XiUOS elf文件位置:

选中设备:

选择XiaoShanOS_stm32f407-st-discovery.elf
- 注意是elf文件
项目建立完成后点击左上角Download and reset program即可将elf下载至开发板并开始调试。此时左上角各按钮即可实现程序暂停、程序重启、单步跳过或单步陷入。注意Ozone下载完固件后会默认在main函数处暂停。