首先感谢阅读,如果您也对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下载
【声明】
【欢迎转载转发,请注明出处。原创比较辛苦,请尊重原创,祝大家学习愉快!】
【博主专注嵌入式开发,具有多年嵌入式软、硬件开发经验,欢迎大家学习交流!】
【如有嵌入式相关项目需求,欢迎私信】