记录一次在 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:

楼主可以尝试用 vscode 的 eide 插件,用起来也比较顺手了

我最近也在捣鼓 vscode 的插件,感觉确实比 eclipse 麻烦很多呀

我试了下他的导入 mdk 工程的功能还不错,就是调试还不太方便,你可以看看我的另外一篇,那个插件已经集成了烧录,debug 等功能了,在 windows 下面和 Linux 下面都可以使用

前段时间也在考虑买个 MCU。主要想使用 ADC 连续采样测些东西。在 STM32 和 ESP32 之间,买个了 ESP32

ESP32 没有提供一套成熟的 IDE,idf 也是调用 cmake 的。过程中遇到过各种工具链的 bug 挺烦的。有时只能rm -rf build/,重编译很慢,体验不够好(我太菜了?)

然后想着尝试 Arduino 和 MicroPython(性能看来要牺牲了)。。写了一篇 ESP32-C3 + MicroPython 的体验文

正在考虑要不要换个 MCU。。。。。楼主有玩过这些吗?求谁玩过的能给些建议

没有用过,你是想测高频还是什么

我想连续采样电流,测量电网谐波

其实我第一次弄这些,能达到怎样、该达到怎样,自己心里也没数。。。尽量采样频率弄高~:joy:
(测量的传感器和电路都没设计好:joy::joy::joy:

电流以前用互感器测过,芯片我用的国产的 APM32E103,支持 HAL 库的,效果还不错,最近也在搞振动传感器的高频测量,3K 以下频率测出来还行,但是速度位移差太多了,也不知道 fft 做出来的对不对,可能要大佬 matlab 上模拟下才知道

建议各位还是用 vscode 吧,eclipse 感觉跑起来太费劲了