linux下stm32开发环境搭建---makefile版

版权声明:本文为博主原创文章,尊重原创,转载请注明出处。
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文件夹下,创建完成如下:
    linux下stm32开发环境搭建---makefile版_第1张图片
    可以输入arm-none-eabi-gcc -v来验证环境是否成功建立

  • STM32CubeMX,STM32CubeProgrammer
    从st官网下载,正常下一步安装即可。本教程安装到~ /program文件夹下,安装完成会在桌面生成快捷方式,打开即可验证是否安装成功。

  • vscode
    从官网下载安装

建立工程

使用cubeMX来生成makefile工程代码,在生成时注意选择makefile,如下图
linux下stm32开发环境搭建---makefile版_第2张图片
点击generate code,在对应目录下生成工程文件
linux下stm32开发环境搭建---makefile版_第3张图片

编译

在工程目录下执行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开发环境搭建---makefile版_第4张图片

小结

简单介绍在linux下搭建stm32开发环境的一种方法,内容比较简陋,只提供了大概的搭建流程,一些软件的使用没有具体写出。此方法理论上在window下也可正常使用,这样就可以直接使用vscode编译,下载,不需要在vscode下编写完,还要切换到keil或者其他ide环境下编译下载。如以上步骤繁琐,可以使用STM32CubeMX+sw4stm32组合,同样可以达到在linux下开发stm32的目的。

你可能感兴趣的:(linux,stm32)