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

【有奖体验】STM32Cube通过Clang/LLVM支持进一步简化代码开发

[复制链接]
STMCU-管管 发布时间:2025-8-11 13:32

Clang/LLVM 工具链项目概述

十余年来,意法半导体一直提供STM32 GNU工具作为开发STM32应用的免费参考工具链。该工具链在整个STM32Cube生态系统中获得全面支持,并将持续获得来自意法半导体的维护更新。

Clang/LLVM工具链将逐步为STM32开发人员带来更优的代码密度和执行速度。本次发布是提升工具链性能与深化STM32Cube生态系统整合的第一步。该工具链将在STM32CubeMX和STM32Cube for Visual Studio Code中获得支持。

本次发布提供首个基于Arm LLVM源代码树构建的ST Arm Clang 工具链版本。早期用户可以体验与当前GCC性能相当的工具链。该版本提供更完善的代码检查机制和更优化的C代码库,编译器基准测试数据将后续公布。

后续开发将分为两个步骤:

  • 收集反馈

    早期用户将有机会分享使用体验,助力意法半导体优化工具链并确保其在STM32Cube生态系统中的集成水平符合预期。
  • 工具链优化

    我们将调整工具链以提升代码密度与执行速度。

采用分阶段推进策略,确保开发优先级与开发人员需求保持一致。ST Arm Clang版本将很快提供示例项目,同时STM32CubeMX和STM32Cube for Visual Studio Code将为STM32开发人员提供入门支持。

ST Arm Clang 工具链特性

ST Arm Clang 是专为STM32开发设计的全新C/C++工具链,基于现代LLVM编译器架构和Arm嵌入式工具链构建

这套基于LLVM的新工具链在保持与现有项目的兼容性的同时,为开发人员提供更高效、灵活且面向未来的开发环境。

ST Arm Clang 设计为STM32 GNU工具链的无缝替代方案,最大限度降低过渡过程中的干扰。但由于底层架构差异,可能存在少量不兼容性或不同特性。为简化过渡过程,我们提供两种版本的工具链:

  • 混合工具链 :仅使用LLVM Clang编译器和集成汇编器通过编译代码生成目标文件(本地应用、HAL等)。最终二进制文件仍使用STM32现有GNU工具中的工具和库(GNU Binutils链接器、C/C++库及运行时)构建。该混合版本适合希望尝试Clang编译同时保留GNU链接和运行时环境的开发人员。用户需在系统中同时安装Clang与GCC工具链,此模式下不支持链接时优化 (LTO)。
  • 完整LLVM 工具链 :提供基于LLVM的完整解决方案(Clang编译器、LLVM链接器及运行时),集成Picolibc或LLVM libc++等更新库。该版本融合LLVM社区以及Arm和意法半导体研发团队的成果,针对STM32器件优化支持、性能和代码尺寸。开发人员可根据项目优先级或器件资源选择工具链提供的两种C库实现:Newlib(性能优先)和Picolibc(侧重代码精简)。

STM32CubeMX 支持

STM32CubeMX 6.15版本新增对ST Arm Clang的支持。具体而言,STM32CubeMX可为混合版本的ST Arm Clang工具链生成项目配置。这使得STM32开发人员能够快速将现有GCC项目迁移到ST Arm Clang工具链,无需重写链接脚本或考虑Newlib与Picolibc的兼容性问题。

选择CMake与ST Arm Clang组合将创建一个混合工具链 项目: image.png

如果用户希望从混合 版本切换到完整LLVM版本,可参照下文说明在STM32Cube for Visual Studio Code中操作。

STM32Cube for Visual Studio Code

开发人员在STM32Cube生态系统内可通过两个方式启动项目:

  1. 使用STM32CubeMX生成可配置项目
  2. 使用STM32Cube for Visual Studio Code生成空项目

本教程假设已按前章所述通过STM32CubeMX创建了一个项目。

STM32CubeMX 项目导入与Visual Studio Code 开发环境初始化介绍

在STM32Cube for Visual Studio Code中,打开包含使用STM32CubeMX生成的项目的文件夹。

image.png

image.png

选择STM32CubeMX项目生成路径。

允许STM32Cube for Visual Studio Code加载STM32扩展模块。系统将要求您配置项目和STM32Cube项目,然后选择“Yes”。

image.png

Visual Studio Code将读取项目元数据并检测是否已安装ST Arm Clang工具链。

如果是首次针对该新工具链创建项目,开发环境将自动下载、安装并为此项目激活该工具链。下载量约700 MB,安装占用2.5 GB。

Visual Studio Code环境不会全局配置为使用ST Arm Clang工具链。工具链选择和环境路径管理仅在Visual Studio Code内部本地进行,并且每个项目可独立配置。

项目构建与结果分析

ST Arm Clang安装完成后,系统将调用CMake执行项目配置步骤。

image.png

可在CMake/Build输出通道中查看新的ST Arm Clang工具链。

点击“Build”按钮编译项。

image.png

image.png

结果将显示在输出控制台。编译分析器可用于进一步了解编译结果。右键单击任意映射文件,选择Open memories analysis

了解CMake 文件结构与工具链选择机制

CMakePresets.json 使用starm-clang.cmake 文件作为CMake工具链文件。

image.png

若STM32CubeMX项目是针对GCC生成的,该文件将指向gcc-arm-none-eabi.cmake 。STM32CubeMX 6.15 及后续版本会同时生成两个文件 gcc-arm-none-eabi.cmakestarm-clang.cmake ,方便开发人员在IDE内切换工具链。这些文件一经生成便不再修改。

配套的starm-clang.cmake 文件允许开发人员选择可供选择的C库组合。

image.png

默认情况下,选择ST Arm Clang工具链的混合版本,因其与现有STM32 GNU工具的兼容性最好。建议开发人员尝试使用此工具链进行代码编译与测试。如上所示,通过修改STARM_TOOLCHAIN_CONFIG变量值即可切换至依赖Newlib或Picolib的完整LLVM版本,这一过渡步骤有助于开发人员熟悉新版工具链。

STM32Cube for Visual Studio Code用户指南提供更多关于ST Arm Clang的文档,并将根据用户反馈持续补充资源。

4.gif

活动时间:即日起-8月31日

🎉️ 有奖互动:

1、针对STM32Cube优化的功能,评论区回复你的看法。请走心回复。

❤️ 回复有奖:抽15位送10京东卡

2、在【STM32团队】分享一篇Clang/LLVM工具链体验心得

🚀️ 分享有奖:优质分享者抽5位送STM32随机开发板一块

收藏 评论4 发布时间:2025-8-11 13:32

举报

4个回答
知识不仅闹 回答时间:昨天 13:42

cubemx升级,之前版本的也能加入Clang,兼容之前的版本吗

你到底在哪里 回答时间:昨天 17:49

HAL库有些中断处理函数延迟较高,希望可以自动给出一些优化建议。

生成工程的代码包含大量HAL库抽象层,对资源受限的MCU不友好

y369369 回答时间:5 小时前

换了前端 Clang,链接、启动文件、库都估计还是 GNU 那套,CubeMX 一键生成 CMake 预设,之前的项目搞进来应该无痛

y369369 回答时间:5 小时前

另外VSC 可以自动下载、激活、切换,每个项目隔离,不影响全局 PATH

所属标签

相似分享

官网相关资源

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