基于zynq在linux下的HDMI实战
ZYNQ系列文章目录
第一章:基于zynq在linux下的phy调试记录
第二章:qemu制作ubuntu文件系统
第三章:基于zynq在linux下的AXI-CAN实战
第四章:基于zynq在linux下的HDMI实战
文章目录
- ZYNQ系列文章目录
- 前言
- 一、vivado中HDMI的配置
- 1.1 IP核准备
- 1.2 vivado Diagram配置
- 1.3 SDK配置
- 二、petalinux中HDMI的配置
- 2.1 内核驱动准备
- 2.2 内核驱动添加
- 2.3 内核配置
- 2.4 设备树配置
- 三、petalinux下HDMI测试
- 1、LINUX控制台在显示屏上的展示
- 2、LINUIX应用层编码展示自定义图片
- 总结
前言
记录zynq调试:
从petalinux的搭建,到uboot、kernel、rootfs的适配、移植、SDK构建及优化
提示:以下是本篇文章正文内容,下面案例可供参考
一、vivado中HDMI的配置
基于4.14的内核适配HDMI,无需进行内核驱动的修改,全程无缝替换。
但是基于5.10因为DRM整个框架的改动,相关IP核的驱动需要修改。
1.1 IP核准备
需要两个关键性的得捷IP核,点击直接下载
RGB TO DVI
DYNAMIC CLOCK
1.2 vivado Diagram配置
首先将1.1中准备好的2个IP核放入指定目录,然后导入至vivado中
Diagram配置如下
XDC中TVDS及HDMI-IIC自行根据个人硬件IO进行配置 建议直接在菜单导航栏中点击该选项中的 “Open Elaborated Design ”。然后在菜单栏中点击 Layout ,在下拉列表中选择 I/O Planning 以打开 I/O Ports 窗口。我们将在 I/O Ports 窗口中对hdmi-iic、tmds 引出的接口进行管脚分配。
保存后会自行生成XDC
最后点击Generate Bitstream生成system.bit
1.3 SDK配置
1、使用fsbl官方例程生成fsbl.elf,给petalinux生成BOOT.BIN使用。
2、生成pl.dtsi,给内核中设备树当头文件使用
二、petalinux中HDMI的配置
2.1 内核驱动准备
clk-dglnt-dynclk.c
digilent_encoder.c
2.2 内核驱动添加
将2.1中两个驱动文件分别放入/kernel/drivers/gpu/drm/xilinx/及kernel/drivers/clk中
下一步进行digilent_encoder.c
的修改
先修改/kernel/drivers/gpu/drm/xilinx/kconfig
在最后一行加上
config DRM_DIGILENT_ENCODERtristate "Digilent VGA/HDMI DRM Encoder Driver"depends on DRM_XILINXhelpDRM slave encoder for Video-out on Digilent boards.
修改/kernel/drivers/gpu/drm/xilinx/makefile
添加相关源码编译链接
obj-$(CONFIG_DRM_DIGILENT_ENCODER) += digilent_encoder.o
开始进行clk-dglnt-dynclk.c
的修改
先修改/kernel/drivers/clk/kconfig
,其中加上
config COMMON_CLK_DGLNT_DYNCLKtristate "Digilent axi_dynclk Driver"depends on ARCH_ZYNQ || MICROBLAZEhelp---help---Support for the Digilent AXI Dynamic Clock core for XilinxFPGAs.
修改/kernel/drivers/clk/makefile
,其中加上
obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o
2.3 内核配置
kernel目录终端执行
make menuconfig ARCH =arm CROSS_COMPILE=arm-linux-gnueabihf
配置xiilinx自己的DRM驱动及CLK驱动
2.4 设备树配置
前提:所有节点的寄存器属性都依赖于pl.dtsi中生成的节点及属性
打开system-top.dts
&amba_pl {hdmi_encoder_0:hdmi_encoder {status = "okay";compatible = "digilent,drm-encoder";// digilent,edid-i2c = <&i2c1>;digilent,hpref = <1920>;digilent,vpref = <1080>;};xilinx_drm {status = "okay";compatible = "xlnx,drm";xlnx,vtc = <&v_tc_0>;xlnx,connector-type = "HDMIA";xlnx,encoder-slave = <&hdmi_encoder_0>;clocks = <&axi_dynclk_0>;dglnt,edid-i2c = <&i2c1>;planes {xlnx,pixel-format = "rgb888";plane0 {dmas = <&axi_vdma_0 0>;dma-names = "dma";};};};
};&axi_dynclk_0 {status = "okay";compatible = "digilent,axi-dynclk";#clock-cells = <0>;clocks = <&clkc 15>;
};&v_tc_0 {status = "okay";compatible = "xlnx,v-tc-5.01.a";
};
不要问1:为什么我的v_tc_0 compatible 属性是5.01.a,因为下面截图是事实真相。
compatible 属性在设备树中的作用是确保内核能够根据硬件的描述正确地识别和驱动硬件设备,它是设备树与设备驱动程序之间的桥梁
不要问2:HDMI的iic注释掉是因为当前的板子分辨率自适应失败了,导致drm驱动后面没起来,无赖之举直接将分辨率写成固定值。
三、petalinux下HDMI测试
1、LINUX控制台在显示屏上的展示
2、LINUIX应用层编码展示自定义图片
总结
这里对文章进行总结:
本次要讲述的zynq的hdmi驱动加载小知识就说到这里了,兄弟萌要有什么指导意见或疑问可以在评论区留下"足迹"。
version1.0:初稿,下个版本会补充linux应用显示自定义图片
相关文章:
基于zynq在linux下的HDMI实战
ZYNQ系列文章目录 第一章:基于zynq在linux下的phy调试记录 第二章:qemu制作ubuntu文件系统 第三章:基于zynq在linux下的AXI-CAN实战 第四章:基于zynq在linux下的HDMI实战 文章目录 ZYNQ系列文章目录前言一、vivado中HDMI的配置1.…...
HT-HaiBOX边缘计算盒 智慧工厂方案,智慧医疗方案,智慧加油站方案,智慧安防方案,智慧城市方案;方案定制开发
背景介绍 在当今数字化时代,各个行业对于智能化视频监控设备的需求日益增长。无论是安防监控,还是智慧工厂、智慧城市等领域,都需要高效、智能的设备来保障安全和提高生产效率。然而,传统的视频监控设备存在诸多痛点:…...
【JMeter详解】
JMeter详解 Apache JMeter 是一个开源的、100%纯Java应用程序,设计用于负载测试和性能测量。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。JMeter可以用来对静态和动态资源(如静态文件、Servlets、Perl脚本、Java对象、数据…...
《PHP Switch》
《PHP Switch》 介绍 PHP 是一种广泛使用的服务器端编程语言,而 switch 语句是 PHP 中用于基于不同条件执行不同代码块的关键字。在本篇文章中,我们将详细介绍 PHP 中的 switch 语句,包括其语法、用法、以及在实际编程中的应用场景。 语法…...
如何确保涡度通量观测数据的准确性?涡度通量光敏感性分析、温度敏感性分析、数据风浪区分析等
确保涡度通量观测数据的准确性,可以采取以下几个步骤: 1.数据预处理:在进行数据分析之前,需要对原始的高频涡度通量数据进行预处理,包括剔除异常值和进行数据缺失插补。异常值剔除可以通过设定合理的阈值来识别并剔除数…...
linux自动化批量分发SSH密钥同时批量测试SSH连接教程(包含自动化脚本代码)
1、检查端口 检查分发对象22端口是否打开 nmap -p22 ip地址如果要批量检查端口可以参考我写的这篇文章:linux自动化一键批量检查主机端口 2、命令行分发密钥原理 Linux分发密钥原理主要涉及SSH(Secure Shell)协议,该协议用于…...
C++ 设计模式:命令模式(Command Pattern)
链接:C 设计模式 链接:C 设计模式 - 访问者模式 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志…...
Flink源码解析之:Flink On Yarn模式任务提交部署过程解析
Flink源码解析之:Flink On Yarn模式任务提交部署过程解析 一、Flink on Yarn部署模式概述 Apache Hadoop YARN 在许多数据处理框架中都很流行。 Flink 服务提交给 YARN 的 ResourceManager,后者会在 YARN NodeManagers 管理的机器上生成容器。 Flink 将…...
C++算法20例
1、求两个数的最大公约数 int gcd(int a, int b) { 2 return b 0 ? a : gcd(b, a % b); 3} 2、判断素数 bool isPrime(int n) {if (n < 1) return false; for (int i 2; i * i < n; i) {if (n % i 0) return false;}return true; } 3、冒泡排序 void bubbleSort…...
雷军:科技传奇的逐梦之旅
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...
python版本的Selenium的下载及chrome环境搭建和简单使用
针对Python版本的Selenium下载及Chrome环境搭建和使用,以下将详细阐述具体步骤: 一、Python版本的Selenium下载 安装Python环境: 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python,…...
linux tar 文件解压压缩
文件压缩和解压 tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 -z:有gzip属性的 -j:有bz2属性的 -v:显示所有过程 -O:…...
Razzashi Raptor
拉扎什迅猛龙 Razzashi Raptor 2024.12.24 无论是工作、游戏,除了坚持,还需要一点运气,2024年跨年啦。 World of Warcraft [CLASSIC]80猎人[Grandel][祖尔格拉布][血领主曼多基尔][拉扎什迅猛龙]20241231跨年回报_哔哩哔哩bilibili_魔兽 Ra…...
Fetch处理大模型流式数据请求与解析
为什么有的大模型可以一次返回多个 data? Server-Sent Events (SSE):允许服务器连续发送多个 data: 行,每个代表一个独立的数据块。 流式响应:大模型服务通常以流式响应方式返回数据,提高响应速度。 批量处理&#x…...
【网络安全实验室】脚本关实战详情
难道向上攀爬的那条路,不是比站在顶峰更让人热血澎湃吗 1.key又又找不到了 点击链接,burp抓包,发送到重放模块,点击go 得到key 2.快速口算 python3脚本 得到key 3.这个题目是空的 试了一圈最后发现是 4.怎么就是不弹出key呢…...
怎么配置每一次重启服务器后,自动启动Tocmat
前言 宝子们,今天来给大家详细讲讲服务器如何配置每次重启后自动启动 Tomcat,让你的服务器应用始终保持在线状态,高效运行! windows版本 在 Windows 系统下,有两种常用的方法可以实现这个目标。 第一种方法是利用服…...
《机器学习》——利用OpenCV库中的KNN算法进行图像识别
文章目录 KNN算法介绍下载OpenCV库实验内容实验结果完整代码手写数字传入模型训练 KNN算法介绍 一、KNN算法的基本要素 K值的选择:K值代表选择与新测试样本距离最近的前K个训练样本数,通常K是不大于20的整数。K值的选择对算法结果有重要影响,…...
D3.js
d3是用于数据可视化 可用于处理数据、创建图表、实现动画效果和交互功能应用场景: 数据可视:将复杂的数据以图表的形式展示出来,便于用户理解和分析。交互式图:支持事件处理和动画效果,提升用户体验。仪表盘和报:广泛…...
Windows onnxruntime编译openvino
理论上来说,可以直接访问 ONNXRuntime Releases 下载 dll 文件,然后从官方文档中下载缺少的头文件以直接调用,但我没有尝试过。 1. 下载 OpenVINO 包 从官网下载 OpenVINO 的安装包并放置在 C:\Program Files (x86) 路径下,例如…...
Python中的sqlite3模块:SQLite数据库接口详解
Python中的sqlite3模块:SQLite数据库接口详解 主要功能sqlite3.connect(database)connection.cursor()cursor.execute(sql)connection.commit()cursor.fetchall()connection.close() 使用示例执行结果总结 在Python中,sqlite3模块提供了一个与SQLite数据…...
Unity功能模块一对话系统(4)实现个性文本标签
本期我们将了解如何在TMPro中自定义我们的标签样式,并实现两种有趣的效果。 一.需求描述 1.定义<float>格式的标签,实现标签处延迟打印功能 2.定义<r" "></r>格式的标签,实现标签区间内文本片段的注释显示功能…...
Vue.js前端框架教程15:Vue父子组件之间的通信ref、emits
文章目录 1. 属性传递(Props)2. 事件监听( Emits)3. `ref` 引用4. `provide` 和 `inject`5. 插槽(Slots)在 Vue 3 中,父子组件之间的通信可以通过多种方式实现,包括属性传递、事件监听、插槽以及 ref 和 provide/inject。以下是这些通信方式的详解: 1. 属性传递(Pro…...
Python 实现 冒泡排序算法示例
冒泡排序算法示例 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的列表,比较相邻的元素,并交换它们的位置,如果它们的顺序错误。这个过程会重复进行,直到没有需要交换的元素为止&#x…...
《机器学习》--线性回归模型详解
线性回归模型是机器学习中的一种重要算法,以下是对其的详细解释: 一、定义与原理 线性回归(Linear Regression)是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。线性回归…...
Django项目部署到服务器
文章目录 django项目部署到服务器在服务器上安装Django和依赖:项目代码上传配置数据库收集静态文件配置Web服务器配置Gunicorn(WSGI服务器)启动/停止/重载systemd服务。 django项目部署到服务器 在服务器上安装Django和依赖: su…...
CSDN编辑器
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
如何免费解锁 IPhone 网络
您是否担心 iPhone 上的网络锁定?如果您的 iPhone 被锁定到特定运营商,解锁它可以连接到不同的运营商。好吧,我们为您准备了一份指南。 iPhone运营商免费解锁将是小菜一碟。在我们的解锁运营商 iphone 免费指南中。我们为您提供了一份简介&am…...
Trimble天宝X9三维扫描仪为建筑外墙检测提供了全新的解决方案【沪敖3D】
随着城市化进程的快速推进,城市高层建筑不断增多,对建筑质量的要求也在不断提高。建筑外墙检测,如平整度和垂直度检测,是衡量建筑质量的重要指标之一。传统人工检测方法不仅操作繁琐、效率低下,还难以全面反映墙体的真…...
微服务のGeteWay
目录 概念: 三大核心: 工作流程: 9527网关如何做路由映射: GetWay高级特性: 按服务名动态路由服务: 断言Route Predicate Factories : 获取当前时区时间: After Route &…...
Golang 中 Goroutine 的调度
Golang 中 Goroutine 的调度 Golang 中的 Goroutine 是一种轻量级的线程,由 Go 运行时(runtime)自动管理。Goroutine 的调度基于 M:N 模型,即多个 Goroutine 可以映射到多个操作系统线程上执行。以下是详细的调度过程和策略&…...
MyBatis使用的设计模式
目录 1. 工厂模式(Factory Pattern) 2. 单例模式(Singleton Pattern) 3. 代理模式(Proxy Pattern) 4. 装饰器模式(Decorator Pattern) 5. 观察者模式(Observer Patt…...
淺談Cocos2djs逆向
前言 簡單聊一下cocos2djs手遊的逆向,有任何相關想法歡迎和我討論^^ 一些概念 列出一些個人認為比較有用的概念: Cocos遊戲的兩大開發工具分別是CocosCreator和CocosStudio,區別是前者是cocos2djs專用的開發工具,後者則是coco…...
选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型
结构为类选择器 伪元素选择器 PxCook 盒子模型 (内外边距,边框) 内外边距合并,塌陷问题 元素溢出 圆角 阴影: 模糊半径:越大越模糊,也就是越柔和 案例一:产品卡片 <!DOCTYPE html> <html lang&q…...
CentOS 7系统 OpenSSH和OpenSSL版本升级指南
文章目录 CentOS 7系统 OpenSSH和OpenSSL版本升级指南环境说明当前系统版本当前组件版本 现存安全漏洞升级目标版本升级准备工作OpenSSL升级步骤1. 下载和解压2. 编译安装3. 配置环境 OpenSSH升级步骤1. 下载和解压2. 编译安装3. 创建systemd服务配置4. 更新SSH配置文件5. 设置…...
使用 Comparable 和 Comparator 接口对集合排序
使用 Comparable 和 Comparator 接口对集合排序: 1. 使用 Comparable 接口: 当你希望一个类的对象能够按照某种自然顺序进行排序时,可以实现 Comparable 接口 并重写 compareTo() 方法。 实现步骤: 1.1 实现 Comparable<T&g…...
最新常见的图数据库对比,选型,架构,性能对比
图数据库排名 地址:https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性 SPARQL Cypher Gremlin PGQL G-CORE 图模式匹配查询 语法 CGP CGP CGP(无可选)1 CGP CGP 语义 子…...
混合合并两个pdf文件
混合两个pdf 1、在线免费交替和混合奇数和偶数PDF页面2、有什么软件把两个 PDF 交叉合并?3、pdfsam本地合并 如何Google翻译的原文和译文合并,(沉浸式翻译效果相对较好) 1、在线免费交替和混合奇数和偶数PDF页面 https://deftpd…...
OpenCV-Python实战(9)——滤波降噪
一、均值滤波器 cv2.blur() img cv2.blur(src*,ksize*,anchor*,borderType*)img:目标图像。 src:原始图像。 ksize:滤波核大小,(width,height)。 anchor:滤波核锚点,…...
uniapp——微信小程序读取bin文件,解析文件的数据内容(三)
微信小程序读取bin文件内容 读取用户选择bin文件,并解析数据内容,分包发送给蓝牙设备; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档: getFileSystemManager 关于App端读取bin文件,请查看&…...
Python 中常用的算法
1. 排序算法 用于将数据按特定顺序排列。 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)快速排序(Quick Sort)归并排序(Merge Sort…...
xadmin后台首页增加一个导入数据按钮
xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang...
Kubernetes: NetworkPolicy 的实践应用
一、Network Policy 是什么,在云原生领域有和作用 Network Policy 是 Kubernetes 官方提出来的一种网络策略的规范,用户通过编写符合对应规范的规则来控制 k8s 集群内 L3 和 L4 层的网络流量。 NetworkPolicy 主要的功能就是实现在云原生领域的容器网络管控它给用…...
计算机体系结构期末复习3:GPU架构及控制流问题
目录 一、GPU设计思路 1.简化流水线、增加核数 2.单指令多线程(SIMT) 3.同时驻留大量线程 4.总思路:多线程单指令多线程 二、GPU的控制流问题 1.什么是控制流问题 2.怎么应对分支分歧 一、GPU设计思路 1.简化流水线、增加核数 2.单指…...
excel怎么删除右边无限列(亲测有效)
excel怎么删除右边无限列(亲测有效) 网上很多只用第1步的,删除了根本没用,还是存在,但是隐藏后取消隐藏却是可以的。 找到右边要删除的列的第一个空白列,选中整个列按“ctrlshift>(向右的小箭头)”&am…...
ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例
目录 1.扩写(expansion/paraphrasing) 2.优化(optimization) 3.缩写(optimization) 4.提取关键词(keyword extraction) 5.短语转换(phrase transformationÿ…...
C++和OpenGL实现3D游戏编程【连载19】——着色器光照初步(平行光和光照贴图)(附源码)
1、本节要实现的内容 我们在前期的教程中,讨论了在即时渲染模式下的光照内容。但在我们后期使用着色器的核心模式下,会经常在着色器中使光照,我们这里就讨论一下着色器光照效果,以及光照贴图效果,同时这里知识会为后期的更多光照效果做一些铺垫。本节我们首先讨论冯氏光照…...
html+css网页制作 美食 美食网5个页面
htmlcss网页制作 美食 美食网5个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1࿰…...
Mac 12.1安装tiger-vnc问题-routines:CRYPTO_internal:bad key length
背景:因为某些原因需要从本地mac连接远程linxu桌面查看一些内容,必须使用桌面查看,所以ssh无法满足,所以决定安装vnc客户端。 问题: 在mac上通过 brew install tiger-vnc命令安装, 但是报错如下: > D…...
遥感图像车辆检测-目标检测数据集
遥感图像车辆检测-目标检测数据集(包括VOC格式、YOLO格式) 数据集: 链接: https://pan.baidu.com/s/1XVlRTVWpXZFi6ZL_Xcs7Rg?pwdaa6g 提取码: aa6g 数据集信息介绍: 共有 1035 张图像和一一对应的标注文件 标注文件格式提供了…...
51c自动驾驶~合集43
我自己的原文哦~ https://blog.51cto.com/whaosoft/12930230 #ChatDyn 上交大最新ChatDyn:一句话操纵三维动态 理解和生成真实的三维虚拟世界是空间智能的核心。所生成的三维虚拟世界能够为自动驾驶、具身智能等AI系统提供高质量闭环仿真训练场,高效…...