首页 > 其他分享 >stm32笔记[3]-OpenOCD调试

stm32笔记[3]-OpenOCD调试

时间:2023-01-20 20:00:10浏览次数:59  
标签:Blue OpenOCD bridge embeded Desktop stm32 gdb arm 调试

保命声明:笔者代码能力有限,若行文中有错漏之处欢迎大家指出。

openocd介绍

[https://openocd.org]
OpenOCD, the Open On-Chip Debugger (片上调试器).

[https://my.oschina.net/u/2963604/blog/4701978]

配置OpenOCD

[https://blog.csdn.net/lone5moon/article/details/124940297]

brew install openocd

或者[https://openocd.org]手动下载安装.

cfg目录在/usr/local/Cellar/open-ocd/0.11.0/share/openocd/scripts,

Using CMSIS-DAPv2 interface 1 with wrong class 10 subclass 0 or protocol 0
如果没有显式指定 CMSIS-DAP 版本的话会优先尝试 V2 接口,如果失败再尝试 V1 接口
[https://blog.csdn.net/luckly_wang/article/details/127364184]

修改cmsis-dap.cfg

#
# ARM CMSIS-DAP compliant adapter
#
# http://www.keil.com/support/man/docs/dapdebug/
#

adapter driver cmsis-dap
# 使用CMSIS_DAP V1接口
cmsis_dap_backend hid
# Optionally specify the serial number of CMSIS-DAP usb device.
#cmsis_dap_serial 02200201E6661E601B98E3B9

然后在STM32CubeIDE配置GDB调试模式,External Tools Configurations

等效为如下命令:

openocd -f /Users/workspace/Desktop/Blue_bridge_embeded/files/cmsis-dap.cfg -f /Users/workspace/Desktop/Blue_bridge_embeded/files/stm32g4x.cfg

配置arm-gcc-none-eabi

[https://developer.arm.com/downloads/-/gnu-rm]
下载[https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-mac.tar.bz2?rev=58ed196feb7b4ada8288ea521fa87ad5&hash=62C9BE56E5F15D7C2D98F48BFCF2E839D7933597]
解压,添加到环境变量:

export PATH=$PATH:/Users/workspace/Desktop/Blue_bridge_embeded/tools/gcc-arm-none-eabi-10.3-2021.10/bin
#测试
arm-none-eabi-gdb
#输入q退出

配置GDB调试:
在Debug处设置,别找错地方了



设置断点(可选):

开始调试

build代码
然后先启动openocd,

然后启动gdb调试,运行到断点(图片)

进阶:macOS+OpenOCD+arm-none-eabi-gdb进行调试

以调试模式重新编译

修改Debug/Makefile
添加-ggdb3以调试模式编译

# Tool invocations
proj_screen1.elf: $(OBJS) $(USER_OBJS) /Users/workspace/Desktop/Blue_bridge_embeded/proj_screen1/STM32G431RBTX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS)
	arm-none-eabi-gcc -o "proj_screen1.elf" @"objects.list" $(USER_OBJS) $(LIBS) -ggdb3 -mcpu=cortex-m4 -T"/Users/workspace/Desktop/Blue_bridge_embeded/proj_screen1/STM32G431RBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="proj_screen1.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
	@echo 'Finished building target: $@'
	@echo ' '

然后,

#使用CubeIDE自带的交叉编译器
export PATH=$PATH:/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin
cd /Users/workspace/Desktop/Blue_bridge_embeded/proj_screen1/Debug
#清理上次编译
make clean
#加了-ggdb3编译才能用gdb调试
#编译和链接
make -j3 all

启动OpenOCD

cd /Users/workspace/Desktop/Blue_bridge_embeded
openocd -f /Users/workspace/Desktop/Blue_bridge_embeded/files/cmsis-dap.cfg -f /Users/workspace/Desktop/Blue_bridge_embeded/files/stm32g4x.cfg

连接成功:

启动arm-none-eabi-gdb

gdbserver在目标系统中运行,gdb则在宿主机上运行。CMSIS-DAP自带gdbserver,bin文件不包含调试信息,elf文件包含调试信息。

#设置环境变量
export PATH=$PATH:/Users/workspace/Desktop/Blue_bridge_embeded/tools/gcc-arm-none-eabi-10.3-2021.10/bin
#进入GDB界面
arm-none-eabi-gdb /Users/workspace/Desktop/Blue_bridge_embeded/proj_screen1/Debug/proj_screen1.elf
#进入gdb命令行
target extended-remote localhost:3333

按一下开发板上的reset键,

gdb命令

[https://zhuanlan.zhihu.com/p/357360607]
[https://www.gnu.org/software/gdb/]
[https://sourceware.org/gdb/current/onlinedocs/gdb.pdf]

  • l : 列出所有源代码
  • break main :在main处打断点
  • step : 单步执行
  • quit : 退出
  • run : 执行到第一个断点
  • continue : 继续执行,直到下一个断点
  • info : 获取信息
  • dump : 复制内存到文件

调试

l 203
info line main.c:206
print TextColor
info address Main_loop
info symbol 0x8000e98

标签:Blue,OpenOCD,bridge,embeded,Desktop,stm32,gdb,arm,调试
From: https://www.cnblogs.com/qsbye/p/17062902.html

相关文章

  • OllyDbg动态调试工具的使用
    OllyDbg动态调试工具的使用动态调试工具:OllyDbg,WinDbg静态调试工具:ida本次我将学习OllyDbg动态调试工具的使用OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一......
  • VS2022 开发 STM32 单片机
    VisualStudio2022开发STM32单片机-环境搭建点亮LED灯 安装VS2022社区版软件选择基础的功能就好   安装VisualGDB软件(CSDN资源) 按照提示一步一步安装......
  • STM32中HAL库和标准库的区别
    转载自:https://www.lmonkey.com/t/RwykY8bBX STM32标准库与HAL库比较ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库三种。其中标......
  • 调试出错
    Segmentationfault结构体内部指针声明时,也需要分配空间voidMyEnQue(Queueque,inte){QNode*cur=(QNode*)malloc(sizeof(QNode));cur->val=e;que.re......
  • 串口调试助手的数据保存问题
    提问: 本人在做FPGA的数据采集系统,采集到的数据通过串口发送给串口调试助手,现在用的是可以显示波形的VOFA+,但是保存数据为csv文件时,数据只有一列,不像示波器保存的数据有时......
  • STM32F103和AIR32F103的FreeRTOS中断优先级
    关于ArmCortexM系列内核的中断优先级https://community.arm.com/arm-community-blogs/b/embedded-blog/posts/cutting-through-the-confusion-with-arm-cortex-m-int......
  • stm32笔记[2]-HAL库驱动2.4寸屏幕
    硬件平台开发板:蓝桥CT117E-M4(DK117E-M4)主控:STM32G431RBT6内置CMSISDAP调试器(STM32F103C8T6)官方例程运行频率:80MHz原理图STM32G4主控STM32F103的CMSIS-DA......
  • STM32 PLC底层源码 FX2N源码 断电保持/Keil源码
    STM32PLC底层源码FX2N源码断电保持/Keil源码三菱指令编码注释较多,适合初学者,发编译环境:KeilMDK4.7以上的版本,CPU需要:STM32F103--RAM内存不小64K,Flash程序空间不小于256......
  • 逆向调试objection的使用
    官方文件地址:https://github.com/sensepost/objection/wiki/Screenshots1.安装pipinstallobjection2.安卓用法命令查看objection--help objection#前提fri......
  • 企微应用H5调试及vConsole
    试想一下,你在应用的开发阶段时,你首次对接第三方平台,无法本地调试一些强制与平台绑定的代码,必须要在发版后,于线上环境进行alter调试,以及凭感觉猜测bug起因,再凭感觉进行代码......