news 2026/7/14 7:39:20

更新 linux下stm32开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
更新 linux下stm32开发

更新 linux下stm32开发

完整文章 linux下stm32开发

gcc版本问题产生如下报错 (注这些报错如果在修改后编译器后仍然出现则使用此方式修改,否请向下看)

  1. …/…/Drivers/CMSIS/Include/cmsis_gcc.h:833: 错误: number of operands mismatch for `ds’
  2. …/…/Drivers/CMSIS/Include/cmsis_gcc.h:823: 错误: no such instruction: `isb sy’

解决方案:
修改cmsis_gcc.h文件

__STATIC_FORCEINLINE void __ISB (void) { // __ASM volatile ("isb sy":::"memory"); __builtin_arm_isb (0xF); } __STATIC_FORCEINLINE void __DSB (void) { // __ASM volatile ("dsb sy":::"memory"); __builtin_arm_dsb (0xF); }
  1. 报错
错误: no such instruction: `wfe' 错误: no such instruction: `wfi' 错误: no such instruction: `sev'
  1. 解决方案 修改cmsis_gcc.h
#define__WFI()__builtin_arm_wfi()#define__WFE()__builtin_arm_wfe()#define__SEV()__builtin_arm_sev()
  1. 报错
no such instruction: `cpsid i'

最终解决方案:

tmd cmake配置的编译器错了

添加cmake

#设置交叉编译器 set(CMAKE_C_COMPILER /home/lkb/tools/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER /home/lkb/tools/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-g++) set(CMAKE_ASM_COMPILER /home/lkb/tools/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-gcc) set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ARM) # Setup compiler settings set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) # 设置ARM编译选项 set(CPU_FLAGS "-mcpu=cortex-m3 -mthumb") set(COMMON_FLAGS "${CPU_FLAGS} -masm-syntax-unified -Wa,-mimplicit-it=thumb") set(CMAKE_C_FLAGS "${COMMON_FLAGS} -ffunction-sections -fdata-sections -fno-builtin -fno-common -Wall -Wextra -Wpedantic") set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -fno-rtti -fno-exceptions") set(CMAKE_ASM_FLAGS "${COMMON_FLAGS} -x assembler-with-cpp") # 链接器标志 set(CMAKE_EXE_LINKER_FLAGS "${CPU_FLAGS} -Wl,--gc-sections -specs=nano.specs -specs=nosys.specs" CACHE STRING "Linker flags") # 预处理器定义 add_definitions(-DUSE_HAL_DRIVER) add_definitions(-DSTM32F103x6) # 请根据你的芯片型号修改 add_definitions(-D__ARM_ARCH_7M__=1) add_definitions(-D__CORTEX_M=3)
# 设置链接脚本路径 - 使用正确的文件名 set(LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/STM32F103XX_FLASH.ld") # 这是你的实际文件名 # 检查链接脚本是否存在 if(NOT EXISTS ${LINKER_SCRIPT}) message(FATAL_ERROR "链接脚本不存在: ${LINKER_SCRIPT}") else() message(STATUS "使用链接脚本: ${LINKER_SCRIPT}") endif()

最后是烧录

这个算是里面最简单的也是坑最少的了
首先stlink已经连接并检查到端口,则/dev/tty下是否检测到设备,其次检测是否出现端口占用情况,因为ubunto有点坑会有默认的驱动占用端口 emmm(咱也不敢说。。。)

这些都没有问题则可以选择 使用elf bin hex 这三种格式烧录

  1. 采用elf 这个是最简单也是最常见的 因为相比于hex 与二进制文件 这个烧录的起始地址已经记录在其文件内so并不用我们去指定起始地址
    我们可以采用arm-none-eabi-readelf此指令来检测文件头

看到起始地址为0x08000000注:此为stm32f103的如果是其他系列还需查找,搞错了就唧唧了。
2. 开始烧录 (采用gdb)

# 终端1:启动 OpenOCDopenocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg# 终端2:启动 GDBcd/stm32test/build arm-none-eabi-gdb stm32test# 在 GDB 中输入:(gdb)target remote localhost:3333#3333为openocd的端口resethaltflash write_image erase /home/lkb/stm32test/build/stm32test verify_image /home/lkb/stm32test/build/stm32test reset runexit

上述有点麻烦建议写个shell脚本

  1. 直接烧录 可惜无法调试,不过配合终端串口查看其输出也可以
openocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg-c"program path{stm32test} verify reset exit"

然后就可以成为一个快乐的点灯大师

然可能发现stm32cubeMX并没有用到,emm其实使用他进行cmake文件和其他配置文件的生成,但是发现其生成的cmake需要修改的地方较多(上面给出了),所以注意里面的时钟配置与SYS DEBUG 设置为Servial Wire 不然烧一次废了 另外他是基于java所以需要一个java环境

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 7:35:54

Unity游戏多语言实时翻译解决方案:XUnity.AutoTranslator完全指南

Unity游戏多语言实时翻译解决方案:XUnity.AutoTranslator完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款功能强大的Unity游戏实时翻译插件,为…

作者头像 李华
网站建设 2026/7/14 7:33:49

五分钟搞定Unity游戏汉化:XUnity.AutoTranslator终极配置方案

五分钟搞定Unity游戏汉化:XUnity.AutoTranslator终极配置方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂外文游戏而烦恼吗?XUnity.AutoTranslator作为一款强大的…

作者头像 李华
网站建设 2026/7/14 7:32:30

AMD NPU上的Stable Diffusion Turbo:革命性AI图像生成加速方案

AMD NPU上的Stable Diffusion Turbo:革命性AI图像生成加速方案 【免费下载链接】stable-diffusion-turbo-amdnpu-onnx 项目地址: https://ai.gitcode.com/hf_mirrors/amd/stable-diffusion-turbo-amdnpu-onnx 想要体验极速AI图像生成吗?AMD NPU上…

作者头像 李华
网站建设 2026/7/14 7:31:35

元初混沌物理 108 篇 第九十二篇 七星节律体系总闭环

92. 七星节律体系总闭环 一、核心总纲 第七阶七星周天节律篇共计八篇,以七星本源定标开篇,阐释星体引力气运交互、星系动态平衡底层规则,拆解岁差超长周期本源,建立星气落地物化转化定则,分析七星错动灾变失衡机理,分层推演多层级周天周期闭环,全篇法理贯通、逻辑自洽…

作者头像 李华
网站建设 2026/7/14 7:31:23

免费B站视频下载神器DownKyi:5个实用技巧轻松保存高清资源

免费B站视频下载神器DownKyi:5个实用技巧轻松保存高清资源 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&a…

作者头像 李华