更新nn_api.c后,同步所有的lib
本项目旨在为用户提供一个 C 应用程序演示和可调用的函数接口,以便用户可以快速了解和利用其功能。
该工程基于 FT-M6678NE 芯片的 PNNA 核心架构,其驱动版本为V1.15.0,设计中采用统一的函数接口规范,即ARM端与DSP端虽运行于不同模式,但调用接口完全一致,实现了跨模式的无缝兼容性。
主要功能:
pnna_drivers 目录结构及其主要功能如下所示:
pnna_drivers ├── include │ ├── nn_api.h /* 网络推理流程相关函数 */ │ ├── nn_utils.h /* 文件读写和工具相关函数 */ │ ├── preprocess.h /* 前处理相关函数,如归一化操作 */ │ ├── quantize.h /* 量化相关函数 */ │ ├── pnna_lite.h /* 结构体定义 */ │ └── pnna_lite_common.h /* 类型定义 */ │ ├── lib │ ├── arm /* arm端所需的库文件 */ │ ├── dsp /* dsp端所需的库文件 */ │ └── rtt_dsp /* dsp端rt-thread系统下运行网络推理所需的库文件 */ │ └── README.md
网络推理流程示例代码如文件:yolov4_tiny_demo.c 中所示
上电Pnna硬件,初始Pnna硬件和软件环境,达到就绪状态以接受作业。
/** * @brief 打开 Pnna 设备 * * @return int 处理后的状态码,0表示成功打开设备 */ int pnna_open();
/** * @brief 初始化网络,为context上下文结构体中的变量分配空间 * * @param OUT context 网络推理上下文 * @param IN nbg_name NB文件名 * @param IN time_out 网络推理超时时间 * @return int 处理后的状态码,0表示成功,其他表示失败 */ int nn_init(nn_context **context, const char *nbg_name,\ unsigned int time_out);
/** * @brief 对已经量化后的buffer进行推理 * * @param IN context 网络推理上下文 * @param IN input_buffer 已量化后的buffer * @param OUT output_buffer 存放结果 * @return int 处理后的状态码,0表示成功,其他表示失败 */ int nn_infer(nn_context *context, void **input_buffer, void **output_buffer);
释放在网络准备就绪时分配的所有内部内存分配
/** * @brief 释放初始化上下文时,malloc出的内存空间 * * @param IN context 网络推理上下文 */ int nn_destroy(nn_context *context);
/** * @brief 关闭 Pnna 设备 * * @return int 处理后的状态码,0表示成功关闭设备 */ int pnna_close();
详见:linux 模型部署
详见:祼机模型部署
应用程序读取待处理数据,根据数据类型进行预处理操作,选择是否需要归一化和量化。
预处理操作完成后将待推理数据和NBG文件交给Pnna核进行推理。
推理完成后将数据进行反量化操作,并根据模型类型进行相应的分类或检测等处理。
最后输出结果。
在 Ubuntu 操作系统下,通过交叉编译工具链编译推理工程
将 NBG 文件、可执行程序和待推理数据传输至板卡
板卡上主控制器(CPU / DSP)根据可执行程序内容,将 NBG 文件和待处理数据通过驱动加载至 Pnna 核上运行,处理完成后通知主控制器到固定地址取回结果
基于 FT-M6678NE pnna 核DSP端Lite驱动
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
驱动函数接口说明
概述
本项目旨在为用户提供一个 C 应用程序演示和可调用的函数接口,以便用户可以快速了解和利用其功能。
该工程基于 FT-M6678NE 芯片的 PNNA 核心架构,其驱动版本为V1.15.0,设计中采用统一的函数接口规范,即ARM端与DSP端虽运行于不同模式,但调用接口完全一致,实现了跨模式的无缝兼容性。
主要功能:
文件简介
pnna_drivers 目录结构及其主要功能如下所示:
推理流程
网络推理流程示例代码如文件:yolov4_tiny_demo.c 中所示
打开设备
上电Pnna硬件,初始Pnna硬件和软件环境,达到就绪状态以接受作业。
初始化网络
网络推理
释放空间
释放在网络准备就绪时分配的所有内部内存分配
关闭设备
前、后处理说明
编译与运行
arm端工程编译与运行
详见:linux 模型部署
DSP端工程编译与运行
详见:祼机模型部署
流程解释
应用程序推理流程
应用程序读取待处理数据,根据数据类型进行预处理操作,选择是否需要归一化和量化。
预处理操作完成后将待推理数据和NBG文件交给Pnna核进行推理。
推理完成后将数据进行反量化操作,并根据模型类型进行相应的分类或检测等处理。
最后输出结果。
整体流程
在 Ubuntu 操作系统下,通过交叉编译工具链编译推理工程
将 NBG 文件、可执行程序和待推理数据传输至板卡
板卡上主控制器(CPU / DSP)根据可执行程序内容,将 NBG 文件和待处理数据通过驱动加载至 Pnna 核上运行,处理完成后通知主控制器到固定地址取回结果