MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)

目录

1. 简介

2. 创建 Platform

2.1 Block Design

2.1.1 DPU PFM Lite

2.1.2 DPU prj

2.1.3 DPU + MIPI Platform

2.2 pin 约束

2.2.1 GPIO 约束

2.2.2 IIC 约束

2.1.3 DPHY 约束

3. 报错总结

3.1 AXI_M 必须顺序引用

3.2 DPU 地址分配错误

4. Design Example

4.1 MIPI Core 示例

4.1.1 新建任意工程

4.1.2 video_out 位宽变化

4.1.3 video_aclk 时钟连接

5. 总结


1. 简介

  • 构建一个极简的 DPU Platform
  • 添加 MIPI+Demosaic+VDMA 通路

2. 创建 Platform

2.1 Block Design

2.1.1 DPU PFM Lite

2.1.2 DPU prj

在执行完毕 v++ 链接命令后,可以在如下路径中打开:

<PYNQ>/boards/kv260_v1/binary_container_1/link/vivado/vpl/prj/prj.xpr

直接使用 DPU prj 导出的 xsa 平台文件,用以下命令,也可以直接得到 xclbin 文件:

v++ --link --target hw \--save-temps       \--package.no_image \--platform *.xsa

2.1.3 DPU + MIPI Platform

1)时钟域说明:摄像头数据链路全部使用 200MHz 时钟。

2)修改 Zynq MPSoC 的 S_AXI_HP3_FPD 位宽为64位,可以直接连接 VDMA。

2.2 pin 约束

2.2.1 GPIO 约束

set_property PACKAGE_PIN F11     [get_ports {rpi_cam_en_tri_io[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {rpi_cam_en_tri_io[0]}]set_property PACKAGE_PIN A12     [get_ports {fan_en_b[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {fan_en_b[0]}]

2.2.2 IIC 约束

在 Block Design 中,选择 axi_iic 属性:

选择 Board Interface 中,选择 som240_1_connector_hda_iic_switch:

2.1.3 DPHY 约束

在 Block Design 中,选择 axi_iic 属性:

3. 报错总结

3.1 AXI_M 必须顺序引用

1)在 Block Design 设计中,可以看到此 AXI Interconnet 使用了两个 M_AXI:

2)在 Platform Setup 中, 跳过 M02 至 M06,选择 M07 至 M09 对外显现:

3)在导出 Platform 时不会出错,但在 v++ 进行链接时,将会报错如下: 

INFO: [VPL 60-839] Read in kernel information from file '/home/dd/Documents/DPU-PYNQ-2.5.0/boards/kv260_v2/binary_container_1/link/int/kernel_info.dat'.
INFO: [VPL 60-423]   Target device: dd_kv260_preset_v2_1_0
INFO: [VPL 60-1032] Extracting hardware platform to /home/dd/Documents/DPU-PYNQ-2.5.0/boards/kv260_v2/binary_container_1/link/vivado/vpl/.local/hw_platform
[23:54:02] Run vpl: Step create_project: Started
Creating Vivado project.
[23:54:06] Run vpl: Step create_project: Completed
[23:54:06] Run vpl: Step create_bd: Started
[23:54:09] Run vpl: Step create_bd: Failed
[23:54:10] Run vpl: FINISHED. Run Status: create_bd ERROR===>The following messages were generated while  creating FPGA bitstream. Log file: /home/dd/Documents/DPU-PYNQ-2.5.0/boards/kv260_v2/binary_container_1/link/vivado/vpl/runme.log :
ERROR: [VPL 5-106] Arguments to the connect_bd_intf_net command cannot be empty.
ERROR: [VPL 60-773] In '/home/dd/Documents/DPU-PYNQ-2.5.0/boards/kv260_v2/binary_container_1/link/vivado/vpl/runme.log', caught Tcl error:  ERROR: [Common 17-39] 'connect_bd_intf_net' failed due to earlier errors.
ERROR: [VPL 60-704] Integration error, Failed to update block diagram in project required for hardware synthesis.The project is 'prj'. The block diagram update script is '.local/dr.bd.tcl'. The block diagram update script was generated by system linker. An error stack with function names and arguments may be available in the 'vivado.log'.
ERROR: [VPL 60-1328] Vpl run 'vpl' failed
WARNING: [VPL 60-1142] Unable to read data from '/home/dd/Documents/DPU-PYNQ-2.5.0/boards/kv260_v2/binary_container_1/link/vivado/vpl/output/generated_reports.log', generated reports will not be copied.
ERROR: [VPL 60-806] Failed to finish platform linker
INFO: [v++ 60-1442] [23:54:10] Run run_link: Step vpl: Failed
Time (s): cpu = 00:00:03 ; elapsed = 00:00:12 . Memory (MB): peak = 2188.492 ; gain = 0.000 ; free physical = 16738 ; free virtual = 22387
ERROR: [v++ 60-661] v++ link run 'run_link' failed
ERROR: [v++ 60-626] Kernel link failed to complete
ERROR: [v++ 60-703] Failed to finish linking
INFO: [v++ 60-1653] Closing dispatch client.
make: *** [Makefile:47: dpu.xclbin] Error 1

4)结论:AXI_M 必须顺序引用。

