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

如何为ARM M7(STM32F767)构建可用的mbedtls-2.28.6库?

用CMake生成STM32F767(ARM Cortex-M7)适用的mbedTLS库详细步骤

1. 前置准备

  • 确保gcc-arm-none-eabi-10.3-2021.10的bin目录已添加至系统PATH。默认安装路径示例:C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin,可通过在控制台输入arm-none-eabi-gcc --version验证配置是否生效。
  • 解压mbedtls-2.28.6.zip至本地路径,例如C:\mbedtls-2.28.6。

2. 创建交叉编译工具链文件

在mbedTLS根目录下新建arm-stm32f7-toolchain.cmake文件,内容如下:

# 指定目标系统为嵌入式无OS环境
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)

# 指定ARM交叉编译器
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)

# STM32F767编译参数(Cortex-M7 + FPU硬浮点)
set(COMMON_FLAGS "-mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -ffunction-sections -fdata-sections -Wall -Wextra")
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -std=c99")
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -std=c++11")
set(CMAKE_ASM_FLAGS "${COMMON_FLAGS} -x assembler-with-cpp")

# 禁用交叉编译时的可执行文件测试(嵌入式环境无法运行)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# 指定库的输出路径(可选)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

3. 配置mbedTLS的config.h

进入C:\mbedtls-2.28.6\include\mbedtls,先复制config.h为config.h.backup(备份原文件),再修改config.h中的关键宏定义:

必须关闭的功能(针对无OS MCU)

  • #define MBEDTLS_FS_IO → 注释掉或改为#undef MBEDTLS_FS_IO(禁用文件系统操作)
  • #define MBEDTLS_PKCS11_C → 注释掉或改为#undef MBEDTLS_PKCS11_C(取消PKCS#11支持)
  • #define MBEDTLS_ZLIB_SUPPORT → 注释掉或改为#undef MBEDTLS_ZLIB_SUPPORT(禁用zlib压缩)

必须开启的功能(HTTPS服务器需求)

  • 确保#define MBEDTLS_SSL_SERVER已开启(默认注释则取消注释)
  • 确保#define MBEDTLS_ENTROPY_HARDWARE_ALT已开启(启用STM32硬件随机数生成,后续需自行实现mbedtls_hardware_poll函数)
  • 确认MBEDTLS_RSA_C、MBEDTLS_SHA256_C、MBEDTLS_AES_C等HTTPS核心依赖算法已开启

可选优化(减小库体积)

  • 注释掉不需要的加密算法、旧协议版本(如SSLv3、TLSv1.0)
  • 设置#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384(根据MCU内存调整,默认值偏大)

4. 用CMake生成编译文件并编译

打开Windows控制台,执行以下步骤:

  1. 进入mbedTLS根目录:
cd C:\mbedtls-2.28.6
  1. 创建并进入编译输出目录:
mkdir build && cd build
  1. 运行CMake配置(指定工具链文件、禁用示例/测试):
cmake .. -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=../arm-stm32f7-toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DMBEDTLS_BUILD_EXAMPLES=OFF -DMBEDTLS_BUILD_TESTS=OFF

若控制台找不到mingw32-make,需将MinGW的bin目录添加至PATH,或改用"NMake Makefiles"生成器并对应调整后续编译命令。

  1. 执行编译:
mingw32-make -j4

-j4表示使用4线程编译,可根据CPU核心数调整数值。

5. 验证生成的库文件

编译完成后,build/library目录下会生成三个静态库:

  • libmbedtls.a
  • libmbedcrypto.a
  • libmbedx509.a

可通过以下命令验证库的架构是否为ARM Cortex-M7:

arm-none-eabi-readelf -h libmbedtls.a | grep "Machine"

输出应显示Machine: ARM,确认是适用于目标MCU的库文件。


内容的提问来源于stack exchange,提问作者Vladimír Šustek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:21:06