产品 +

iEnter|智慧企业 +

企业资源计划管理系统

智钉

iManu|智能制造 +

制造执行系统

物流执行系统

高级计划及排程

iSupply|智慧供应链 +

运输管理系统

仓储管理系统

供应商关系管理系统

EP|智慧生态营销 +

经销商管理系统

全面营销管理系统

客户关系管理系统

Connect|智能网联 +

智能网联云平台

新能源汽车监控平台

商用车企业监控平台

电检系统

行驶记录仪

车载T-BOX

汽车故障诊断仪

国六OBD产品

后装GPS产品

DataValue|数据价值赋能 +

智慧质量

线索运营

智慧广告

Platform|云原生PaaS平台 +

云原生PaaS平台

容器引擎(QKP)

AI智能服务平台

API网关平台

低代码平台-QLCP

元宇宙技术探索平台

数据中台

智能运维平台

服务 +

咨询 +

车路协同解决方案

IT咨询

云原生技术架构规划与咨询服务

评测 +

网络安全等级保护测评

实施 +

电子电气检测服务

网联产品组装制造

运维 +

桌面及外围设备运维服务

云服务(IDC)

销贷服务

乘用车车联网运营服务

商用车车联网运营服务

客户联络中心运营服务

数据价值运营服务

K8s运维

关于js333线路检测 +

企业简介 +

企业简介

企业价值 +

企业荣誉

行业地位

资质认证

社会责任 +
企业文化 +
投资者关系 +
麾下企业 +
加入js333线路检测 +

业务发展规划

福利待遇

人才招聘

信息公开 +

企业基本信息 +

企业概况

经营范围

市场主体登记基本信息

组织机构

成员单位

资质荣誉

企业重大事项 +

股权信息

产权信息

研发成果

企业经营管理 +

财务与经营状况

品牌与产品

安全环保 +

安全信息

招标招募 +

招标信息

人力资源 +

招聘信息

社会责任 +
企业公告 +

上市公司

公告信息

投资者关系

加入js333线路检测

客户留言

js333线路检测-STM32 ClassB 功能安全认证|代码分区设计与实现全攻略
2026-06-03 17:07:07

  

【导读】工业与家电产物经由过程 ClassB 功效安全认证时,常面对一个焦点痛点:同平台多子系列产物,仅运用代码差别、安全代码彻底一致,却需反复认证,时间与成本居高不下。为解决该问题,行业通用方案是安全代码与运用代码物理分区,确保安全代码二进制稳定,一份认证笼罩全系列。本文基在 ST 官方 LAT1630 文档,联合 STM32G081B+MDK 实操,拆解分区道理、分区设计、实操步调与调试技巧,帮你高效落地 ClassB 代码分区。

资料获取:经验分享 | LAT1630 ClassB功效安全认证代码与运用代码举行分区的实现要点

1. 痛点直击:为什么必需做代码分区

Class 认证焦点是安全代码二进制不成变,运用代码修改不克不及影响安全代码。但现实开发中,运用代码变更会触发连锁问题:

函数地址漂移:安全代码挪用的运用函数,地址随运用代码修改而变化,致使安全代码二进制转变;

全局变量重分配:安全拜候的全局变量,地址从头分配,粉碎安全逻辑;

隐式挪用滋扰:编译器天生的 switch 跳转等隐式挪用,地址随运用代码变更,激发安全代码异样。

分区设计的焦点方针,就是断绝安全代码、固定依靠地址、阻遏运用代码影响,实现 “安全代码一次认证,全系列复用”。

2. 焦点道理:三区两区别区架构

要实现代码断绝,需对于ROM(代码区)分三区、RAM(变量区)分两区,精准断绝安全、过渡、运用代码,确保安全代码自力性。

2.1 ROM 三区划分

SECTION_CLASSB:存放 ClassB 安全代码(如 stm32xx_STL 系列自检代码),只读不成修改,认证焦点区域;

