扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

STM32CubeIDE 移植 ClassB 4.0 完整教程

03/17 14:12
240
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

做家电、工控、医疗等安全相关产品,IEC 60730 ClassB 功能安全自检是必备环节。ST 最新发布的ClassB 4.0相比旧版改动巨大:库文件化、接口统一、兼容 SIL,但很多人在移植时卡在链接脚本、CRC 生成、路径配置、编译报错。

ST 官方 LAT1347 应用笔记,以STM32G031+CubeIDE为例,把 ClassB 4.0 移植全流程讲得清清楚楚。本文用最落地、可直接照做的方式,把环境搭建、工程配置、自检实现、避坑要点一次性讲透,看完就能一次移植成功。

资料获取:【应用笔记】LAT1347_基于STM32CubeIDE移植ClassB 4.0

1. ClassB 4.0 新版核心变化(先看懂再动手)

  1. 核心库不再开源,以 .a 库文件提供,集成更简单
  2. 启动自检 + 运行时自检接口统一,调用更简洁
  3. 接口与 SIL 兼容,一套代码可共用
  4. 支持:Flash/RAM/CPU/ 时钟 / 外设等全套安全自检

2. 必备环境安装(缺一不可)

移植前必须装好这 4 个工具:

  1. STM32CubeMX(生成工程)
  2. STM32CubeProgrammer(编译后自动计算 CRC)
  3. STM32CubeIDE(编译开发)
  4. X-CUBE-CLASSB 4.0 软件包(对应型号)

关键:把 STM32_Programmer_CLI.exe 所在目录加入系统环境变量,否则编译时无法生成 CRC。

3. CubeMX 工程创建要点

  1. 选择对应型号(如 G031)
  2. 使能定时器(时钟监测需要输入捕获)
  3. IDE 选择:STM32CubeIDE
  4. 生成代码后,把 X-CUBE-CLASSB 的Middlewares目录拷贝到工程里

4. CubeIDE 工程配置(最容易错)

  1. 添加 ClassB 头文件路径
  2. 添加 ClassB 源文件
  3. 添加 ClassB 库文件(.a)
  4. 修改链接脚本.ld文件,添加:
    • RAM 测试备份区(NOLOAD)
    • Flash 结束地址标识

5. 4 大类功能安全自检实现(直接复制代码)

5.1 Flash 自检(CRC 校验)

  • 原理:编译时生成各区段 CRC,运行时比对
  • 必须配置:STL_ROM_END_ADDR(Flash 结束地址)
  • 支持:全片测试 / 分节测试
  • 必须在编译后步骤加入 CRC 生成脚本,否则测试必败

5.2 RAM 自检

  • 原理:通过读写 March 算法检测 RAM 故障
  • 需要在链接脚本中定义备份缓冲段
  • 支持:全片测试 / 分块测试
  • 不破坏运行时数据

5.3 CPU 自检

  • 最简单,无需配置参数
  • 测试 CPU 运算、逻辑、寄存器
  • 启动自检 + 运行自检接口一致

5.4 调度与故障处理

  • STL_SCH_Init():初始化调度器
  • FailSafe_Handler():自检失败进入故障处理(如灯闪、系统锁死)

6. 最关键:编译后 CRC 生成脚本

直接把这段填入 Post-build steps:

arm-none-eabi-objcopy -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin" && arm-none-eabi-size "${BuildArtifactFileName}" && echo " \"STM32_Programmer_CLI.exe\" -sl \"${CWD}\\${BuildArtifactFileName}\" 0x8000000 0x08010000 0x400" > call_prg.bat && "${CWD}\call_prg.bat"

注意:

  • 0x08010000 要根据你的 Flash 大小修改
  • 段大小固定0x400

7. 移植最容易踩的 7 个坑

  1. 没加环境变量 → CRC 脚本报错
  2. 没改链接脚本 → RAM 测试异常
  3. Flash 结束地址配置错误 → 自检不通过
  4. 没加 CRC 脚本 → Flash 自检永远失败
  5. 头文件 / 库文件路径错误 → 编译报错
  6. 定时器没开 → 时钟检测无法实现
  7. 用旧版 ClassB 思路移植新版 → 接口不兼容

8. 总结(工程师最简记忆版)

ClassB 4.0 移植就 3 步:

  1. 搭环境 + 配工程
  2. 改链接脚本 + 加 CRC 脚本
  3. 调用 Flash/RAM/CPU 自检 API

全程不用改底层、不用啃源码,照着 LAT1347 做,功能安全一次过审。

相关推荐