征程 6E DISPLAY 功能介绍及上手实践

01 功能概述

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

02 软件架构说明

本文中绑定 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.3 API 流程说明

以下为 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

03 运行

环境搭建:支持 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

运行参数说明

图片

可通过-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

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

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

相关文章

Ubuntu16.04安装openssl库

Ubuntu16.04安装openssl库 Chapter1 Ubuntu16.04安装openssl库 Chapter1 Ubuntu16.04安装openssl库 原文链接&#xff1a;https://blog.csdn.net/weixin_36584476/article/details/107321893 记录一下省得忘了 1.首先去openssl官网下载源码www.openssl.org/source/&#xff0…

西瓜书书本内容杂谈

西瓜书书本内容杂谈 把圈子变小&#xff0c;把语速放缓&#xff0c;把心放宽&#xff0c;把生活打理好 只能说快速过了一遍&#xff0c;花了一个多星期吧&#xff0c;然后后边的内容是一点也看不懂了&#xff08;能发现前面记得比较详细&#xff0c;到了后边是看不懂一点了&a…

音视频基础知识分享

音视频基础知识分享 RKMedia的各个组件及其交互 首先上图&#xff1a; 考虑到公司业务主要是相机&#xff0c;所以&#xff0c;主要去关注图像数据流&#xff0c;对于音频数据流直接忽略。 图像数据流向&#xff1a; Camera Sensor将光信号转换成电信号&#xff08;Raw数据&…

基于语音识别的停车共享小程序(lw+演示+源码+运行)

目 录 1 绪论1 1.1 课题研究背景1 1.2 研究现状1 1.3 论文结构安排1 2 系统关键技术2 2.1 微信小程序2 2.2 微信Web开发者工具2 2.3 JavaScript简介2 2.4 微信小程序API接口2 2.5 MYSQL数据库2 3 系统分析1 3.1 可行性分析1 3.1.1 技术可行性1 3.1.2 经济可行性1…

如何查看公众号真实粉丝数,2024年还有哪些粉丝百万以上的大号?

如何查看公众号真实粉丝数&#xff1f;很简单&#xff0c;写了个脚本一键获取&#xff0c;看看2024年还有哪些粉丝百万以上的大号&#xff1f; 猫笔刀这个号2018-2024年的所有历史文章&#xff0c;共1168篇&#xff0c;导出的excel文章数据包含文章日期&#xff0c;文章标题&a…

bean的实例化2024年10月17日

跟不上为基础 1.你的java学习路线 2. 3.课程 注解的装配 contoller调用service用的是注解装配

【Linux】解答:为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文)

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

我在自动化测试方面犯过的3个大错误

每个人都会犯错误&#xff0c;但不管错误看起来有多糟糕&#xff0c;你都可以恢复过来&#xff0c;更重要的是&#xff0c;从错误中学习。 在软件开发过程的任何领域&#xff0c;从编码到测试&#xff0c;我们都会时不时地犯一些错误。通常&#xff0c;这些错误都很小&#xf…

从零开始学PHP之安装开发环境

前言 不整那些虚的&#xff0c;直接开始上干货&#xff0c;争取让小白也看得懂 环境选择 php开发环境一般分为集成环境和编译环境&#xff0c;由于编辑环境费时费力&#xff08;我没搞明白&#xff09;直接使用集成环境&#xff0c;市面上php的集成环境很多我这里用的是phps…

Java—类和对象习题讲解

如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 目录 习题一&#xff1a; 习题二&#xff1a; 习题三&#xff1a;.import static 能够导入一些静态方法 习题四&#xff1a; 习题五&#xff1a; 习题六&#xff1…

IDEA如何用maven打包(界面和命令两种方式)

前言 我们在使用IDEA开发时&#xff0c;如果是springboot项目的话&#xff0c;一般是用maven来管理我们的依赖的。然后&#xff0c;当我们开发完成之后&#xff0c;就需要打包部署了。 那么&#xff0c;我们应该如何打包呢&#xff1f; 如何打包&#xff08;jar包&#xff09…

智慧医疗,为健康护航

智能医院是一种利用先进的信息技术和智能设备&#xff0c;在提升医疗管理、服务水平和病人体验方面进行改造的现代化医疗机构。智能医院注重集成运维、智能照明和安全调度等关键方面&#xff0c;在医院运营和服务方面提供全方位的支持和保障。 集成运维是智慧医院的基石&#x…

C++初阶——入门

目录 1、C发展历史 2、C版本更新 3、C参考文档 4、C书籍推荐 5、C的程序 6、命名空间 6.1 namespace的作用 6.2 namespace的定义 6.3 namespace的使用 7、C输入&输出 8、缺省参数 9、函数重载 10、引用 10.1 引用的概念和定义 10.2 引用的特性 10.3 引用的使…

【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 前几篇文章中我们深入研究了TCP协议&#xff0c;因为TCP协议在我们日常开发中的使用频率非常高。而相比之下&#xff0c;IP协议与我们普通程序员关系就没那么近了。一般是专门开发…

通过Regional Prompter(区域提示词)控制图片精准生成

你是否遇到过想在一张图片的左上角绘制一个太阳&#xff0c;右上角绘制一些云朵&#xff0c;在下方在绘制其他的…&#xff0c;常规方式通过提示词&#xff0c;我们会发现图像大多情况不受我们控制&#xff0c;不会一定按我们的方式去绘制成功。 今天给大家介绍一个插件&#…

jmeter响应断言放进csv文件遇到的问题

用Jmeter的json 断言去测试http请求响应结果&#xff0c;发现遇到中文时出现乱码&#xff0c;导致无法正常进行响应断言&#xff0c;很影响工作。于是&#xff0c;察看了其他测试人员的解决方案&#xff0c;发现是jmeter本身对编码格式的设置导致了这一问题。解决方案是在jmete…

springboot034在线商城系统设计与开发-代码(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;ONLY在线商城系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本ONLY在线商城系统…

餐饮店怎么标注地图位置信息?

随着市场竞争的日益激烈&#xff0c;商家若想在竞争中脱颖而出&#xff0c;就必须想方设法去提高自身的曝光度和知名度&#xff0c;为店铺带来更多的客流量。其中&#xff0c;地图标注便是一种简单却极为有效的方法。通过在地图平台上添加店铺位置信息&#xff0c;不仅可以方便…

javaWeb项目-ssm+jsp房屋出租管理系统功能介绍

本项目源码&#xff08;点击下方链接下载&#xff09;&#xff1a;java-ssmjsp房屋出租管理系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff…

MySQL中的增查操作:探索数据的奥秘,开启数据之门

本节&#xff0c;我们继续深入了解MySQL&#xff0c;本章所讲的基础操作&#xff0c;针对的是表的增删查改&#xff01; 一、Create 新增 1.1、语法 INSERT [INTO] table_name[(column [, column] ...)] VALUES(value_list) [, (value_list)] ... value_list: value, [, va…