IMX6Q平台下双通道LVDS屏幕linux驱动设备树调试笔记

一、 LVDS简单理解

LVDS粗略了解

LVDS = Low-Voltage Differential Signaling 低电压差分信号,属于平衡传输信号。这种技术的核心是采用极低的电压摆幅高速差动传输数据,从而有以下特点:低功耗—低误码率—低串扰—低抖动—低辐射 良好的信号完整性。推荐的最高数据传输速率是655Mbps,而理论上可以达到1.923Gbps。在17inch及以上的液晶显示器中得到广泛应用。

单路6bit LVDS:这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit LVDS接口。

双路6bit LVDS:这种接口电路中,采用双路方式传输,每个基色信号采用6位数据,其中奇路数据为18位,偶路数据为18位,共36位RGB数据,因此,也称36位或36bit LVDS接口。

单路8bit LVDS:这种接口电路中,采用单路方式传输,每个基色信号采用8位数据,共24位RGB数据,因此,也称24位或24bit LVDS接口。

双路8bit LVDS:这种接口电路中,采用双路方式传输,每个基色信号采用8位数据,其中奇路数据为24位,偶路数据为24位,共48位RGB数据,因此,也称48位或48bit LVDS接口。

单路6bit,只用到三对差分信号数据线,一对时钟线
双路6bit,只用到六对差分信号数据线,两对时钟线,分为两个通道
RGB666

单路8bit,只用到四对差分信号数据线,一对时钟线
双路8bit,只用到八对差分信号数据线,两对时钟线,分为两个通道
RGB888/RGB24

LVDS显示模式

单通道LVDS :只通过一个通道接向外面的LVDS panel。(单路显示)
split双通道LVDS: 通过两个通道接向外面的一个LVDS panel. (双通道lvds)
两路通道LVDS: 通过两个通道接向外面的两个LVDS panel, panel 显示相同内容; (双屏同显)
两路通道LVDS:两个不同输入,分别指向两个不同LVDS panel,panel 显示不同内容; (双屏异显)

IPU:image process unit图像处理单元,所有图像视频处理都经过这个IPU来进行处理输出,IPU从framebuffer取数据,然后从DI口输出到接口传输到屏幕上。一个IPU有两路DI口。IPU 将framebuffer 中的数据读入到IPU,然后根据其分辨率参数,生成带有时序的显示数据,最终通过DI口送出。每个DI 口送出的数据,就已经包含了hsync,vsync,pixelclock,及像素数据。 在HDMI, LVDS, LCD 端,都可以控制相关寄存器,让DI 的数据流流向自己,最终经过显示协议的转换输出到显示屏幕上去。 也就是说 LVDS显示数据是从IPU DI 路由给它的。

双通道LVDS:使用相同的IPU DI,且每个通道都路由这个DI 的数据到 自己的通道。由于使用的是相同的DI, 所以两个显示屏幕内容是相同的。 很明显,双通道LVDS 能够实现多屏幕同显。
在这里插入图片描述

split通道LVDS:使用相同的IPU DI,但每个通道路由不同的数据,奇数通道路由奇数位像素数据,偶数通道路由偶数位像素数据,依次来构成一个完整的帧。
在这里插入图片描述

在这里插入图片描述

LVDS输出格式

imx6平台包含 2 个 8 位数据线的 LVDS 接口,每个接口都可以支持 JEIDA 和 SPWG 数据格式,在 SPWG 格式时支持 6 位数据线和 8 位数据线输出。 2 个接口同时使用可以连接 12 位或 16 位数据线的显示屏。
我们在选择了一块 LVDS 接口的显示屏后我们需要确认该显示屏的数据格式和数据位数,按照要求做出相应配置,输出正确的显示信号。
1、 首先,确认数据传输的格式,我们参考 imx6手册 LDB 章节, imx6支持SPWG和JEIDA 2 种格式输出显示信号。看下图,每个时钟周期,每对数据线传输 7 位数据, SPWG 和 JEIDA 的区别就是每条数据线上传输的数据的顺序是不同的,而且 JEIDA 不支持 18 位模式,所以我们在拿到显示屏的手册后,需要先确认此屏的数据传输格式是哪种。
在这里插入图片描述

2、 其次确认 LVDS 接口包含多少条数据线。 LVDS 显示包含的数据线大致包含以下几种,
6 位数据线( 3 对数据传输线),数据传输时 RGB 信号按 18 位传输。
8 位数据线( 4 对数据传输线),数据传输时 RGB 信号按 24 位传输

在这里插入图片描述

二、 按照手册配置好编译环境。
三、 拿到原厂的内核源码,解压。
在这里插入图片描述

四、 修改设备树。
打开imx6q-sabresd.dts设备树文件

