你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32 NUCLEO 开发板基于 Eclipse 开发环境的搭建】

[复制链接]
andeyqi 发布时间:2020-11-16 00:09
对于STM32单片机程序开发的IDE环境经常被使用的是keil 和 IAR,这两个IDE确实使用起来确实很方便,不过对于在linux下开发mcu程序就没有如此方便快捷的IDE供开发者使用了,是不是linux下就没有办法使用IDE来开发STM32的程序呢,这也是此贴着重要研究的如何在linux下的开发环境下通过IDE来调试使mcu的程序,本文以笔者手中的STM32 NUCLEO-F446为硬件平台搭建linux下的开发环境。

1--开发工具(Eclipse)


“虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。”

上述描述截取于百度百科,Eclipse  有很多版本,本文使用的是支持C,C++开发的CDT版本,可以去官网下载最新的版本,如下是下载链接,选择linux下的版本。
https://www.eclipse.org/downloads/packages/


2.--基于Eclipse IDE编译程序
①编译器
编译器使用的gnu的gcc 编译器
②编译环境
makefile
以上两个是Eclipse 编译所依赖的编译环境,本地使用的gcc版本信息如下,版本没有固定的要求只要支持对应的MCU架构即可,大部分的gcc版本是能够支持ARMV7-M架构的mcu开发环境的。
  1. book@100ask:/opt/sdk/gcc-arm-none-eabi-5_4-2016q3/bin$ ./arm-none-eabi-gcc -v
  2. Using built-in specs.
  3. COLLECT_GCC=./arm-none-eabi-gcc
  4. COLLECT_LTO_WRAPPER=/opt/sdk/gcc-arm-none-eabi-5_4-2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/lto-wrapper
  5. Target: arm-none-eabi
  6. Configured with: /home/build/work/GCC-5-build/src/gcc/configure --target=arm-none-eabi --prefix=/home/build/work/GCC-5-build/install-native --libexecdir=/home/build/work/GCC-5-build/install-native/lib --infodir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-5-build/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-5-build/install-native/arm-none-eabi --build=i686-linux-gnu --host=i686-linux-gnu --with-gmp=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-mpfr=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-mpc=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-isl=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-cloog=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-libelf=/home/build/work/GCC-5-build/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r,armv8-m.base,armv8-m.main
  7. Thread model: single
  8. gcc version 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496] (GNU Tools for ARM Embedded Processors)
复制代码
本文重点介绍基于Eclipse 搭建开发环境,至于如何基于makefile 编译MCU程序非本文的中重点,论坛内有大神对此方面的介绍,也可以通过强大的cube工具来生成makefile 工程,本文的文末会附上笔者本地makefile 工程,我的makefile工程只是加入了启动依赖的相关文件,不过本文的主要目的是搭建环境,这个简单的工程还是能满足要求的。


本地的编译器和make工具都已经存在的话对于使用Eclipse 来编译程序是很简单的一件事,只要配置下对应的GCC工具所在的位置的环境变量和将makefile工程导入工程目录即可。
具体操作如下:1,工程栏点击右键导入工程
微信截图_20201115231809.png
2.选择导入makefile 工程
微信截图_20201115231903.png
3.设置工程名称及makefile 路径,则完成导入
微信截图_20201115232045.png
4.配置makefile 依赖gcc工具链 PATH环境变量根据本地的配置添加
微信截图_20201115232724.png

微信截图_20201115232858.png
5.至此依赖的编译环境已经配置完成,如果makefile文件编写的没有问题的,工程窗口built project/clean project 就会调用makefile的make all 和 make clean 对工程进行编译了,编译效果如下。

微信截图_20201115233418.png


3.调试环境的搭建
1.stlink 驱动库安装
至此已经可以通过Eclipse 对工程进行编译和清除了,一个IDE 不仅仅需要能够编译程序同时也需要能够对程序进行调试。
本次实验是哟使用的NUCLEO F446的板子上已经集成了个STLINK,本实验使用STLINK对程序进行仿真,需要按照STLINK在linux环境下的驱动程序,安装方法可以参照笔者之前的帖子:
https://www.stmcu.org.cn/module/forum/thread-618905-1-1.html
按照上述帖子完成安装后,接入开发板运行 st-util 命令能够识别出开发板的型号说明已经正确安装并识别到板子,并等待IDE进行链接。
  1. st-util
  2. 2020-11-15T10:43:38 INFO common.c: F446: 128 KiB SRAM, 512 KiB flash in at least 128 KiB pages.
  3. 2020-11-15T10:43:38 INFO gdb-server.c: Listening at *:4242...
复制代码

2.配置debug选项

1.debug (小虫子)选项下拉新建debug  config,按照如下的配置配置
微信截图_20201115234734.png

main 选项卡的配置:配置要调试的elf文件,选择gdb 调试方式为hardware gdb

微信截图_20201115235325.png

debug 选项卡的配置:选择调试器为STLINK并设置端口号为4242,因为之前编译的时候已经设置PATH环境变量,此处的arn-none-eabi-gdb命令是可以正常的执行的不需要加绝对的路径。
微信截图_20201115235728.png

至此编译环境和调试环境已经配置完成,正常没有问题的话就可以对程序进行调试了,调试前本地终端先运行st-util等待IDE进行链接,IDE上点击对debug 按钮就可以进行仿真调试了,如下仿真已经进入main函数内的断点了。


微信截图_20201116000442.png

如果需要使用JLINK进行调试的话,方法也是一致的只是将STLINK相关的配置修改为JLINK即可。








收藏 1 评论3 发布时间:2020-11-16 00:09

举报

3个回答
Kevin201707 回答时间:2020-11-16 09:18:53
收藏
andeyqi 回答时间:2020-11-16 09:32:43
STMCU 回答时间:2020-11-17 09:13:34
感谢分享

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版