3.2 DPU 地址分配错误

1)在 Block Design 中包含 DPU IP:

2) 自动设置地址后,点击 Validate Design,将会得到如下错误提示:

[Common 17-55] 'get_property' expects at least one object.
Resolution: If [get_<value>] was used to populate the object, check to make sure this command returns at least one valid object.[BD 41-1273] Error running post_propagate TCL procedure: ERROR: [Common 17-55] 'get_property' expects at least one object.bip_set_base_addr Line 4

3)原因分析:dpuczdx8g_0/S_AXI 这一列被排除,即 DPU 的 S_AXI 接口没有被分配地址

4)手动分配 dpuczdx8g_0/S_AXI 地址

5)重新 Validate Design,错误消失。

4. Design Example

4.1 MIPI Core 示例

4.1.1 新建任意工程

1)新建任意工程,并添加 MIPI CSI-2 Rx Subsystem IP Core,右键选择 Open IP Example Design 即可:

2)该示例以 ZCU102 板为目标板卡,据悉信息如下:

  • 目标板:ZCU102
  • FMC 型号:LI-IMX274MIPI-FMC V1.0 Single Sensor
  • 设计拓扑:MIPI Video Pipe Camera to Display

3)示例功能

基于 MIPI CSI-2 Rx(摄像头)和 MIPI DSI Tx(显示)的参考设计:

  • 来自IMX274传感器的图像数据通过 MIPI CSI-2 接收子系统处理。
  • 进一步由视频 IP 处理,如去马赛克、伽马 LUT 等。
  • 然后将图像显示在 HDMI 显示器或 MIPI DSI 显示面板上。

4)IP 配置

  • MIPI CSI-2 Rx:通道=4,线速率=1440Mbps,数据类型=RAW10,像素模式=Dual
  • MIPI DSI Tx:通道=4,线速率=1000Mbps,数据类型=RGB888,像素模式=Dual

4.1.2 video_out 位宽变化

切换 Diagram 中的 Interfaces View,观察 MIPI 输出之后的位宽变化:

  • MIPI CSI-2 Rx Subsystem 的格式是 RAW10, Pixels_Per_Clock=2,实际输出为 24 bit
  • Sensor Demosaic 的格式是 Data_Width=8, Samples_Per_Clock=2,实际输入为 16 bit

其中 AXI4-Stream Subset Converter 的设置中,TDATA 做了重映射:

Extra Settings
---
TDATA Remap String: tdata[19:12],tdata[9:2]

MIPI CSI-2 Rx 输出数据排列是:

mipi_video_out      [------------------signle pixel-----------------] [------------signle pixel-------------]
[23],[22],[21],[20],[19],[18],[17],[16],[15],[14],[13],[12],[11],[10],[9],[8],[7],[6],[5],[4],[3],[2],[1],[0]
demosaic_in         [-------------signle pixel------------]           [--------signle pixel---------]

4.1.3 video_aclk 时钟连接

1)video_aclk 时钟域解释

2)示例工程中的连接

3)MIPI CSI-2 数据链路全都使用了该时钟

从左到右,依次为:

  • MIPI CSI-2 Subsystem
  • AXI4-Stream Subset Converter
  • Sensor Demosaic
  • Gamma LUT
  • Video Processing Subsystem
  • Video Frame Buffer Write
  • AXI Interconnection
  • Zynq UltraScale+ MPSoC

5. 总结

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

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

相关文章

Spring系列一:spring的安装与使用

文章目录 ?? 官方资料 ??Spring5下载??文档介绍 ??Spring5 ??内容介绍??重要概念 ??快速入门 ??Spring操作演示??类加载路径??Spring容器结构剖析??Debug配置 ??实现简单基于XML配置程序 ??Spring原生容器结构梳理??作业布置??Spring课堂练习 …

AutoSar架构学习笔记

1.AUTOSAR&#xff08;Automotive Open System Architecture&#xff0c;汽车开放系统架构&#xff09;是一个针对汽车行业的软件架构标准&#xff0c;旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元&#xff08;ECU&#xf…

Kernel Stack栈溢出攻击及保护绕过

前言 本文介绍Linux内核的栈溢出攻击&#xff0c;和内核一些保护的绕过手法&#xff0c;通过一道内核题及其变体从浅入深一步步走进kernel世界。 QWB_2018_core 题目分析 start.sh qemu-system-x86_64 \-m 128M \-kernel ./bzImage \-initrd ./core.cpio \-append "…

【顶刊TPAMI 2025】多头编码(MHE)之Part 6:极限分类无需预处理

目录 1 标签分解方法的消融研究2 标签分解对泛化的影响3 讨论4 结论 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者&#xff1a;Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位&#xff1a;山东大学 代码&#xff1a;https:…

友元和运算符重载

1. 友元 可以把某些选定的函数看作类的“荣誉函数”&#xff0c;允许它们访问类对象中非公共的成员&#xff0c;就好像它们是类的成员一样&#xff0c;这种函数称为类的友元。友元可以访问类对象的任意成员。 1.1 友元函数 友元函数是一种定义在类外部的普通函数&#xff0…

