处理器SDK Linux软件开发

处理器SDK Linux软件开发

https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-edgeai/TDA4VM/08_06_01/exports/docs/devices/TDA4VM/linux/index.html

1.概述

欢迎使用处理器SDK Linux版TDA4VM!

SDK提供软件和工具,让用户在德州仪器的边缘人工智能应用处理器上有效平衡深度学习性能与系统功率和成本。为下一代汽车、智能摄像头、边缘人工智能盒子以及自动驾驶机器和机器人提供实用的嵌入式推理解决方案。除了通用微处理器外,TDA4VM还集成了用于神经网络、图像、视觉和多媒体处理的微控制器、DSP和加速器。只需几个简单的步骤,就可以使用实时相机和显示器运行高性能计算机视觉和深度学习演示。

 

图1.1用于TDA4VM的处理器SDK Linux功能概述

SDK还支持多个开源组件的相互作用,如GStreamer、OpenVx、OpenCV和深度学习运行时,如TFLite、ONNX和Neo AI DLR。参考应用程序展示了基于感知的示例,如Python和C++变体中的图像分类、对象检测和语义分割。SDK支持直接在目标和PC上编辑构建调试周期,以交叉编译和构建应用程序。

 

图1.2 TDA4VM处理器SDK Linux支持的行业标准组件

SDK主要由三部分组成,如下图所示。Edge AI应用程序堆栈用于运行具有实时输入/输出的分析应用程序。基础Linux组件为远程核心和硬件加速器提供操作系统、uBoot、内核、文件系统、Linux驱动程序和固件。

 

要开始设置,请单击“下一步”按钮。

2.入门

2.1. 硬件设置

TI的TDA4VM SoC内置双核A72、高性能视觉加速器、视频编解码器加速器、最新的C71x和C66x DSP、用于捕获和显示的高带宽实时IP、GPU、专用安全岛和安全加速器。SoC经过功率优化,可为机器人、工业和汽车应用中的感知、传感器融合、定位和路径规划任务提供一流的性能。

有关更多详细信息,请访问https://www.ti.com/product/TDA4VM

2.1.1. TDA4VM SK

TDA4VM Edge AI入门套件(SK)是一款低成本、小尺寸的板,旨在将智能相机、机器人和智能机器带入生活。有关主板的更多信息、支持的外围设备的完整列表、引导模式的引脚设置等,请访问SK-TDA4VM指南。

要在TDA4VM SK上运行演示,将需要,

1)TDA4VM Edge AI入门套件

2)USB摄像头(任何兼容V4L2的1MP/2MP摄像头,例如罗技C270/C920/C922)

3)全高清eDP/HDMI显示屏

4)最低16GB高性能SD卡

5)连接到互联网的100Base-T以太网电缆

6)UART电缆

7)外部电源或电源附件要求

①标称输出电压:5-20VDC

②最大输出电流:5000毫安

③有关更多详细信息,请参阅SK-TDA4VM指南。

如图所示,将组件连接到SK。

 

图2.1用于边缘AI连接的TDA4VM入门套件

将引导引脚设置为SD引导模式,如下图所示。

 

图2.2用于Edge AI引导销的TDA4VM入门套件

2.1.2. USB摄像头

入门套件支持符合UVC(USB视频类)标准的USB摄像头。SDK中启用了相同的驱动程序。该SDK已在罗技USB摄像头的C270/C920/C922版本上进行了测试。请参阅Getting Error when try to capture from multiple USB camera to streaming from multiple U SB camera同时从多个USB摄像机进行流式传输时出错。

2.1.3. OV5640 YUV传感器

OV5640 CSI相机模块是一个内置ISP的2MP传感器,可以通过CSI通道传输原始YUYV帧。此摄像头模块可从订购https://www.leopardimaging.com/product/cmos-sensor-modules/mipi-camera-modules/li-am65x-csi2.摄像头可以连接到Edge AI SK板的底部,如下所示。OV5640相机模块需要额外的电源,并具有以下要求

输出电压:5 VDC

输出电流:2.0 A

为了增加灵活性,可以从这里订购Samtec延长电缆,https://www.samtec.com/products/hqcd

 

笔记

默认情况下,对TDA4VM SK禁用OV5640。连接相机后,可以通过在/run/media/mmcblk0p1/uEnv.txt中指定dtb覆盖文件来启用它,如下所示,

名称覆盖=k3-j221e-edgei-apps.dtbo k3-j2721e-sk-csi2-ov5640.dtbo

