ZHDA249 July 2026 TDA4VE-Q1
当主机内核定义内核接口时,目标内核会在目标内核上实现自定义操作的实际执行。在本示例中,目标内核在 Arm Cortex-A72 内核上运行,负责接收输入和输出对象描述符、访问图像缓冲区、执行阈值操作,并将处理后的结果返回到 OpenVX 框架。
目标内核实现位于以下源文件中。
vision_apps/kernels/custom_threshold/a72/vx_custom_threshold_target.c
目标内核包含四个主要回调函数。
• 通过 TIOVX 框架注册目标内核。
• 在执行图形之前创建所需的任何资源。
• 处理每个节点的执行。
• 释放图形时删除资源。
目标内核是通过调用 tivxAddTargetKernel() 来注册,该调用将自定义内核与其回调函数相关联。
/* Register the Target Kernel on the A72 core */
vxAddTargetKernel( kernel_id, TIVX_TARGET_MPU_0,
/* Create callback */
tivxCustomThresholdCreate,
/* Process callback */
tivxCustomThresholdProcess,
/* Delete callback */
tivxCustomThresholdDelete,
NULL, NULL);注册会将自定义内核与 A72 执行目标 (TIVX_TARGET_MPU_0) 相关联,并指定将在节点生命周期期间调用的回调函数。
成功验证图形后,将执行一次 Create 回调。它通常用于分配资源,初始化内部数据结构或准备内核所需的硬件资源。由于阈值示例仅执行基于 CPU 的简单映像处理,因此不需要额外资源,回调执行极少的初始化。
Process 回调包含应用特定的图像处理算法。在每次图形执行过程中,OpenVX 框架使用与节点参数相对应的对象描述符来调用此回调。回调将共享存储器地址转换为 CPU 可访问的指针,将图像缓冲区映射到 A72 地址空间,执行图像处理,最后取消映射缓冲区,然后再将控制返回到框架。
释放图形时调用 Delete 回调。它负责释放由 Create 回调分配的任何资源。由于本例中不分配持久资源,因此回调只是成功返回。
Process 回调是目标内核实现的核心。以下各节介绍了如何在 A72 内核上访问图像缓冲区,以及如何实现阈值操作。