[TI TDA4 J721E]TIOVX OpenVX框架下的Python脚本使用

          首先感谢阅读,如果您也对TDA4相关的开发感兴趣,我们这边有个学习交流微信群,可以入群和大家一起交流学习。

资历较浅,水平有限,如遇错误,请大家多指正!

保持开源精神,共同分享、进步!

博主WX : AIR_12  我会拉你入群。

链接:TDA4 相关专栏        链接:TDA4  Demo  Gitee开源库

欢迎大家加入,一起维护这个开源库,给更多的朋友提供帮助。


        TI官方提供的SDK包里面提供了一项比较方便的功能,能够使用Python脚本生成TIOVX相关的框架内容,减少用户手动Coding的步骤。

具体的详细操作步骤,可以查看以下链接:TIOVX User Guide: PyTIOVX User Guide

要在PyTIOVX路径下执行这个操作,具体还是参照上面的链接 sudo pip3 install -e .

否则无法运行脚本。


这里我简单介绍以下我这边生成的步骤和一些心得分享

一、使用Python脚本生成TIOVX框架

Ubutun自带了Python,按照上面链接里面检查一下自己的Python环境。

1.首先需要导入环境变量(路径需要根据自己的需要设置,我这里选择的是官方SDK 包里面的vision_apps作为存放路径)

export CUSTOM_APPLICATION_PATH="/home/ubuntu/documents/xxxx/vision_apps/"

2.首先明确几个东西,在自动化Python脚本里面可以设置生成文件保存的

A.文件夹名称:FILE_NAME

B.文件夹路径:CUSTOM_APPLICATION_PATH

C.Core选择,可以进入Core类内,查看,IPU表示运行在MCU核上(具体怎么查到的,后面再补上来,有点忘记了。不过在第三点 的 B里面,应该也可以对应的上。)

D.Kernel名称:myTiovxTest

E.参数:INPUT OUTPUT

F.目标核:指定Kernel运行的Target Core(在哪个核上运行此kernel)

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

from tiovx import *
#以下一行代码设置存储文件夹名称myTiovx
#运行在IPU核上(具体看下面第三点解释)
#生成的文件夹保存的路径:CUSTOM_APPLICATION_PATH 第一点导入的内容
code = KernelExportCode("myTiovx", Core.IPU, "CUSTOM_APPLICATION_PATH")

#设置Kernel名为myTiovxTest
kernel = Kernel("myTiovxTest")

#设置参与的参数
kernel.setParameter(Type.IMAGE, Direction.INPUT, ParamState.REQUIRED, "INPUT")
kernel.setParameter(Type.IMAGE, Direction.OUTPUT, ParamState.REQUIRED, "OUTPUT")

#设置运行的目标核上(具体看下面第三点解释)
kernel.setTarget(Target.IPU1_0)
#导出kernel内容
code.export(kernel)

3.关于运行在哪个目标核说明

分别找到以下两个A /B 的内容,对比查看,即可知道在Python脚本中,如设置IPU1_0,即等于设置kernel运行在MCU 2_0上(看B代码段的注释部分)。

A.可以查看Python脚本中的Target类,路径/tiovx/tools/PyTIOVX/tiovx/enums.py里面包含了以下的核名称定义。

    ## TIOVX equivalent = \ref TIVX_TARGET_IPU1_0
    IPU1_0  = 9

B.可以在/tiovx/include/TI/tivx.h路径下找到这个文件

/*! \brief Name for IPU1 target class, core 0
 *
 *   \if DOCS_J7
 *   Assigned to MCU2_0 core
 *   \else
 *   Assigned to M4_0 core
 *   \endif
 *
 * \ingroup group_tivx_ext_targets
 */
#define TIVX_TARGET_IPU1_0      "IPU1-0"

4.Python脚本修改成功以后,可以执行此脚本。(在文章开头的链接中也有介绍)。

python3.6 ~/tiovx/tools/sample_kernel_wrappers/kernel_tensor_test.py

执行过程会有以下提示:看到Generating C code for OpenVX kernel ... DONE !!! 表示生成成功!

Kernel: mytiovxtest MYTIOVXTEST Mytiovxtest
Targets: TIVX_TARGET_IPU1_0(CPU: TIVX_CPU_ID_IPU1_0) 
Param 0: INPUT VX_TYPE_IMAGE VX_INPUT VX_PARAMETER_STATE_REQUIRED
Param 1: OUTPUT VX_TYPE_IMAGE VX_OUTPUT VX_PARAMETER_STATE_REQUIRED

Generating C code for OpenVX kernel ... DONE !!!
Creating /home/ubuntu/documents/CMSGREEN_With_MyKernel/vision_apps/DEVELOPER_TODO.txt
Traceback (most recent call last):
  File "kernel_tensor_test.py", line 21, in <module>
    code.export(kernel)
  File "~/tiovx/tools/PyTIOVX/tiovx/kernel_code.py", line 3082, in export
    self.todo()
  File "~/tiovx/tools/PyTIOVX/tiovx/kernel_code.py", line 3000, in todo
    with open(file, 'rb') as f:

二、生成的文件相关解析说明

1.在/vision_apps/kernels/中,看到mytiov文件夹下有四个文件夹。

A.host文件夹下

文件名功能说明
tivx_mytiovx_node_api.c用于创建host 的node节点

vx_kernels_xxxx_host.c

用于注册所有的kernel节点

vx_xxxx_host.c

用于实现具体的kernel处理过程

B.ipu文件夹下

文件名功能说明

vx_kernels_xxxx_target.c

用于注册所有的target kernel节点

vx_xxxx_target.c

用于实现target端的处理过程

至此使用Python脚本生成TIOVX框架,基本结束。

如何使用,会在下一篇博客中更新。

[TI TDA4] TIOVX OpenVX 框架下Kernel注册/Node使用_AIRKernel的博客-CSDN博客

PS:这个不是广告,我自己在用的笔记软件。给大家推荐一款比较实用的在线云笔记 Notion(免费),下载链接如下:

NotionForUbuntu.tar.xz-管理软件文档类资源-CSDN下载


【声明】
【欢迎转载转发,请注明出处。原创比较辛苦,请尊重原创,祝大家学习愉快!】
【博主专注嵌入式开发,具有多年嵌入式软、硬件开发经验,欢迎大家学习交流!】
【如有嵌入式相关项目需求,欢迎私信】

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值