编辑并保存文件后重新启动板。Dtb文件可以在/boot下找到。

2.1.4. RPiV2(IMX219)原始传感器

RPiV2相机模块由TDA4VM SK支持。它是一个没有ISP的8MP传感器,可以在CSI通道上以1080p 60 fps的速度传输原始SRGGB8帧,但linux imx219传感器驱动程序仅实现1080p 30 fps模式。

有关更多详细信息,请访问Rpi相机模块v2

笔记

为了尝试同一传感器的不同分辨率,还需要不同的DCC二进制文件来使用tiovxisp和tiovxldc插件。

以下是发布在上游的补丁,用于启用其他具有较低分辨率模式的更高fpshttps://patchwork.linuxtv.org/project/linux-media/patch/20210115185233.333407-1-angelogioacchino.delregno@somaline.org/

摄像头可以连接到Edge AI SK板上的2个RPi头中的任何一个,如下所示,请注意,必须抬起头才能连接摄像头。

 

图2.4 IMX219 CSI传感器与Edge AI的TDA4VM入门套件的连接

笔记

默认情况下,IMX219处于禁用状态。连接相机后,可以通过在/run/media/mmcblk0p1/uEnv.txt中指定dtb覆盖文件来启用它,如下所示,

名称覆盖=k3-j221e-edgei-apps.dtbo k3-j2721e-sk-rip-cam-imx219.dtbo

编辑并保存文件后重新启动板。Dtb文件可以在/boot下找到。

请参阅摄像头来源(v4l2),了解如何列出所有连接的摄像头,并选择用于演示的摄像头。

默认情况下,imx219将配置为8位捕获,但它也支持在16位容器中进行10位捕获。要在10位模式下使用它,需要以下步骤:

修改/opt/edgeai gst-apps/scripts/setup_cameras.sh,将格式设置为10位,如下所示

CSI_CAM_0_FMT=“[FMT:SRGGB8_1X10/1920x100]”

CSI_CAM_1_FMT=“[ffmt:SRGGB8_1X10/1920x100]”

将映像二进制文件更改为使用10位版本

mv/opt/imaging/imx219/dcc_2a.bin/opt/immx219/dcc_2a_8b.bin

mv/opt/imaging/imx219/dcc_viss.bin/opt/imaging/imx219/dcc-vis_8b.bin

mv/opt/imaging/imx219/dcc_2a_10b.bin/opt/imaching/imx29/dcc_2a.bin

mv/opt/imaging/imx219/dcc_viss_10b.bin/opt/imaging/imx219/dc_viss.bin

将/opt/edgeai gst-apps/configs/rpiV2_cam_example.yaml中的输入格式设置为rggb10

2.1.5. IMX390原始传感器

IMX390相机由TDA4VM SK支持。它是一个2MP RGGB 12位传感器,可以通过CSI2 Rx传输封装在16位像素容器中的原始SRGGB12帧

笔记

默认情况下,IMX390处于禁用状态。连接相机后,可以通过在/run/media/mmcblk0p1/uEnv.txt中指定dtb覆盖文件来启用它,如下所示,

name_overlays=k3-j221e-edgei-apps.dtbo k3-j721e-fpdlink-sk-fusion.dtbo k3-j721e-ppdlink-imx390-<版本>-<x>-<y>.dtbo

相机的变体:<version>={cm,rcm}

摄像机连接到的CSI通道:<x>={0,1}

融合板上的位置:<y>={0,1,2,3}

可以连接多个摄像头,每个摄像头有一个dtbo条目。编辑并保存文件后重新启动板。

应该只应用那些要捕捉的摄影机的套印格式。例如,如果连接了4个摄像头,并且只想从其中的2个摄像头进行拍摄,那么应该只应用2个覆盖并重新启动

最多可通过Fusion1 Rev C板连接8个IMX390摄像头

请参阅摄像头来源(v4l2),了解如何列出所有连接的摄像头,并选择用于演示的摄像头。

2.2. 软件设置

2.2.1. 准备SD卡图像

下载最新的SD卡.wic图像,并使用Balena etcher工具将其闪至SD卡,网址为:

https://www.balena.io/etcher/

笔记

已经用Balena Etcher版本1.7.0进行了测试,可以在这里找到,https://github.com/balena-io/etcher/releases/tag/v1.7.0

