征程 6E DISPLAY 功能介绍

1.功能概述

本文实现单路、多路 MIPI CSI TX 输出、IDU 回写、IDU oneshot 模式、绑定输出 VPS 数据等功能,此处主要介绍各 sample 的实现与使用方法。

2.软件架构说明

本文中绑定 VPS 输出功能基于 libvio API 实现,调用 libvio 提供的 API,同时通过配置文件的方式,实现 pym 数据回灌,输出绑定 IDU 的输入图层,由 MIPI CSI TX 进行输出。

回环 sample 需要调用 libcam 提供的 camera 初始化接口,用于初始化 MIPI RX 和加解串器,还需要调用 libvio 的接口,初始化 CIM 模块将 MIPI RX 的数据存到 DDR 中。

其余 sample 都基于 libidu 实现,同时通过配置文件,实现 IDU 和 MIPI CSI TX 的初始化配置,调用 libidu 的 API 实现 oneshot 触发、获取回写 buffer 等功能。

2.1 硬件数据流说明

基于 Matrix 6E/M 硬件使用,各项功能硬件连接及数据流通路如下:

回写 sample 硬件数据流:

上图为 IDU 回写和 oneshot sample 的简要硬件结构及数据流向图,数据从 DRR 回灌到 IDU 输入图层,通过 IDU 回写输出到 DDR,可将输出数据直接 dump 到文件系统,通过查看数据文件验证输出正确性。

绑定通路 sample 硬件数据流

上图为绑定 VPS 输出的 sample,数据从 DDR 回灌到 PYM,通过配置文件和 libvio 的接口实现 PYM 输出绑定 IDU 输入图层,将 PYM 的数据通过 IDU 和 MIPI CSI TX 进行显示输出。

回环 sample 硬件数据流:

上图为 MIPI CSI TX 输出回环 sample,将 MIPI CSI TX 的输出通过加串器、解串器接入 RX,通过 CIM 将数据输出到 DDR,通过查看数据文件验证输出正确性。

此处仅标注使用了 1 个 MIPI CSI TX 和 MIPI CSI RX 接口作为示意,但实际并不限于 1 条通路。

  • 1V OVX8B 绑定 IDU 输出硬件数据流:

上图为 1V OVX8B 数据,通过绑定配置,由 MIPI CSI TX 输出的硬件数据流。

2.2 代码位置与目录结构

2.3API 流程说明

以下为 sample 内 API 调用流程:

上图为绑定场景下 sample 的 API 调用流程。

上图为回写、oneshot、MIPI CSI TX 输出等场景下的 API 调用流程。

2.4 编译说明

本模块依赖 libvio 提供的 VIO API 头文件和 libidu 提供的 display API 头文件,并且需要依赖 libhbmem 头文件用于 buffer 申请:#include "hb_mem_mgr.h"

#include "idu_interface.h"#include "hbn_idu_cfg.h"#include "hbn_vpf_interface.h"#include "hb_camera_interface.h"#include "hb_vio_interface.h"

编译依赖的库有如下:

LIBS += -lalog -lhbmem -lgdcbin -lcam -lvpf -lidu -lvio

编译命令:

# 进入 SDK 所有目录{sdk_dir},并 source 构建环境。

# 编译本 sample:

bdm display-sample

# 输出文件:

{sdk_dir}/out/debug-gcc_{gcc_version}/build/test/samples/platform_samples/source/S83_Sample/S83E04_Module/display_sample

3.运行

环境搭建:支持 Matrix 6E/M。

上图左侧二合一端子为 TX 输出,右侧四合一端子为 RX0 输入

  • 回环 sample 连接方式:TX 输出 1 接 RX 输入 4,TX 输出 2 接 RX 输入 3。

  • 1V OVX8B 绑定 IDU 输出 sample 连接方式:OVX8B 接入 RX 输入 3,TX 输出任意端口外接 RX

板端部署及配置:

