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

Mbed编译depthwise_conv.cc报错求助:CMSIS-NN适配及Python版本疑问

Mbed编译tinyML项目问题排查与解决

问题汇总

  • 按《tinyML》书籍步骤部署时Mbed编译失败
  • 修改make命令的TAGS为CMSIS-NN disco_f746ng后,出现depthwise_conv.cc的类型转换、函数未声明错误
  • 同时触发Python错误:_queue.SimpleQueue' object has no attribute 'queue"
  • 面临Python版本冲突:有人建议用Python2.7,但ARM CLI1要求Python3.7.x

解决步骤

1. 解决Python版本冲突

用虚拟环境隔离Python3.7.x环境,避免全局版本干扰:

  • 安装对应系统的Python3.7.x版本
  • 创建虚拟环境:
    python3.7 -m venv tinyml_env
    
  • 激活虚拟环境:
    • Windows:tinyml_env\Scripts\activate
    • Linux/macOS:source tinyml_env/bin/activate
  • 在激活的虚拟环境中安装ARM CLI1所需依赖,重新执行编译流程

2. 修复depthwise_conv.cc编译错误

  • 核对CMSIS-NN版本:书中可能指定了特定版本,当前使用的CMSIS-NN API可能有变更,导致代码不兼容。切换到书中推荐的CMSIS-NN版本
  • 修正代码错误:
    • 类型转换问题:将不匹配的类型强制转换为目标类型(比如(int32_t)或(uint8_t),根据上下文调整)
    • 函数未声明:检查是否遗漏了头文件引用(比如#include "arm_nnfunctions.h"),或函数名是否因版本更新变更(比如旧版本函数名在新版本中被重命名)
  • 确认TAGS参数正确性:确保CMSIS-NN disco_f746ng拼写、大小写无误,目标板标识disco_f746ng是Mbed支持的正确板名

3. 解决SimpleQueue Python错误

这个错误是因为代码直接访问了SimpleQueue的内部queue属性,而Python3.7+的queue.SimpleQueue不对外暴露该属性:

  • 修改涉及的Python脚本:将访问_queue.queue的代码替换为官方API,比如用get()/put()操作队列,或通过迭代器遍历队列元素
  • 如果是书籍提供的部署脚本,检查是否有适配Python3.7+的更新版本,手动替换或修改代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:03:21