4、开发环境搭建:安装Arm Development Studio、CMSIS-NN、Vela编译器、配置目标板与仿真器
Ethos-U55/U65 作为 Arm 针对 Cortex-M 与 Cortex-A 平台推出的 NPU 微架构,其开发链路与传统 MCU 工具链有显著差异。开发者不仅需要配置交叉编译链,还必须理解 Vela 编译器如何将 TFLite 模型转换为 Ethos-U 可执行的 Vela 自定义算子,以及 CMSIS-NN 在何种场景下作为软件回退路径。本章将围绕四个核心环节展开:Arm Development Studio(以下简称 DS)的安装与许可配置、CMSIS-NN 软件库的集成方式、Vela 编译器的 Python 环境搭建与模型转换流程,以及目标板(以 Arm Corstone-300 为例)与仿真器的调试配置。通过本章学习,读者应能独立搭建一套可运行、可调试、可性能分析的完整 NPU 开发环境。
上图展示了从主机工具链到目标板仿真的完整工程链路。在实际项目中,开发者需要先完成 DS 与 Vela 的安装,再通过 CMSIS-NN 提供软件算子库作为混合部署的补充,最后在仿真器或 FPGA 原型上验证性能。下面将分模块详细讲解每个环节的安装步骤、配置要点与常见问题。
4.1 Arm Development Studio 安装与许可配置
核心原理:Arm Development Studio 是 Arm 官方推出的集成开发环境,基于 Eclipse 框架,集成了编辑器、编译器(Arm Compiler 6)、调试器(DS Debugger)以及性能分析工具(Streamline)。对于 Ethos-U 开发,DS 提供了对 Arm FVP(Fixed Virtual Platform)的原生支持,允许在没有真实硬件的情况下运行完整的软件栈。DS 的许可分为 Evaluation(评估版,功能受限)和 Professional(专业版,支持所有调试功能)。
安装操作流程:
- 从 Arm 官网下载 DS 安装包(约 4GB),选择对应主机操作系统(Windows/Linux)。
- 运行安装程序,选择安装路径(建议默认路径,避免中文或空格目录)。
- 安装完成后,启动 DS,在
Help → Arm License Manager中激活许可。若使用评估版,选择Evaluation License并填写邮箱获取激活码。 - 验证安装:在 DS 中新建一个空项目,检查
Arm Compiler 6是否出现在工具链列表中。
| DS 版本 | 许可类型 | 支持 Ethos-U 调试 | 适用场景 |
|---|---|---|---|
| 2023.0 | Evaluation | 是(限 30 天) | 学习评估 |
| 2023.0 | Professional | 是(完整功能) | 商业项目 |
| 2022.2 及更早 | 任意 | 需手动安装 FVP 补丁 | 旧项目维护 |
4.2 CMSIS-NN 软件库集成
核心原理:CMSIS-NN 是 Arm 提供的针对 Cortex-M 系列优化的神经网络推理库,包含卷积、池化、全连接等算子的高效实现。在 Ethos-U 开发中,CMSIS-NN 扮演两个角色:一是作为 Vela 无法完全映射的算子的软件回退路径;二是作为混合推理中 CPU 与 NPU 协同工作的基础算子库。CMSIS-NN 通过 CMSIS-Pack 方式分发,支持 Keil MDK 和 DS 两种集成方式。
集成步骤:
- 在 DS 中,通过
CMSIS Pack Manager安装ARM.CMSIS-NN最新版本(当前为 4.1.0)。 - 在项目属性中,添加 CMSIS-NN 的头文件路径和库文件路径。典型路径为
CMSISNN/Include和CMSISNN/Lib/GCC/libarm_cortexM55_softfp_nn.a。 - 在代码中引入
#include "arm_nnfunctions.h",并链接对应的库文件。
CPU 算子。此时,CMSIS-NN 的算子实现将自动被调用。建议在编译时使用 -O3 优化级别,并开启 -mcpu=cortex-m55 以利用 DSP 指令集加速。
4.3 Vela 编译器安装与模型转换
核心原理:Vela 是 Arm 开源的神经网络编译器,其核心功能是将 TFLite 格式的模型转换为 Ethos-U 可执行的 Vela 自定义算子格式。Vela 会执行算子融合、权重压缩、内存规划等优化,最终生成 .vela 文件。该文件可直接被 Ethos-U 驱动加载并执行。Vela 依赖 Python 3.8 及以上版本,通过 pip 安装。
安装与转换流程:
# 1. 安装 Vela
pip install ethos-u-vela
# 2. 验证安装
vela --version
# 3. 转换模型(以 MobileNetV2 为例)
vela mobilenet_v2.tflite --config=ethos_u55.yml --output-dir=./output
# 4. 查看转换报告
cat output/report.txt
关键参数说明:
--config:指定 Ethos-U 配置文件名,如ethos_u55.yml或ethos_u65.yml,不同配置对应不同的 MAC 阵列大小和内存带宽。--output-dir:指定输出目录,生成的.vela文件和报告将保存在此。--memory-mode:选择内存模式(如Shared_Sram或Dedicated_Sram),影响性能与内存占用。
--input_shapes=1,224,224,3。另外,Vela 对量化模型支持最佳,浮点模型虽然可以转换,但性能会大幅下降。
4.4 目标板与仿真器配置
核心原理:Ethos-U 开发通常使用 Arm Corstone-300 FPGA 原型或 FVP 仿真器。FVP 是 Arm 提供的软件仿真模型,能够完整模拟 Cortex-M55 + Ethos-U55 的硬件行为,支持 GDB 调试和性能分析。配置 FVP 需要 DS 中的 FVP Configuration 文件,该文件定义了内存映射、外设地址和启动参数。
配置步骤:
- 在 DS 中创建调试配置,选择
Arm FVP作为调试目标。 - 指定 FVP 模型路径,通常位于
DS/install_dir/sw/models/FVP_Corstone_SSE-300_Ethos-U55。 - 配置 CPU 参数:设置
-C cpu0.CFGITCMSZ=0x10(ITCM 大小)和-C cpu0.CFGDTCMSZ=0x10(DTCM 大小)。 - 加载编译生成的
.axf文件,启动调试会话。
案例拆解:某智能语音项目需要评估 Ethos-U55 对关键词识别模型(KWS)的推理性能。开发者在 FVP 上运行模型,通过 DS 的 Streamline 工具采集 NPU 利用率。初始结果显示 NPU 利用率仅为 45%,分析发现 Vela 转换时未开启权重压缩。重新使用 --weight-compression=constant 参数转换后,NPU 利用率提升至 78%,推理时间从 12ms 降至 7ms。此案例说明,仿真器配置与 Vela 参数调优需协同进行,才能获得准确性能数据。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| FVP 版本 | 11.20+ | 旧版本不支持 Ethos-U55 的周期精确模拟 |
| 内存映射 | ITCM=0x10000000, DTCM=0x30000000 | 需与链接脚本一致 |
| 调试接口 | CMSIS-DAP | FVP 内置虚拟调试探针 |
| Vela 配置 | ethos_u55.yml | MAC 阵列 256,内存 4MB |
4.5 常见误区与总结复盘
误区一:认为 Vela 转换后模型可以直接在任意 Cortex-M 上运行。实际上,.vela 文件必须配合 Ethos-U 驱动(如 ethosu_driver.c)才能执行,且驱动需要初始化 NPU 寄存器、配置中断和 DMA 通道。
误区二:忽略 CMSIS-NN 与 Vela 的版本兼容性。CMSIS-NN 4.0 以上版本才支持 Ethos-U 的混合推理模式,旧版本会导致链接错误或运行时崩溃。
误区三:在 FVP 仿真中直接使用真实硬件时序数据。FVP 的周期精确模式虽然能模拟指令周期,但内存延迟和总线仲裁行为与真实 FPGA 存在差异,性能数据仅作参考。
examples 目录下的测试模型,确认转换流程正常;② 在 FVP 上运行 DS 自带的 hello_world 示例,确认调试链路通畅;③ 将 CMSIS-NN 的 arm_convolve_s8 测试用例编译运行,验证软件算子库;④ 最后才进行完整 NPU 应用的集成。每步验证通过后再进入下一步,可大幅减少排障时间。
通过本章的学习,读者应能独立完成 Ethos-U 开发环境的搭建,并理解各工具之间的协作关系。在实际项目中,环境配置往往占据 20% 的开发时间,但良好的环境基础能显著提升后续模型部署与调优的效率。建议读者在搭建过程中记录每一步的版本号和配置参数,形成团队内部的环境基线文档,便于问题回溯与新人培训。