刷写系统软件镜像后,本 sample 的可执行文件位于板端:/app/sample/S83_Sample/S83E04_Module/display_sample/bin/display_sample

执行脚本位于板端:/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh

需要使用的配置文件位于板端:/app/sample/S83_Sample/S83E04_Module/display_sample/cfg

需要使用的图像文件位于板端:/app/sample/S83_Sample/S83E04_Module/display_sample/res

运行方法:

IDU 回写运行命令:display_writeback_sample,数据流参考 :ref:回写数据流 <writeback_flow>

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh display_writeback_sample

IDU oneshot 运行命令:display_oneshot_sample,数据流参考 :ref:回写数据流 <writeback_flow>

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh display_oneshot_sample

PYM 输出绑定 IDU 运行命令:display_bind_sample,数据流参考 :ref:绑定场景数据流 <bind_flow>

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh display_bind_sample

单路 Loopback 运行命令:matrix_display_loopback_sample_tx0\1,其中 matrix_display_loopback_sample_tx0 输出 IDU0 的 1080P 数据,matrix_display_loopback_sample_tx1 由 IDU1 两个图层拼接输出 1920x2160 数据,数据流参考 :ref:回环场景数据流 <loopback_flow>

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh matrix_display_loopback_sample_tx0

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh matrix_display_loopback_sample_tx1

两路 Loopback 运行命令:matrix_display_loopback_sample_tx01,TX0 输出 1080P 数据,TX1 输出 1920x2160 数据,数据流参考 :ref:回环场景数据流 <loopback_flow>

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh matrix_display_loopback_sample_tx01

1V OVX8B 绑定输出运行命令:1v_ovx8b_rx0_cpe0_idu0_tx0_max9295e,数据流参考 :ref:1V绑定数据流 <1v_bind_flow>

/app/sample/S83_Sample/S83E04_Module/display_sample/script/display_sample.sh 1v_ovx8b_rx0_cpe0_idu0_tx0_max9295e

运行参数说明:

+--------+----------------------------------------------+----------+---------------------+

| 参数名 | 说明 | 是否必须 | 备注 |

+========+==============================================+==========+=====================+

| -l | 指定 sample 运行循环次数 | 否 | 默认 1 次 |

+--------+----------------------------------------------+----------+---------------------+

| -V | 指定配置文件目录 | 是 | 需指定 |

+--------+----------------------------------------------+----------+---------------------+

| -D | 使能 dump 功能 | 否 | -D 5,dump 5 帧图片 |

+--------+----------------------------------------------+----------+---------------------+

| -d | 指定显示硬件设备 id | 是 | 1:idu0,2:idu1 |

+--------+----------------------------------------------+----------+---------------------+

| -p | 指定输入图片路径 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -L | 使能 Loopback,需要配合 camera 初始化 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -B | 使能 VIO 绑定功能,需配合 VPS 初始化 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -s | 带 sensor 输入,需配合 camera 初始化 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -T | 运行时长,单位秒 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -m | pipeline mask | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -g | 使能 debug 打印 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -h | 查看帮助信息 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

| -v | 查看版本信息 | 否 | |

+--------+----------------------------------------------+----------+---------------------+

可通过-h 参数查看帮助:

Usage: -v --version Display test case version

-l --loop Excute count

-V --vnode_cfg vnode config file

-D --dump_enable dump flag

-d --device idu hw device id

-p --Pattern pattern path

-M --md5 md5 check

-L --loop_back loop back

-B --vio_bind vio bind

-s --sensor with sensor

-T --tims time(s)

-m --pipe_mask pipeline mask

-g --debug enable debug log

-h --help help info

运行结果说明:

以下为 display_writeback_sample 正常运行的 log:

[INFO] display: display device index = 1

[INFO] display: dump flag = 5

[INFO] display: loop = 5

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/idu_plane1_nv12_wb_nv12_1080p_30fps/

[INFO] display: display pattern = /app/sample/S83_Sample/S83E04_Module/display_sample/res/nv16_1920x1080.yuv

