You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PSA Crypto库Debug版二进制过大 如何通过配置裁剪缩小体积

PSA Crypto库裁剪解决RA6M1平台二进制体积过大问题

crypto_config.h的作用确认

你的判断完全正确。crypto_config.h是PSA Crypto(以及集成它的Mbed TLS)标准的编译期功能裁剪入口,库中所有算法、密钥类型的实现代码都会根据该文件内PSA_WANT_*系列宏的开关状态决定是否参与编译,是嵌入式场景下压缩加密库体积最核心的配置文件。

Segger Embedded工程未包含该文件的原因

  • 你使用的PSA Crypto发行包默认使用内置的全功能配置,也就是你找到的那份开启了所有算法的头文件,没有主动暴露到用户工程目录
  • 瑞萨针对RA系列的FSP软件包默认打包全量PSA Crypto功能以适配所有可能的用户场景,默认没有开放自定义配置入口,不会把配置头文件放到用户可见的工程路径下
  • 工程头文件搜索路径未覆盖你自行存放crypto_config.h的目录,编译器编译时不会读取你自定义的配置

裁剪配置操作步骤

你找到的默认配置开启了大量冗余功能:包括全系列ECC算法、MD2/MD4/MD5等老旧弱哈希、RSA OAEP/PSS等你不需要的RSA填充模式、SHA全系列哈希、TLS协议相关的PRF算法,这些冗余代码是Debug版本体积过大的核心原因。
按以下步骤操作即可完成裁剪:

  1. 新建自定义crypto_config.h文件,仅保留你需要功能对应的宏,参考最小配置如下:

注意:RSASSA-PKCS1-v1_5签名验签必须搭配哈希算法使用,以下配置默认保留嵌入式场景最常用的SHA-256,如果你需要搭配其他哈希算法可自行添加对应宏,不需要的功能宏全部删除即可。

#ifndef PSA_CRYPTO_CONFIG_H
#define PSA_CRYPTO_CONFIG_H

// 仅保留RSA密钥类型,移除所有ECC相关宏
#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR          1
#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY        1

// 仅保留需要的RSA算法,移除其余非必要算法宏
#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT         1 // RSA PKCS#1 v1.5加解密
#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN          1 // RSA PKCS#1 v1.5签名验签

// 保留签名所需的哈希算法,此处以SHA-256为例
#define PSA_WANT_ALG_SHA_256                    1

// 仅保留2048位RSA密钥长度支持
#define PSA_WANT_RSA_KEY_SIZE_2048              1

#endif /* PSA_CRYPTO_CONFIG_H */
  1. 将自定义的crypto_config.h放到你的Segger Embedded工程用户源码目录中
  2. 在工程预处理器配置中添加宏MBEDTLS_PSA_CRYPTO_CONFIG,强制开启PSA自定义配置功能
  3. 将存放crypto_config.h的目录添加到工程头文件搜索路径的最优先级位置,保证编译器优先读取你的自定义配置,而不是库内置的全量配置
  4. 清理工程所有中间文件后全量重编译即可,Debug版本下二进制体积通常可缩减70%以上

如果编译过程中提示依赖宏缺失,根据编译报错补充对应依赖项即可,这类依赖通常是基础编解码工具宏,不会带来明显的体积增长

内容的提问来源于stack exchange,提问作者vico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:39:14