SECTION_WRAPPER:过渡封装区,存放安全代码挪用的函数,地址固定稳定,含不变 HAL 库函数、运用封装函数;

SECTION_APP:平凡运用代码区,可自由修改,不被安全代码直接拜候,变更无影响。

2.2 RAM 两区划分

固定地址 RAM:存放安全代码拜候的全局 / 静态变量,地址锁定稳定;

可变地址 RAM:存放平凡运用变量,可动态分配,不影响安全逻辑。

2.3 要害断绝逻辑

安全代码仅挪用 Wrapper 区函数、拜候固定 RAM 变量,彻底阻遏 App 区;App 代码修改仅影响自身,安全代码二进制100% 稳定,满意 Class 认证要求。

3. 实操落地:MDK+STM32G081B 分区步调

以 STM32Cube_FW_ClassB_V2.3.0、MDK 5.41.0 为例,分步实现分区配置。

3.1 代码分类收拾

将工程文件按功效分组:

ClassB 代码:stm32g0xx_STLmain.c、stm32g0xx_STLxxx.c(自检焦点代码);

Wrapper 代码:安全挪用的 HAL 库(CRC、WDG、RCC 驱动)、封装函数;

App 代码:用户营业逻辑、无关驱动代码。

3.2 Scatter 文件分区配置

经由过程 MDK 散列文件,强迫代码 / 变量分区:

ROM 分区:指定 SECTION_CLASSB、SECTION_WRAPPER、SECTION_APP 的肇始地址与规模;

RAM 分区:划分固定地址区与可变区,绑定安全变量。

焦点配置要点:

SECTION_CLASSB 设为自力持续地址,无堆叠;

SECTION_WRAPPER 锁定肇始地址,禁止重定向;

安全全局变量强迫分配到固定 RAM 区。

3.3 Wrapper 封装技巧

安全代码需挪用可变运用函数时,必需做封装:

原始函数(如 STL_InitClock_Xcross_Measurement)放于 App 区;

新增封装函数(STL_InitClock_Xcross_Measurement_Wrapper),内部挪用原始函数;

封装函数放入 Wrapper 区,安全代码仅挪用封装函数;

运用代码修改原始函数,Wrapper 地址稳定,安全代码不受影响。

3.4 编译器避隐式挪用

安全代码中 switch 语句会天生

ARM_co妹妹on_switch8

隐式挪用,地址易漂移,需添加编译选项:

对于 ClassB 代码文件(如 stm32xx_STLmain.c),添加

--no_branch_tables

禁用编译器天生分支跳转表,杜绝隐式挪用,包管安全代码二进制不变。

4. 调实验证:确保安全代码稳定

分区配置后,需验证安全代码二进制一致性,防止配置疏漏。

4.1 fromelf 汇编对于比

用 MDK 自带 from 东西,将 axf 履行文件转为汇编:

企业微信截图_20260521174100.png

对于比运用代码修改先后的汇编文件,SECTION_CLASSB 段彻底一致,即为及格。

4.2 宏测实验证

开启 / 封闭运用代码宏(如__VERSION_UPDATE),编译两个版本:

对于比二进制文件,安全代码区无差异;

运用代码区正常变化,验证断绝效果。

ClassB 代码分区的焦点是三区两断绝:ROM 分 ClassB、Wrapper、App,RAM 分固定区、可变区,共同封装设计与编译器优化,完全阻遏运用代码对于安全代码的影响。

该方案已经经由过程 ST 官方验证,适配 STM32 全系列 ClassB 认证项目,可年夜幅降低多子系列认证成本,缩短产物上市周期。实操时重点存眷 Scatter 配置、Wrapper 封装、隐式挪用规避,便可高效落地分区设计。

gg_20260512171736_266.png

-js333线路检测


地址:长春净月高新技术产业开发区百合街1009号

版权所有:js333线路检测信息技术股份有限公司

电话:0431-85861717/ 4001182299