记录一次在 openSUSE leap15.5(非虚拟机) 调试 STM32 的板子的日志吧

我是在安装 eclipse_c/c++embedded 的 ide 之后进行调试的,已经成功烧录也可以成功 Debug,和 keil 下差不太多。
步骤一、首先在 stm32cubemx 下配置完成后生成 Makefile;这个可以在 ST 官网下载,有 Linux 版本的

步骤二、在 eclipse_embedded 中选择新建项目,并选择 Makefile Projetct with Existing Code,选择 ARM Cross Gcc 并打开生成的项目;

步骤三、选中项目,点击属性,选择 C/C++ Build,在 Current builder 中下拉选择 Autotools Makefile Generator;

步骤四、继续选中 C/C++ General 下的 Paths and Symbols,在 symbol 选项栏输入 Makefile 中编译时的-D 选项宏,这样可以防止 src 文件中的 main.c 文件报错。

步骤五、继续选中 MCU 中的 Build Tool Path 选项卡并且输入 arm-none-eabi-gcc 交叉编译器执行语句的路径,这样编译构建的环境初步搭建好了

以下是调试步骤
由于是使用 jlink swd 模式烧录,故需要到/usr/share/openocd/scripts/interface 中去修改 jlink.cfg 文件,因为默认是按 jtag 方式烧录,可以指定参数也可以修改此文件,在文件中加上 transport select swd 即可。

步骤六、选中菜单栏中的 Run 选项卡,选中 GDB OpenOCD Debugging 并且新建一个 debug 配置文件,在 Debugger 中设置 openocd 指令的路径,注意这里的路径是要包括可执行文件的,在 Config options 中键入-f interface/jlink.cfg -f target/stm32f1x.cfg;

步骤七、在 GDB Client Setup 中设置 gcc-none-eabi-gdb 的路径,如果报错的话,普遍是缺少 libcurses.so.5 这个动态库,可以先试试用"arm-none-eabi-gdb -v"来测试能否读到 gdb 的版本号,若不行需要"sudo zypper in libcurses5"或者 apt 命令来安装,完成后即可利用 openocd 调试

总结,对于使用 jlink 驱动来烧录,则需要下载 jlink 的源码进行编译,但是我的 jlink 版本太低,官网已经下载不到此版本的驱动,烧录貌似成功几次,但是调试模式进不去

2赞

写的很棒,希望能写进维基里 :smile: