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

使用Tflite Micro搭配CMSIS-NN编译报错求助

解决PlatformIO中CMSIS-NN链接__sadd16/__smlabb符号未定义的问题

核心原因

这些未定义符号是ARM Cortex-M系列处理器的DSP指令集扩展相关函数,问题根源在于编译时未开启对应指令集支持,或CMSIS-NN的源文件未被正确纳入编译链接流程。

具体解决步骤

1. 确认目标MCU的指令集支持

首先核实你的MCU型号:仅Cortex-M4/M7/M33等带DSP扩展的型号支持这些指令,若使用Cortex-M0/M0+,要么更换支持DSP的MCU,要么启用CMSIS-NN的纯C fallback实现(性能会下降)。

2. 在platformio.ini中添加DSP指令集编译选项

在对应环境配置中补充编译标志,开启DSP扩展:

[env:your_target_env]
platform = ststm32  # 根据你的MCU平台调整,如nordicnrf52等
board = your_board_name
build_flags =
    -DARM_MATH_CM4  # 按MCU型号修改,CM7对应ARM_MATH_CM7,CM33对应ARM_MATH_CM33
    -mfloat-abi=hard  # 带FPU的MCU可选,纯DSP场景可用softfp/soft
    -mfpu=fpv4-sp-d16  # 匹配MCU的FPU型号,如M7用fpv5-d16,需参考MCU手册
    -D__CMSIS_NN_USE_DSP=1  # 强制启用CMSIS-NN的DSP优化实现

3. 确保CMSIS-NN源文件被正确编译

由于CMSIS-NN存放在lib\tensorflow-lite\third_party\cmsis_nn,需让PlatformIO识别并编译这些文件:

  • 若lib\tensorflow-lite目录无library.json,手动创建:
{
  "name": "tensorflow-lite-micro",
  "version": "2.15.0",
  "build": {
    "srcFilter": [
      "+<**/*.c>",
      "+<third_party/cmsis_nn/CMSIS/NN/Source/**/*.c>",
      "+<third_party/cmsis_nn/CMSIS/DSP/Source/**/*.c>"
    ],
    "includeDirs": [
      ".",
      "third_party/cmsis_nn/CMSIS/NN/Include",
      "third_party/cmsis_nn/CMSIS/DSP/Include"
    ]
  }
}
  • 也可直接在platformio.ini的build_flags中指定源文件路径:
build_flags =
    # 其他已有标志...
    -Ilib/tensorflow-lite/third_party/cmsis_nn/CMSIS/NN/Include
    -Ilib/tensorflow-lite/third_party/cmsis_nn/CMSIS/DSP/Include
    # 手动添加需要编译的源文件
    lib/tensorflow-lite/third_party/cmsis_nn/CMSIS/NN/Source/*/*.c
    lib/tensorflow-lite/third_party/cmsis_nn/CMSIS/DSP/Source/*/*.c

4. 启用TF Lite Micro的CMSIS-NN支持

在platformio.ini的build_flags中添加宏定义,确保TF Lite Micro调用CMSIS-NN优化:

build_flags =
    # 其他已有标志...
    -DTF_LITE_MICRO_USE_CMSIS_NN=1

5. 清理缓存后重新编译

PlatformIO的旧缓存可能导致问题,执行以下命令后重新编译:

pio run -t clean
pio run

额外排查点

  • 若使用无DSP扩展的Cortex-M3,需禁用DSP优化,改用纯C实现:在build_flags中添加-D__CMSIS_NN_NO_DSP=1
  • 确保CMSIS-NN版本与TF Lite Micro兼容,优先使用TF Lite Micro自带的CMSIS-NN版本,不要单独替换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:12:15