找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1615

积分

1

好友

227

主题
发表于 3 天前 | 查看: 10| 回复: 0

随着人工智能(AI)技术的普及和微控制器(MCU)性能的不断提升,在资源受限的嵌入式设备上运行神经网络算法已成为现实。本文将以搭载ARM Cortex-M85内核的瑞萨RA8单片机(VisionBoard开发板)为例,详细介绍如何将最新版的CMSIS-NN V6.0.0神经网络库移植到RT-Thread操作系统中。

CMSIS-NN简介

CMSIS-NN是Arm官方提供的一套高效的神经网络内核库。其设计目标是为Arm Cortex-M系列处理器提供优化的神经网络计算函数,旨在最大限度地提升性能并减少内存占用

该库本质上是一个计算中间层,向上提供了统一的神经网络算子接口,内部则根据处理器能力实现了纯CPU、DSP指令集以及MVE(M-profile Vector Extension,M核向量扩展)等多种加速方案。这有效屏蔽了底层硬件差异,降低了在嵌入式设备上进行人工智能应用开发的难度。

为何选择CMSIS-NN v6.0.0?

  1. 核心特性:专为Cortex-M处理器设计,提供高性能、低内存占用的神经网络计算函数。
  2. 硬件匹配:该版本加强了对MVE指令集的支持,而MVE正是Cortex-M85内核的重要特性。瑞萨RA8D1芯片的CPU核心恰好是Cortex-M85,因此能充分发挥硬件加速潜力。
  3. 生态兼容:CMSIS-NN可作为TensorFlow Lite for Microcontrollers (TFLM)的后端,方便集成更上层的AI框架。
  4. 新功能:v6.0.0版本引入了对int4数据类型的MVE支持、LSTM算子的重构以对齐TFLM、以及对分组卷积、转置卷积等算子的增强,详情可参阅文末的Release Note链接。

移植步骤详解

1. 创建RT-Thread项目

使用RT-Thread Studio创建一个基于VisionBoard开发板的模板项目。此过程较为常规,此处不再展开。

2. 添加CMSIS-NN源码

在项目的packages目录下手动下载CMSIS-NN v6.0.0版本的源代码。

3. 修改项目配置

在项目根目录的Kconfig文件中添加CMSIS-NN包的配置选项。注意: 修改后需确保文件末尾保留一个空行,否则可能导致menuconfig命令报错。

检查packages目录下是否存在SConscript文件,并确保其内容正确,用于将软件包加入构建系统。若无则需手动创建。

4. 配置CMSIS-NN包

CMSIS-NN源码目录的顶层创建SConscriptKconfig文件。

  • SConscript:用于编译CMSIS-NN库源文件。
  • Kconfig:提供菜单配置选项,允许用户选择是否编译该库及其单元测试。
5. 编译验证

完成上述修改后,在命令行中执行scons命令编译整个项目。编译输出的最后部分应显示成功生成了CMSIS-NN的相关库文件,表明库的移植已初步成功。

单元测试与验证

CMSIS-NN库自带了一套完善的单元测试,位于Tests/UnitTest目录。为了在RT-Thread环境中运行这些测试,需要进行适配。

1. 修改测试框架

原始的测试脚本会为每个用例生成独立的main函数,适用于在模拟器上运行。我们需要将其修改为注册为RT-Thread的Finsh命令,以便通过串口命令行交互式测试。

主要修改unittest_targets.py脚本,使其能够:

  • 指定生成非main的入口函数名。
  • 生成注册Finsh命令的代码模板。
  • 生成适配RT-Thread构建系统(SCons)的编译脚本。

修改完成后,执行以下命令生成RT-Thread平台的测试代码:
python unittest_targets.py --download-and-generate-test-runners --target ARMCM85 --toolchain AC6 --rtthread

2. 集成测试到构建系统

CMSIS-NN/TestsCMSIS-NN/Tests/UnitTest目录下分别创建SConscript文件,将生成的测试用例源代码纳入项目编译。

3. 解决链接问题

将所有测试用例链接到一个工程中时,会遇到重复的函数和全局变量定义错误。通过创建两个Shell脚本进行批量修复:

  • fix_testCode.sh:为setUptearDown等函数添加weak弱属性修饰。
  • fix_testData.sh:为所有测试数据数组添加static静态存储修饰符。

执行脚本后重新编译,即可解决链接错误。

4. 运行测试

编译成功后,将固件下载到VisionBoard开发板。在串口终端中输入help命令,可以看到所有已注册的神经网络算子测试命令。

例如,输入avgpool_s8命令即可运行平均池化算子的int8类型测试。通过逐一执行这些命令,可以验证CMSIS-NN库中各个算子在真实硬件上的功能正确性。

参考资源

  1. CMSIS-NN官方源码仓库
  2. TensorFlow Lite for Microcontrollers
  3. CMSIS-NN v6.0.0 Release Note
  4. 本文修改后的代码仓库:https://github.com/xusiwei/CMSIS-NN (供参考)

通过以上步骤,我们成功在瑞萨RA8这款高性能嵌入式单片机上搭建了CMSIS-NN神经网络加速库的运行环境,为后续部署复杂的AI模型奠定了基础。




上一篇:外包程序员的职业出路:技术能力提升与学历困境的破局思考
下一篇:架构师绩效被打C:技术团队管理中日报制度的反思与实战策略
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:11 , Processed in 0.194315 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表