男生插女生视频-97精品人妻一区二区三区香蕉-日日干天天射-日日网站-亚洲欧美日韩激情-国产精品.www-成人自拍在线-琪琪色18-亚洲福利在线观看视频-91网址在线播放-色欲av无码人妻精品麻豆

你的位置:首頁 > 測試測量 > 正文

STM32 ClassB 功能安全認證|代碼分區設計與實現全攻略

發布時間:2026-05-21 來源:轉載 責任編輯:lily

【導讀】工業與家電產品通過 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_common_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

特別推薦
技術文章更多>>
技術白皮書下載更多>>
熱門搜索

關閉

?

關閉