Balena Etcher的最新1.7.2版本似乎存在已知问题https://forums.balena.io/t/etcher-error-message-cannot-read-property-message-of-null/350471

该工具可以安装在Windows/Linux上。只需下载蚀刻机图像并按照说明准备SD卡。

 

蚀刻器映像是为16 GB SD卡创建的,如果使用的是更大的SD卡,则可以在Linux PC上使用以下步骤扩展根文件系统以使用全部SD卡容量

#find the SD card device entry using lsblk (Eg: /dev/sdc)

#use the following commands to expand the filesystem

#Make sure you have write permission to SD card or run the commands as root

 

#Unmount the BOOT and rootfs partition before using parted tool

umount /dev/sdX1

umount /dev/sdX2

 

#Use parted tool to resize the rootfs partition to use

#the entire remaining space on the SD card

#You might require sudo permissions to execute these steps

parted -s /dev/sdX resizepart 2 '100%'

e2fsck -f /dev/sdX2

resize2fs /dev/sdX2

 

#replace /dev/sdX in above commands with SD card device entry

2.2.2. 开机并引导

插入SD卡之前,请确保已断开电源。一旦SD卡牢固插入插槽,并且主板通电,主板将在不到20秒的时间内启动并显示壁纸,如下图所示。

 

图2.6启动时的TDA4VM入门套件壁纸

还可以通过将UART电缆连接到电脑并使用串行端口通信程序来查看引导日志。4个串行端口将出现在电脑上,应该连接到端口2以获取引导日志

对于Linux操作系统,minicom**运行良好。有关更多详细信息,请参阅以下关于“minicom”的文档。

https://help.ubuntu.com/community/Minicom

启动minicom时,打开以下颜色选项:

sudo minicom-D/dev/ttyUSB2-c on

对于Windows操作系统,Tera Term运行良好。有关更多详细信息,请参阅以下关于“TeraTerm”的文档

https://learn.sparkfun.com/tutorials/terminal-basics/tera-term-windows

笔记

如果使用Windows计算机,则用户可能需要为端口安装其他驱动程序才能显示:https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

笔记

在串口通信程序中,波特率应配置为115200 bps。如果在引导完成后连接到UART控制台,则可能看不到任何日志,或者登录提示可能在引导日志之间丢失,请按ENTER键以获得登录提示

作为linux系统的一部分,执行/opt/edgeai gst-apps/init_script.sh,

这将设置必要的环境变量。

如果任何摄像头连接到板上,脚本会对其进行设置并打印其设备id和其他信息。

Linux启动后,以无密码的root用户身份登录。

2.2.3. 远程连接

如果不喜欢UART控制台,也可以使用显示屏上显示的IP地址访问设备。有了IP地址,就可以直接ssh到板上,查看内容并运行演示。为了获得最佳体验,建议使用可以从这里下载的VSCode,

https://code.visualstudio.com/download

还需要在VSCode中安装“远程开发扩展包”,如下所述:

https://code.visualstudio.com/docs/remote/ssh

 

图2.7用于通过SSH连接到Edge AI的TDA4VM入门套件的Microsoft Visual Studio代码

如果使用的是Ubuntu 22.04,请将以下内容添加到~/.ssh/config中

# Add to ~/.ssh/config. Absolute IP or range of IP can be defined using *

Host 10.24.*

    HostKeyAlgorithms=+ssh-rsa

现在可以使用终端进行SSH。

$ ssh root@10.24.69.123

3.边缘AI样本应用

有三种方法可以探索在TDA4VM EVM上运行典型的相机推理显示Edge AI用例,

尝试开箱即用的Edge AI图库应用程序

使用Python和C++参考示例开发Edge AI应用程序

运行“无代码”优化的端到端GStreamer应用程序-OpTIFlow

SDK被封装在网络中,该网络执行如下3个DL任务,

图像分类:检测给定输入帧的Imagenet数据集中前5个最近似的类

对象检测:检测并绘制对象周围的边界框,还将对象分类到coco数据集中的一个类中

语义分割:将ade20k数据集中的每个像素分类

3.1. 开箱即用的GUI应用程序

当TDA4VM EVM在SD卡就位的情况下通电时,Edge AI Gallery应用程序会在启动时出现,如图所示。可以连接USB 2.0鼠标,然后单击左面板中的按钮,启动运行所选DL任务的Edge AI应用程序。在后台,启动了一个GStremer管道,它读取压缩的视频文件并在解码的内容上运行DL网络。DL推断的输出被叠加在图像上并被发送到显示器。

 