[INFO] display: Exit Display Sample[0].

运行结束后可以看到当前目录有五张 yuv 图片,格式为 NV12 1080P,可以通过看图软件查看,下图仅为示例,实际情况请结合输入图片进行确认:

  • 以下为 display_oneshot_sample 正常运行的 log:

[INFO] display: display device index = 1

[INFO] display: dump flag = 5

[INFO] display: loop = 5

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/idu_plane1_nv12_wb_nv12_1080p_oneshot/

[INFO] display: display pattern = /app/sample/S83_Sample/S83E04_Module/display_sample/res/nv16_1920x1080.yuv

[INFO] display: Exit Display Sample[0].

运行结束后可以看到当前目录有五张 yuv 图片,格式为 NV12 1080P,可以通过看图软件查看,下图仅为示例,实际情况请结合输入图片进行确认:

  • 以下为 display_bind_sample 正常运行的 log:

[INFO] display: display device index = 1

[INFO] display: loop = 10000

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/vnode_hbn_ddr_pym_idu_mipitx_1080p/

[INFO] display: Exit Display Sample[0].

本文通过 MIPI CSI TX 发送 10000 帧数据,可以通过 RX 收图查看。

  • 以下为 matrix_display_loopback_sample_tx0 正常运行的 log:

[INFO] display: display device index = 1

[INFO] display: dump flag = 5

[INFO] display: loop = 5

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/matrix_idu0_plane1_nv12_csi0_yuv422_max9295_max96712_rx0_1080p_30fps/

[INFO] display: display pattern = /app/sample/S83_Sample/S83E04_Module/display_sample/res/nv16_1920x1080.yuv

[INFO] display: Exit Display Sample[0].

本文通过 MIPI CSI TX0 发送 5 帧数据,通过 MAX9295E->MAX96712 回环到 RX0,

通过 CIM 将数据存到 DDR,然后存成文件,可以通过看图软件查看,下图仅为示例,实际情况请结合输入图片进行确认:

  • 以下为 matrix_display_loopback_sample_tx1 正常运行的 log:

[INFO] display: display device index = 2

[INFO] display: dump flag = 5

[INFO] display: loop = 5

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/matrix_idu1_plane1_nv12_csi1_yuv422_max9295_max96712_rx0_1080p_30fps/

[INFO] display: display pattern = /app/sample/S83_Sample/S83E04_Module/display_sample/res/nv16_1920x1080.yuv

[INFO] display: Exit Display Sample[0].

本文通过 MIPI CSI TX1 发送 5 帧数据,通过 MAX9295E->MAX96712 回环到 RX0,

通过 CIM 将数据存到 DDR,然后存成文件,可以通过看图软件查看,下图仅为示例,实际情况请结合输入图片进行确认:

  • 以下为 matrix_display_loopback_sample_tx01 正常运行的 log:

[INFO] display: display device index = 3

[INFO] display: dump flag = 5

[INFO] display: loop = 5

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/matrix_idu01_plane1_nv12_csi01_yuv422_max9295_max96712_rx0_1080p_30fps/

[INFO] display: display pattern = /app/sample/S83_Sample/S83E04_Module/display_sample/res/nv16_1920x1080.yuv

[INFO] display: Exit Display Sample[0].

本文通过两路 MIPI CSI TX 发送 5 帧数据,通过 MAX9295E->MAX96712 回环到 RX0,

通过 CIM 将数据存到 DDR,然后存成文件,可以通过看图软件查看,本 sample 效果和 TX0、TX1 单路输出相同,实际情况请结合输入图片进行确认。

  • 以下为 1v_ovx8b_rx0_cpe0_idu0_tx0_max9295e 正常运行的 log,sample 运行时长为 100 秒,可以通过脚本中的-T 参数进行时长设置:

[INFO] display: display cfg = /app/sample/S83_Sample/S83E04_Module/display_sample/cfg/1v_ovx8b_rx0_cpe0_idu0_tx0_max9295e/

