API GUIDE / TNPU / API OVERVIEW

TNPU API 概述

分层与职责范围

TNPU 的实现按照与 SPI 驱动相同的边界拆分:

Application(应用层)
    |
    v
TNPU middleware (im_tnpu)   任务状态、IRQ 等待、超时、cache、任务提交
    |
    v
TNPU HAL                    时钟门控、复位/boot、DRAM 参数区、mailbox
    |
    v
TNPU LL                     单实例寄存器访问器
    |
    v
tnpu_regs.h                 寄存器布局、基地址、位域

TNPU 是单硬件实例。LL API 有意使用全局 TNPU_CCU 与 TNPU_DRAM 寄存器块宏,而不是像 SPI/AIC 那样传入 instance 指针。

层次 负责 不负责
tnpu_regs.h CCU/DRAM 布局、地址/大小/位域宏 策略或生命周期
LL 直接寄存器读写 参数校验、任务状态、超时、cache
HAL CPM TNPU 时钟门、复位/boot 固件、PMA、参数区、mailbox 与诊断 任务生命周期、buffer 归属、cache、等待循环
Middleware 任务描述、运行状态、IRQ 完成等待、超时、cache 一致性、结果校验 裸寄存器编程或 CPM

文件与构建选项

文件 用途
code/include/drivers/g32s10/tnpu/tnpu_regs.h TNPU 寄存器定义
code/include/drivers/g32s10/tnpu/ll_tnpu.h 内联低层访问器
code/include/drivers/g32s10/tnpu/hal_tnpu.h 硬件控制 HAL
code/drivers/g32s10/tnpu/hal_tnpu.c HAL 实现
code/middleware/tnpu/include/im_tnpu.h 面向任务的 middleware API
code/middleware/tnpu/src/im_tnpu.c middleware 实现
code/middleware/tnpu/example/ IRQ 驱动的 middleware 应用示例

DRIVER_TNPU 负责构建 HAL,并 select DRIVER_CPM,因为 HAL 拥有 TNPU 时钟门控。MIDDLEWARE_TNPU 依赖 DRIVER_TNPU 和 OS_API,select DRIVER_IRQ,并使用固定的 IRQ_TNPU 构建中断驱动的任务提交 middleware。