用户可以选择不同的DL任务在压缩视频上执行。还有一个“自定义”按钮,按下该按钮可以选择输入源,可以是压缩视频文件(H.264/H.265)、USB摄像头或IMX219摄像头。还可以从文件系统中可用的预导入DL网络的列表中进行选择并启动应用程序。这将自动构建一个具有所需元素的GStreamer管道,并启动应用程序。

3.2. Python/C++应用程序

基于Python的演示是为图像分类、对象检测和语义分割编写的简单可执行脚本。Demo是使用YAML文件配置的。有关配置文件参数的详细信息,请参阅配置应用程序

开箱即用演示的示例配置文件可以在edgei gst-apps/configs中找到。该文件夹还包含一个模板配置文件,其中包含关于每个可配置参数的简要信息edgeai gst-app/config_template.yaml

以下是如何运行基于Python的图像分类演示,

/opt/edgeai gst-apps/apps_python#/app_edgeai.py/configs/image_classification.yaml

该演示从连接的USB相机捕获输入帧,并在发送到显示器之前经过预处理、推理和后处理。用于图像分类和对象检测演示的样本输出如下,

 

要退出演示,请按Ctrl+C。

C++应用程序在打包时是交叉编译的,它们可以直接测试,如下所示

/opt/edgeai-gst-apps/apps_cpp# ./bin/Release/app_edgeai ../configs/image_classification.yaml

要退出演示,请按Ctrl+C。

C++应用程序也可以使用以下步骤在目标上进行修改和构建

/opt/edgeai-gst-apps/apps_cpp# rm -rf build bin lib

/opt/edgeai-gst-apps/apps_cpp# mkdir build

/opt/edgeai-gst-apps/apps_cpp# cd build

/opt/edgeai-gst-apps/apps_cpp/build# cmake ..

/opt/edgeai-gst-apps/apps_cpp/build# make -j2

笔记

Python和C++应用程序的结构相似,可以接受相同的配置文件和命令行参数

 

参考文献链接
https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-edgeai/TDA4VM/08_06_01/exports/docs/devices/TDA4VM/linux/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/737864.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jira修改RoadMap里的时间格式,硬核日期格式化

jira修改roadMap里的时间格式 在插件目录找到portfolio-plugin-9.16.1.jar将他下载到本地 使用zip解压软件解压jar包 全局搜索 DD/MM/YY 将其替换YYYY/MM/DD修改后效果图全局搜索 return${l()(o.getUTCDate().toString(),2,"0")}/${t} 替换 return ${o.getUTCMonth()…

不同网站检测到的ip不同

背景 最近在使用某个接口时出现了问题,大致是根据ip查询地址。 于是使用查询ip的网站,发现ip各有不同。大致上是有三种ip。 探讨 经过查询,比较合理的解释是,运营商有多个网络出口,根据访问的网站不同,使用的网络出口也不同,因此不同的网站分别使用了不同的ip去访问,因…

全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器:把方法包装成属性

本文主要对@property 装饰器的基本定义、使用场景和使用方法进行了介绍,同时介绍了setter装饰器和deleter装饰器的应用场景和语法。全网最适合入门的面向对象编程教程:08 类和对象的 Python 实现-@property 装饰器:把方法包装成属性 摘要: 本文主要对@property 装饰器的基本…

Java 异常 随机数 包装类

异常,随机数,包装类,日期类正如 “人无完人”一样,程序也不是完美的,它总会存在这样那样的问题,而有些问题并不是能够通过程序员开发更好的代码来解决的,如果我们忽视它,可能就会造成程序的终止,甚至是系统的崩溃。因此,我们需要想办法来合理的解决它,这就是Java中异常…

DataWhale暑期夏令营第一期——大模型技术方向task2笔记

Task 2 笔记 数据分析 可以先通过对标签中各个项进行数据分析(使用values_count方法),可以得到主要任务的各个指标的值分布情况。 我认为这一步的作用:帮助理解数据。 大模型的本质还是概率生成,通过prompt提示词去进行生成Baseline优化思路 1.数据处理角色合并:将同一个…

基于Bootstrap Blazor开源的.NET通用后台权限管理系统

前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑、平板、手机等所有主流设备),可切换至 Blazor 多 Tabs 模式,权限控制细化到网页内任意元素(按钮、表格、文本框等等):Boots…

03-立即执行函数

