完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
7 OpenOCD
OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包。 OpenOCD官网 OpenOCD下载地址 7.1 OpenOCD安装 下载OpenOCD,最新软件版本为0.11.0,这里是使用源码编译安装。 第一步:下载并解压 第二步:配置OpenOCD $ ./configure 配置完成打印信息如下: 可配置的项目可以通过 $ ./configure -h 命令查看帮助信息。 【注】笔者的调试器使用的是ST-Link,所以还要运行如下命令进行使能 $ ./configure --enable-stlink,这里默认开启了,就不需要执行,如果使用其他调试器,则需要根据实际去使能设备。 第三步:编译 $ make 第四步:安装 $ sudo make install 安装完成后可检查OpenOCD版本,看OpenOCD是否安装成功。 $ openocd -V 打开openocd-0.11.0/tcl,里面有很多提前写好的配置文件: 其中interface目录下都是接口相关配置文件,例如jlink.cfg,stlink.cfg;target目录下都是芯片相关的配置文件,例如stm32f1x.cfg。 7.2 OpenOCD调试配置 7.2.1 launch.json文件 在vscode文件夹中新建一个launch.json,该文件是调试的入口文件。内容如下: { "version": "0.2.0", "configurations": [ { "cwd": "${workspaceRoot}", "type": "cortex-debug", "request": "launch", "name": "Cortex Debug", "interface": "swd", "servertype": "openocd", "executable": "./build/STM32f1.elf", "runToMain": true, "device": "STM32F103ZE", "svdFile": "./STM32F103xx.svd",//svd文件,有这个文件才能查看寄存器的值 "configFiles": [ "${workspaceRoot}/openocd.cfg" ], "preLaunchTask": "build", "armToolchainPath": "/opt/gcc-arm-none-eabi-10.3-2021.07/bin/" } ] } executable:编译出的二进制文件,也就是最终烧录到单片机中的,这里是elf文件。 request:可以选launch或attach。launch是指启动调试时同时开始执行程序;attcah是指程序已经在运行了,然后开始调试。我没测试过attach。 type:调试的类型,选cortex-debug,这是我们装的插件。其实也可以填cppdbg之类的,但是那样我们就得自己配置gdb了,配置起来将会非常麻烦。 device:目标芯片。如果你使用J-LINK GDB Server时必须要设置这个选项。 svdFile:svd文件的路径,每个MCU的各不相同。 servertype:要选择的gdb server。我这里用openocd。 configFiles:gdb的配置文件路径。openocd会自动读当前目录下的openocd.cfg文件,这个选项不填也行。但是如果你想把openocd.cfg放在别处,就可以用这个选项指定配置文件的路径。 preLaunchTask:在启动调试前,预先执行的任务。 armToolchainPath:工具链的路径。 launch.json参考 7.2.2 openocd.cfg文件 在项目文件夹下新建一个openocd.cfg文件,用于配置调具体的调试器。内容如下: # 选择调试器为jlink #source [find interface/jlink.cfg] source [find interface/stlink.cfg] # 选择接口为SWD #transport select swd # 选择目标芯片 source [find target/stm32f1x.cfg] 我这里选择使用ST-Link,SWD接口,目标芯片为stm32f1x。 【注】使用J-link调试也是一样的,只需将openocd.cfg文件配置成J-link调试即可。 7.2.3 svd文件 用于寻找STM32F1的svd文件。CMSIS-SVD是CMSIS的一个组件,它包含完整微控制器系统(包括外设)的程序员视图的系统视图描述 XML 文件。VS Code可以通过它来知道外设寄存器的地址分布,从而把寄存器内容展示到窗口中。 将下载好的STM32F103xx.svd文件放在项目文件夹根目录即可。 7.3 Cortex-Debug调试 直接按F5,openocd启动时,会自动在当前目录下寻找名为openocd.cfg的文件作为配置文件。调试界面如下: 界面左边可以看到变量窗口、调用堆栈等。窗口中间就是单步调试的各个按钮。这个就没啥好说的了,赶紧去玩起来吧。 【注】调试STM32报错init mode failed解决方法 错误提示: Error: init mode failed (unable to connect to the target)......OpenOCD init failed 解决办法: 将 Debug Mode 重新选择为 Serial Wire,如下图所示。 7.4 GDB调试 除了使用Visual Studio Code自带的调试工具外,还可以使用GDB调试, 首先在终端输入一下命令: #openocd -f interface/stlink.cfg -f target/stm32f1x.cfg GDB常用命令如表所示。 关于GDB的使用请看笔者文章: GDB使用 接下来需要连接openocd服务,openocd给GDB的TCP/IP端口是3333。 # target remote localhost:3333 |
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4085 浏览 18 评论
1169浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
594浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2331浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 00:58 , Processed in 1.157194 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号