项目简介
本项目是针对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】