JS中的立即执行函数01 立即执行函数的定义 立即执行函数有自己的作用域,因此可以防止全局变量之间的污染02 应用场景 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible…

初体验Sonar10.6 之 从部署到实战

Sonar介绍及下载 Sonar是一个代码质量管理的开源平台,用于管理源代码的质量。 SonarLint IDE插件安装 https://plugins.jetbrains.com/plugin/7973-sonarlint https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode sonar scanner下载地址 http…

charles使用

一,下载 去官网下载charles,如果有破解版的更好,不用花钱,但是一般也有30天试用期 二,安装 按照步骤安装即可 三,使用 1,首先,安装本地证书。按照指引一步一步安装。(注意:保存的时候最好放到受信任的证书目录中)2,安装移动端证书:它会告诉你ip和port。 首先你需要…

算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。

​大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」抱个拳,送个礼 读者参加面试,竟然在 LeNet 这个基础算法上被吊打~ LeNet 确实经典,值得好好说道说道 更多内容,见微*公号往期文章:有史以来最详细的卷积神经网络…

[大疆航线] 系列(3) 无人机多角度航线规划软件μMAPLE

关键词:无人机航线、航点动作,航线软件 作者:ludwig1860 日期:2024.7.3 1. 多角度航线规划软件μMAPLE的编写 我们研究团队编写了一个名为μMAPLE (uav-based Multi-Angular flight PLannEr)的多角度航线规划软件。当然,我们也很乐意协助研究人员们开发符合各自需求的航线…

Windows Terminal 中设置常用命令的别名

Windows Terminal 中设置常用命令的别名 ‍ E:\zhpj\Desktop>cmd /? 启动 Windows 命令解释器的一个新实例 . . . 如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找 以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或 两个都存在,这两个变量会先被执行。HKE…

ssrf结合python反序列化

存储session对象时 当然不能直接存储对象 需要转换成有规律的字符串 这一过程就涉及到了序列化 将对象转换成字符串这一过程称之为序列化 PYTHON反序列化漏洞 本文中就涉及到了pickle这一序列化模块导致的反序列化漏洞 在反序列化结束时 会触发__reduce__魔术方法 类似于php中的…

Web基础知识扫盲

1、中间件 定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。常见的中间件:IIS、Apache、Nginx、Tomcat 2、NAT网络地址转换 这里只介绍动态转换一种 动态转换…

MySQL-16.MVCC(多版本并发控制)

C-16.多版本并发控制 1.什么是MVCCMVCC(Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一事务更…

[JLU] 数据结构与算法上机题解思路分享-课程设计第一次与第二次上机

这是吉林等通知大学数据结构与算法上机题的题解思路,没有精妙的解法,只是一个记录罢前言 首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。 这里只是思路解析的博客,代码仓库在 JLU_Data_Structures_Record 希望你能在这里找到你想要…

【Python】GUI开发笔记

一、环境搭建: 1、Pycharm开发工具pycharm历史版本 https://www.jetbrains.com/pycharm/download/other.html破解插件 https://blog.csdn.net/weixin_50737119/article/details/135628513 2、PYENV 版本管理 Python也有对应的版本管理工具,叫pyenv 这个东西挺奇怪的,直接发…

Day1| 704. 二分查找 27. 移除元素

704.二分查找 题目链接 : https://leetcode.cn/problems/binary-search/description/ 思路😗*切记二分查找要基于排序好的数组或者数据,否则二分查找必不能使用!!!!!!!!! ** 双指针写最简单,一个头指针从0开始,一个尾指针从数组长度-1开始,中间指针是头+尾/2,每次比较头尾中间…

不同操作系统下的换行符

1. 关键字 2. 换行符的比较 3. ASCII码 4. 修改换行符4.1. VSCode5. 参考文档1. 关键字 CR LF CRLF 换行符 2. 换行符的比较英文全称 英文缩写 中文含义 转义字符 ASCII码值 操作系统Carriage Return CR 回车 \r 13 MacIntosh(早期的Mac)Linefeed LF 换行/新行 \n 10 Unix/Li…

1s内控制向某个请求请求的次数

背景 有的时候后端提供的接口对相同的IP进行限制,在某个时间内不能发送超过X条的请求,一旦超过指定的请求数会导致后续请求接口会出现异常。 效果需求 比如:在1s内最多同时发送2个请求,多出来的请求在后续的1s或者后续的Ns中发起 代码 <template><div class="…