目录
一、编译准备
1、keil编译和make编译区别
2、编译环境
3、编译工程
二、STM32编译器
1、编译器下载
2、编译器解压
三、编译stm32工程
1、编译
2、编译清理
四、下载STM32固件(J-Flash V7.94f使用方法)
1、获取下载工具
2、打开下载工具
3、选择对应芯片
4、导入hex文件,连接jlink
5、刷机
五、总结
一、编译准备
1、keil编译和make编译区别
keil是一个IDE,集成了开发、编译、下载、调试功能,操作简单(一键编译,一键下载)。
make是一个强大的项目编译管理工具,相比keil开发,此经验可使用到其他项目编译过程中,可以使开发者快速切换到其他芯片平台(不用Keil开发)的编译,实际上工作后绝大部分项目用的都是make来管理的编译。
2、编译环境
编译机系统Ubuntu 23.04
系统需要安装make,安装make命令:apt-get install make
3、编译工程
使用Cubemx生成工程,生成方法请参考:
CubeMx搭建、生成基础工程-CSDN博客
笔者所用的示例为STM32F407工程,如需要请自取,链接如下:
https://download.csdn.net/download/qq_30095023/88768286https://download.csdn.net/download/qq_30095023/88768286
二、STM32编译器
1、编译器下载
到ARM官网下载编译器
Downloads | GNU Arm Embedded Toolchain Downloads – Arm DeveloperDownload the GNU Embedded Toolchain for ARM, an open-source suite of tools for C, C++, and Assembly programming for 32-bit ARM Cortex-A, ARM Cortex-M and Cortex-R familieshttps://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
官网下载较慢,可到这里取:
链接:https://pan.baidu.com/s/17CGVCrJeKHBcS-h1JNdpAw?pwd=l4kc
提取码:l4kc
2、编译器解压
将编译器拷贝到/usr/XYB_BIN目录
解压
bzip2 -d gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
tar -xf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar
解压后如下图所示
三、编译stm32工程
将stm32 make工程(CubeMxMakefile,通过CubeMx生成)拷贝到 /usr/XYB_BIN
跳转到目录:/usr/XYB_BIN/CubeMxMakefile
1、编译
执行编译命令:make GCC_PATH=../gcc-arm-none-eabi-10.3-2021.10/bin/
编译输出
编译输出目录为build,elf、hex、bin文件都在build目录下
2、编译清理
删除编译生成的中间产物以及hex,bin等固件文件,命令如下:
四、更新STM32固件(J-Flash V7.94f使用方法)
1、获取下载工具
下载工具使用jlinkWindows,下载链接如下
https://www.segger.com/downloads/jlink/https://www.segger.com/downloads/jlink/
官网下载较慢,可到如下链接下载:
链接:https://pan.baidu.com/s/1m5tIAtDODxaYRbwDPPiUJw?pwd=58z0
提取码:58z0
2、打开下载工具
桌面打开J-Flash V7.94f,如下图所示操作
3、选择对应芯片
4、导入hex文件,连接jlink
hex文件为上文编译步骤后所生成,位于build目录下。导入hex文件,如下图:
连接单片机,如下图:
连接成功后日志窗口会有如下输出:
5、刷机
更新单片机内部固件
更新后结果如下图
五、总结
如有问题请指出,感谢!