Git 树形图表不显示问题

注册表修改 ## 注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 生效 右键重启 windows资源管理器

【MySQL基础篇】三、表结构的操作

文章目录 Ⅰ. 创建表1、语法2、创建表样例3、创建和其它表一样结构的表 Ⅱ. 查看表结构1、查看数据库中的表2、查看指定表的属性3、获取表的创建语句 Ⅲ. 删除表Ⅳ. 修改表结构1、向表中插入新的字段2、删除表中的字段3、修改表名4、修改字段属性 Ⅰ. 创建表 1、语法 create …

aws(学习笔记第二十二课) 复杂的lambda应用程序(python zip打包)

aws(学习笔记第二十二课) 开发复杂的lambda应用程序(python的zip包) 学习内容&#xff1a; 练习使用CloudShell开发复杂lambda应用程序(python) 1. 练习使用CloudShell CloudShell使用背景 复杂的python的lambda程序会有许多依赖的包&#xff0c;如果不提前准备好这些python的…

SAP SD销售模块常见BAPI函数

【SAP系统研究】 #SAP #SD #销售管理 1、销售订单 BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单 BAPI_CUSTOMERRETURN_CREATE 创建退货订单 SD_SALESDOCUMENT_CREATE 创建贷项订单 BAPI_SALESORDER_CHANGE 修改销售订单 STATUS_READ 查看销售订单状态VB销售订单000000 I_CHA…

CSS学习记录21

CSS 工具提示 通过CSS 创建工具提示&#xff08;Tooltip)。 当用户将鼠标指针移动到元素上时&#xff0c;工具提示通常用于提供关于某内容的额外信息&#xff1a; <style> /* Tooltip 容器 */ .tooltip {position: relative;display: inline-block;border-bottom: 1px …

DuckDB:密钥管理器及其应用

密钥管理器(Secrets Manager)为所有使用密钥的后端提供了统一的用户界面。密钥信息可以被限定范围&#xff0c;因此不同的存储前缀可以有不同的密钥信息&#xff0c;例如允许在单个查询中连接跨组织的数据。密钥也可以持久化&#xff0c;这样就不需要在每次启动DuckDB时都指定它…

[cg] android studio 无法调试cpp问题

折腾了好久&#xff0c;native cpp库无法调试问题&#xff0c;原因 下面的Deploy 需要选Apk from app bundle!! 另外就是指定Debug type为Dual&#xff0c;并在Symbol Directories 指定native cpp的so路径 UE项目调试&#xff1a; 使用Android Studio调试虚幻引擎Android项目…

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中&#xff0c;移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求&#xff0c;跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架&#xff0c;以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式&#xff1a;在HAL库中&#xff0c;I2C有专门对存储器外设设置的库函数 I2C&#xff08;一&#xff09;&#xff1a;存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…

Elasticsearch:减少 Elastic 容器镜像中的 CVE(常见的漏洞和暴露)

作者&#xff1a;来自 Elastic Maxime Greau 在这篇博文中&#xff0c;我们将讨论如何通过在 Elastic 产品中切换到最小基础镜像并优化可扩展漏洞管理程序的工作流程来显著减少 Elastic 容器镜像中的常见漏洞和暴露 (Common Vulnerabilities and Exposures - CVEs)。 基于 Chai…

【AI学习】Transformer深入学习(二):从MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入学习&#xff08;一&#xff09;&#xff1a;Sinusoidal位置编码的精妙》 一、MHA、MQA、GQA 为了降低KV cache&#xff0c;MQA、GQA作为MHA的变体&#xff0c;很容易理解。 多头注意力&#xff08;MHA&#xff09;&#xff1a; 多头注…

使用python调用翻译大模型实现本地翻译【exe客户端版】

以前分享过一个 关于python 部署 网页端的 翻译大模型的 文章 有兴趣的小伙伴可以去看一下 https://blog.csdn.net/Drug_/article/details/144488795 今天就再分享一个 使用python 来制作一个 exe 客户端版的 本地大模型。 实际也很简单 只不过把 用 fastApi 框架 做的 网页端…

python3GUI--智慧交通监控与管理系统 By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件组成&技术难点1.软件组成结构2.技术难点3.项目结构 四&#xff0e;总结 大小&#xff1a;35.5 M&#xff0c;软件安装包放在了这里! 一&#xff0e;前言 博主高产&#xff0c;本次给大家带来一款我自己使…

JavaVue-Get请求 数组参数(qs格式化前端数据)

前言 现在管理系统&#xff0c;像若依&#xff0c;表格查询一般会用Get请求&#xff0c;把页面的查询条件传递给后台。其中大部分页面会有日期时间范围查询这时候&#xff0c;为了解决请求参数中的数组文件&#xff0c;前台就会在请求前拦截参数中的日期数组数据&#xff0c;然…

Vue2/Vue3使用DataV

Vue2 注意vue2与3安装DataV命令命令是不同的Vue3 DataV - Vue3 官网地址 注意vue2与3安装DataV命令命令是不同的 vue3vite 与 Vue3webpack 对应安装也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…