在这里插入图片描述
在这里插入图片描述

其中&ldb节点

lvds-channel@0:指定lvds第0通道使用哪个IPU哪个DI口进行数据输出
这里 ipu2-di0:表示使用IPu的第0个di口进行数据输出。

lvds-channel@1:指定lvds第1通道使用哪个IPU哪个DI口进行数据输出
这里 ipu2-di0:表示使用IPu的第0个di口进行数据输出。


mxcfb1~mxcfb4 用于开启哪个fb,与imx6qdl-sabresd.dtsi设备树中的节点有关。

打开imx6qdl-sabresd.dtsi设备树进行配置。
在这里插入图片描述

与LVDS配置相关的几点如下:
在这里插入图片描述

Aliases是取别名的意思。

在这里插入图片描述

这部分不知道是什么作用,更改了之后,对屏幕显示没有影响

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 
四个fb设备,与上面的这些有关,这里我打开了mxcfb1,status为okay,所以只关心mxcfb1:fb@0接电即可。
  
Compatibe = fsl,mxc_sdc_fb,用来匹配的内核的驱动,这个确定是原厂编写好的,不用管它
Disp_dev = ldb , 显示的节点是ldb,这个ldb会在文件后面声明
Interface_pix_fmt = RGB24:这个是根据实际情况来填写,屏幕手册显示是8bitRGB,则是RGB24。这里我试过用RGB66,会影响显示的颜色,不会没有显示/黑屏的情况。
Default_bpp= <16> 位深,这里只能填16,我填了24则显示不出来。

在这里插入图片描述

显示屏背光相关节点。
在这里插入图片描述

Backlight 背光节点
compatible = "pwm-backlight";   //匹配内核驱动,原厂自带的驱动
pwms = <&pwm1 0 5000000>;   //指定使用你pwm1,节点在后续定义,频率是5MHz
brightness-levels = <0 4 8 16 32 64 128 255>; //通过调整占空比来控制亮度等级,分为8级(0~7)
default-brightness-level = <7>; //指定默认的占空比,亮度等级为7(255)。
status = "okay";

在这里插入图片描述
在这里插入图片描述

这两块定义了pwm1节点,并知名pwm1使用到的引脚号。

五、 编译设备树,执行./build-dtb.sh

在arch/arm/boot/dts/ 下即会生成 imx6q-sabresd.dtb imx6dl-sabresd.dtb 替换原厂的设备树,重新烧录即可。

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

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

相关文章

【linux】用grep或者pgrep查找进程ID

一、用grep ps aux|grep 字符串|awk {print $2} 像上面这样运行&#xff0c;还会同时显示grep的进程ID。 需要再添加grep的反向查找命令&#xff0c;即查找不含有 "grep" 字段的行&#xff1a;grep -v grep。 ps aux | grep 字符串 | grep -v grep | awk {print …

2015年第四届数学建模国际赛小美赛A题飞机上的细长座椅解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 A题 飞机上的细长座椅 原题再现&#xff1a; 航空公司座位是指在旅途中乘客可以乘坐的座位。一些航空公司现在推出了新的经济舱“超薄”座位。这些座椅除了重量较轻外&#xff0c;理论上还允许航空公司在不显著影响乘客舒适度的情况下增加运…

【Linux笔记】文件和目录操作

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 命令 ls (List): pwd (Print Working Directory): cp (Copy): mv (Move): rm (Remove): 结语 我的其他博客 前言 学习Linux命令…

JavaOOP篇----第十三篇

系列文章目录 文章目录 系列文章目录前言一、普通类与抽象类有什么区别?二、什么是接口?为什么需要接口?三、接口有什么特点?四、抽象类和接口的区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

在Windows11下安装完Ubuntu20.04双系统后屏幕亮度无法调节的问题

网络中常用的解决方式 第一种 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get update sudo apt-get install brightness-controller-simple ubuntu20.04屏幕亮度无法调节&#xff08;亮度条调节无效&#xff09;的简单靠谱解决方案及踩坑历程 …

核心订单链路兜底方案之限流熔断降级实战

需求场景 对于很多电商系统而言&#xff0c;在诸如双十一这样的大流量的迅猛冲击下&#xff0c;都曾经或多或少发生过宕机的情况。当一个系统面临持续的大流量时&#xff0c;它其实很难单靠自身调整来恢复状态&#xff0c;你必须等待流量自然下降或者人为地把流量切走才行&…

Linux文件操作命令@touch、cat、more、cp、mv、rm

目录 命令touch语法形式作用 命令cat语法形式作用 命令more语法形式作用 命令cp语法形式作用复制文件复制文件夹 命令mv语法形式作用移动文件移动文件夹情况三 命令rm语法形式作用删除文件删除文件夹-f 选项通配符 * 总结 命令touch 语法形式 touch Linux路径 》touch命令无…