[INFO] display: Exit Display Sample[0].

本文通过 MIPI CSI TX 将 OVX8B 的输入数据进行发送,可以接入 MIPI RX 查看数据。在运行时可以通过命令“cat /sys/class/vps/flow/fps”查看 fps 是否正常,可以看到 idu0 的 ichn0 的输入帧率为 30:

-------------------------------------------------------------------

Flow10 FPS

-------------------------------------------------------------------

vin0 ctx 0: | ich0 30 | och0 0 | och1 30 | och3 0 | och4 0 |

isp0 ctx 0: | ich0 30 | och0 30 |

pym0 ctx 0: | ich0 30 | och0 30 |

idu0 ctx 0: | ich0 30 | ich1 0 | ich2 0 | ich3 0 | ich4 0 | ich5 0 | och0 0 | och1 0 | och2 0 |

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS事件防抖函数封装通用代码片段

JavaScript 函数防抖是一种技术&#xff0c;用于解决在特定时间段内连续触发事件时产生的问题。当一个事件被触发时&#xff0c;通过设定一个特定的延迟时间&#xff0c;在这个延迟时间内如果事件再次触发&#xff0c;则重新计时。只有当事件没有在延迟时间内再次触发时&#x…

xshell连接不上linux的原因

1、首先我们确定好linux的配置&#xff0c;右键选择设置&#xff0c;将网络适配器设置成NAT模式 2、点击linux编辑&#xff0c;选择虚拟网络 打开以后选中自己要配置的服务 3、进入以后选中自己的服务&#xff0c;确保是NAT模式&#xff0c;然后配置好子网ip&#xff08;尽量ip…

题目练习之二叉树那些事儿

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ 知道了二叉树的结…

K8S篇(基本介绍)

目录 一、什么是Kubernetes&#xff1f; 二、Kubernetes管理员认证&#xff08;CKA&#xff09; 1. 简介 2. 考试难易程度 3. 考试时长 4. 多少分及格 5. 考试费用 三、Kubernetes整体架构 Master Nodes 四、Kubernetes架构及和核心组件 五、Kubernetes各个组件及功…

webrtc前端播放器完整案例

https://download.csdn.net/download/jinhuding/89961792

深圳新世联:氢能中的气体传感器应用

氢能作为一种替代能源&#xff0c;被认为是破解能源危机&#xff0c;构建清洁低碳、安全高效现代能源体系的新密码。氢能的开发与利用正在引发一场深刻的能源革命。在2024年《政府工作报告》中&#xff0c;“加快前沿新兴氢能产业发展”这一重要任务被明确提出。据预测&#xf…

电源完整性测试解决方案

电源完整性测试 RIGOL MSO5000电源完整性测试 引言 在过去数十年间&#xff0c;电子行业飞速发展&#xff0c;产品功能不断强大&#xff0c;特性日益丰富&#xff0c;为我们的生活带来了现代化的便利与享受。然而&#xff0c;随着越来越多的产品依赖微控制器来提供优异性能和…

高阶函数--python

高阶函数应当满足至少下面一个条件&#xff1a; 接受一个或多个函数参数 输出一个函数 下面用一个例子来理解高阶函数。 一、高阶函数 先看一个简单的函数 例一&#xff1a; 例二&#xff1a; 是高阶函数&#xff0c;因为满足条件&#xff0c;返回一个函数 并且有闭包&a…

Chrome与火狐哪个浏览器的隐私追踪功能更好

当今数字化时代&#xff0c;互联网用户越来越关注在线隐私保护。浏览器作为我们探索网络世界的重要工具&#xff0c;其隐私追踪功能的强弱直接影响到个人信息的安全。本文将对比Chrome和Firefox这两款流行的浏览器&#xff0c;在隐私追踪防护方面的表现&#xff0c;并探讨相关优…

详细分析WebStorageCache 基本知识

