版权声明:本文为博主原创文章,尊重原创,转载请注明出处。
https://blog.csdn.net/liu121068/article/details/86624674
linux下stm32开发环境搭建—makefile版
软件环境
- linux(使用opensuse 64位测试,理论兼容所有linux发行版)
- oracle jre(不推荐使用openjdk)
- STM32CubeMX(用于生成工程及对应makefile文件)
- STM32CubeProgrammer(用于固件烧写)
- gcc-arm-none-eabi(编译器)
- vscode
硬件环境
- stm32F407
- 独立stlink(支持boot1=0,boot0=1启动可以不用stlink)
软件安装
-
linux
-
oracle jre
下载jre-8u201-linux-x64.rpm,使用rpm -ivh jre-8u201-linux-x64.rpm安装,安装完成后会自动在/usr/bin/
文件夹下生成java命令的软链接,不需要再配置环境变量。 -
gcc-arm-none-eabi
下载地址:https://launchpad.net/gcc-arm-embedded/+download
下载linux版编译器, gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 ,
解压到opt目录下(root权限)。
环境配置:shell下,默认~/bin
文件夹已加入PATH中,所以可以利用此文件夹来配置环境。使用ln -s
命令创建 编译器软链接,软链接都放到~/bin
文件夹下,创建完成如下:
可以输入arm-none-eabi-gcc -v
来验证环境是否成功建立 -
STM32CubeMX,STM32CubeProgrammer
从st官网下载,正常下一步安装即可。本教程安装到~ /program文件夹下,安装完成会在桌面生成快捷方式,打开即可验证是否安装成功。 -
vscode
从官网下载安装
建立工程
使用cubeMX来生成makefile工程代码,在生成时注意选择makefile,如下图
点击generate code,在对应目录下生成工程文件
编译
在工程目录下执行make
命令,出现如下类似内容,则环境搭建正常。工程目录下build文件中会生成对应固件。
arm-none-eabi-size build/stm32f407cube.elf
text data bss dec hex filename
11300 20 17668 28988 713c build/stm32f407cube.elf
arm-none-eabi-objcopy -O ihex build/stm32f407cube.elf build/stm32f407cube.hex
arm-none-eabi-objcopy -O binary -S build/stm32f407cube.elf build/stm32f407cube.bin
烧录固件
烧录固件使用STM32CubeProgrammer来烧录,此处介绍使用命令行来烧录的方法。烧录命令为STM32_Programmer_CLI
,此命令在STM32CubeProgrammer安装目录下,为了使用方便,同样在~/bin/
目录下建立软链接,软链接重命名为 stm32cli
, stlink正常识别的情况下执行以下命令:
stm32cli -c port=swd freq=3900 -w ./data.hex
完成固件烧写(data.hex换成需要烧写的固件名)。STM32_Programmer_CLI
命令有关参数可以在官网查找。烧写完成如下图所示
小结
简单介绍在linux下搭建stm32开发环境的一种方法,内容比较简陋,只提供了大概的搭建流程,一些软件的使用没有具体写出。此方法理论上在window下也可正常使用,这样就可以直接使用vscode编译,下载,不需要在vscode下编写完,还要切换到keil或者其他ide环境下编译下载。如以上步骤繁琐,可以使用STM32CubeMX+sw4stm32组合,同样可以达到在linux下开发stm32的目的。