使用Guava轻松创建和管理不可变集合

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天&#xff0c;我们来聊聊一个在Java编程里超有用的话题&#xff1a;使用Guava创建和管理不可变集合。首先&#xff0c;咱们得明白&#xff0c;什么是不可变集合。简单来说&#xff0c;不可变集合就是一旦创建就不能被修…

STL体系结构概述

文章目录 STL是什么&#xff1f;STL的六大组件STL的实现版本额外补充一、容器范围区间二、容器结构与分类序列式容器关联容器有序关联容器不定序关联容器 参考 本文将是STL系列的第一篇文章&#xff0c;主要参考《STL源码剖析》&#xff0c;辅以网络博文&#xff0c;不定时更新…

DevC++ easyx实现图片拖动,一种悬浮窗实现原理与完整代码

翻出来之前写的代码&#xff0c; EasyxDevC开发地图编辑和游戏编辑代码工程文件附注释_哔哩哔哩_bilibili 每次把代码备份下来&#xff0c;等着有一天能够复用代码&#xff0c;产生新的价值。 结果最近这几天才来回顾记录emm “这是怎么搓出来的&#xff1f;”从10行代码到…

代码审查工具FishEye详细使用教程

1. Git代码仓库设置 1、登录并进入到FishEye主页面&#xff0c;点击Repositories进入仓库管理页面&#xff0c;如下图&#xff1a; 2、填写仓库信息&#xff0c;如下图&#xff1a; 3、填写Git地址 http://gitAccount:gitPwd118.24.231.166:8080/git/git/iot-lvdao/iot-dhcc.…

【小黑嵌入式系统第十二课】μC/OS-III程序设计基础(二)——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量

上一课&#xff1a; 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础&#xff08;一&#xff09;——任务设计、任务管理&#xff08;创建&基本状态&内部任务&#xff09;、任务调度、系统函数 文章目录 一、系统函数使用场合1.1 时间管理1.1.1 控制任务的执行周期1…

自动生成数控加工的轨迹刀具轨迹阿基米德螺旋线(3D)

文章目录 1. 阿基米德螺旋线2. 生成步骤目标: 基于点云自动生成阿基米德螺旋线轨迹点 针对的是半球形模型效果 1. 阿基米德螺旋线 阿基米德螺旋线(Archimedean spiral)是一种数学曲线,由古希腊数学家阿基米德(Archimedes)在公元前225年左右首次研究和描述。这条曲线的方…

如何实现酷狗音乐pc页面点击播放时,打开多个歌曲播放时,始终在一个播放页面,(标签页的通讯)

大致有两种思路&#xff0c; 一种是通过wind.open()方法传第二个参数&#xff0c; A页面&#xff1a; //点击跳转播放页函数function toPlayPage(){window.open(path/xxxx/xxxx?name音乐名,music)//第二个参数写一个定值&#xff0c;代表跳转页面都为music标签页&#xff0…

计算机服务器中了halo勒索病毒如何解密,halo勒索病毒解密数据恢复

计算机技术的不断发展&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但也为网络安全埋下隐患&#xff0c;网络上的勒索病毒种类也在不断增加&#xff0c;给企业的数据安全带来了严重威胁。近日&#xff0c;云天数据恢复中心接到许多企业的求助&#xff0c;企业的计算…

Unity3D移动端实现摇一摇功能

手机摇一摇功能在平时项目开发中是很常见的需求&#xff0c;利用Unity的重力感应可以很方便的实现该功能。 Unity简化了重力感应的开发&#xff0c; 通过访问Input.acceleration属性&#xff0c;取回加速度传感器的值。首先我们看一下重力传感器的方向问题。Unity3D中重量的取…

【内存泄漏】内存泄漏及常见的内存泄漏检测工具介绍

内存泄漏介绍 什么是内存泄漏 内存泄漏是指程序分配了一块内存&#xff08;通常是动态分配的堆内存&#xff09;&#xff0c;但在不再需要这块内存的情况下未将其释放。内存泄漏会导致程序浪费系统内存资源&#xff0c;持续的内存泄漏还导致系统内存的逐渐耗尽&#xff0c;最…

【Linux】进程周边007之进程控制

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.进程创建 2.进程终止 2.…

python调用DALL·E绘画

实现用gpt的api和他对话后&#xff0c;我们试着调用DALLE的api进行绘画 参考文档 OpenAI API 运行代码 from openai import OpenAIclient OpenAI()user_prompt input("请输入您想生成的图片描述: ")response client.images.generate(model"dall-e-3"…

SpringIOC之SimpleTimeZoneAwareLocaleContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…