littlebot
Published on 2025-04-08 / 2 Visits
0

【源码】基于Arm EthosU的神经网络处理器驱动程序

项目简介

本项目是针对Arm Ethos-U神经网络处理器(NPU)的设备驱动程序,能对Ethos-U设备进行初始化、配置、运行和控制,支持同步和异步推理调用,还提供丰富的API接口与回调机制。

项目的主要特性和功能

  • 设备初始化和配置:可对Ethos-U设备进行初始化和配置,能设置目标CPU和NPU配置。
  • 同步和异步推理调用:提供同步与异步推理调用接口,方便用户按需选择。
  • 数据缓存管理:支持在有数据缓存的Arm CPU上运行,具备缓存维护功能。
  • 多线程支持:利用互斥锁和信号量,保障多线程环境下功能正常。
  • 性能监控:提供性能监控单元(PMU)接口,支持性能分析和调试。
  • 硬件信息获取:支持获取Ethos-U设备的硬件信息,如版本和配置。

安装使用步骤

1. 环境配置

确保已安装CMake和交叉编译工具链,并配置好目标CPU和NPU配置。

2. 构建项目

使用CMake构建项目,指定目标CPU和NPU配置。 示例1: bash $ cmake -B build \ -DCMAKE_TOOLCHAIN_FILE=<toolchain> \ -DCMAKE_SYSTEM_PROCESSOR=cortex-m<nr><features> \ -DETHOSU_TARGET_NPU_CONFIG=ethos-u<nr>-<macs> $ cmake --build build 示例2(使用core_platform提供的工具链文件): bash $ cmake -B build \ -DCMAKE_TOOLCHAIN_FILE=<core_platform_toolchain> \ -DTARGET_CPU=cortex-m<nr><features> \ -DETHOSU_TARGET_NPU_CONFIG=ethos-u<nr>-<macs> $ cmake --build build

3. 使用驱动程序

同步调用示例

c struct ethosu_driver *drv = ethosu_reserve_driver(); int result = ethosu_invoke(drv, custom_data_ptr, custom_data_size, base_addr, base_addr_size, num_base_addr); ethosu_release_driver(drv);

异步调用示例

c struct ethosu_driver *drv = ethosu_reserve_driver(); int result = ethosu_invoke_async(drv, custom_data_ptr, custom_data_size, base_addr, base_addr_size, num_base_addr, user_arg); int ret; do { ret = ethosu_wait(drv, <true|false>); } while(ret > 0); ethosu_release_driver(drv);

4. 性能监控

通过PMU接口进行性能监控,如启用和禁用PMU: c ETHOSU_PMU_Enable(); // 执行一些操作 ETHOSU_PMU_Disable();

5. 获取硬件信息

通过以下接口获取Ethos-U设备的硬件信息: c struct ethosu_hw_info hw_info = ethosu_get_hw_info(); 通过以上步骤,可成功构建并使用该驱动程序。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】