目录 1. 基本知识2. Demo 1. 基本知识 相关的源码如下&#xff1a;web-storage-cache WebStorageCache 是一个用于扩展 HTML5 的 localStorage 和 sessionStorage 的库&#xff0c;增加了超时时间管理和序列化功能。它可以存储 JSON 对象&#xff0c;并且在存储数据时可以方便…

AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和工作学习方法 AJ-Report是一个基于Java的开源报表工具&#xff0c;它集成了ECharts、Ant Design Vue等前端技术&#xff0c;致力于为企业提供一站式的数据可视化解决方案…

K3梅林系统 强制刷机方法

对于梅林系统升级过过程中出现的无限重启卡屏的解决方案 黄色字体对应于K3 目前机器 主要分成两个关键步骤&#xff1a;第一、进CFE&#xff1b;第二、用TFTP传入文件进行刷机。 第一&#xff1a; 1硬件网线直接连接K3路由LAN口。 2带有无线网卡的电脑需要屏蔽掉无线网卡&…

数据结构 ——— 链式二叉树oj题:相同的树

目录 题目要求 手搓两个链式二叉树 代码实现 题目要求 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 手搓两个链式二叉树 代码演示&…

对标 Windows Copilot 的 UOS AI,升级后更能打了

进入 2024 年&#xff0c;AI 应用迎来大爆发&#xff0c;不仅各类应用纷纷宣称“AI 赋能”&#xff0c;操作系统也不例外。前有 Windows Copilot&#xff0c;后有 Apple Intelligent&#xff0c;手机行业更是积极&#xff0c;各种 AI 手机纷纷发布。国产信创系统自然也不甘落后…

leetcode912.排序数组的题解

题目描述&#xff1a; 题目要求在不使用任何内置函数的情况下解决问题&#xff0c;时间复杂度为 O(nlog(n))。 笔者使用了快速排序&#xff0c;但是直接使用最原始的快速排序&#xff0c;有些特殊的测试用例会超时。 1&#xff09;如果数组本身基本有序&#xff0c;则使用原始…

迷你版VFB,极简的Freebasic开发IDE-VB7-vb6编程开发

支持Freebasic, Js, vbs, Html5开发&#xff0c;可以发布成控制台程序&#xff0c;EXE&#xff0c;标准DLL&#xff0c;OCX控件&#xff0c;网站 类似Vscode, Aardio&#xff0c;按键精灵一样的开发工具。 本来芳芳只是想做个按键精灵办公小工具&#xff0c;结果一下小心搞了一…

【综合案例】使用React编写B站评论案例

一、效果展示 默认效果&#xff0c;一开始默认按照最热进行排序 发布了一条评论 按照最新进行排序 按照最新进行排序 二、效果说明 页面上默认有3条评论&#xff0c;且一开始进入页面的时候是按照点赞数量进行倒序排列展示&#xff0c;可以点击【最热 、最新】进行排序的切换。…

SSL证书申请终极指南

SSL验证是确认网站或服务器提供的SSL 证书的真实性和有效性的过程。 SSL证书验证是确认网站或服务器提供的SSL证书的真实性和有效性的过程。SSL证书是用于在客户端&#xff08;例如Web浏览器&#xff09;和服务器之间建立安全连接的数字证书。它们对于确保通过互联网传输的数据…

处理PhotoShopCS5和CS6界面字体太小

处理PhotoShop CS6界面字体太小 背景&#xff1a;安装PhotoShop CS6后发现无法调大字体大小&#xff0c;特别是我的笔记本14寸的&#xff0c;显示的字体小到离谱。 百度好多什么降低该电脑分辨率&#xff0c;更改电脑的显示图标大小&#xff0c;或者PS里的首选项中的界面设置。…

python中t是什么意思

python中t是什么意思&#xff1f; python中t指的是“\r”&#xff1a;回车符&#xff0c;返回到这一行的开头&#xff0c;return的意思。 其他相关&#xff1a; \n&#xff1a;换行符&#xff0c;到下一行的同一位置&#xff0c;纵坐标相同&#xff0c;new line的意思。 \t…