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 替换原厂的设备树,重新烧录即可。

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

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

相关文章

论文阅读——Flamingo

Flamingo: a Visual Language Model for Few-Shot Learning 模型建模了给定交织的图片或支视频的条件下文本y的最大似然&#xff1a; 1 Visual processing and the Perceiver Resampler Vision Encoder&#xff1a;from pixels to features。 预训练并且冻结的NFNet&#xff…

字符设备驱动开发-注册-设备文件创建

一、字符设备驱动 linux系统中一切皆文件 1、应用层&#xff1a; APP1 APP2 ... fd open("led驱动的文件"&#xff0c;O_RDWR); read(fd); write(); close(); 2、内核层&#xff1a; 对灯写一个驱动 led_driver.c driver_open(); driver_read(); driver_write(…

2024年【北京市安全员-C3证】考试试卷及北京市安全员-C3证理论考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年北京市安全员-C3证考试试卷为正在备考北京市安全员-C3证操作证的学员准备的理论考试专题&#xff0c;每个月更新的北京市安全员-C3证理论考试祝您顺利通过北京市安全员-C3证考试。 1、【多选题】SC型施工升降机…

【Proteus仿真】【Arduino单片机】蓝牙遥控小车

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;L298电机&#xff0c;直流电机&#xff0c;HC05/06蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602…

单片机第三季-第七课:STM32中断体系

1&#xff0c;NVIC NVIC: Nested Vector Interrupt Control&#xff0c;嵌套向量中断控制器&#xff1b; 68个可屏蔽中断通道。 数据手册得向量表结合起始代码查看&#xff1a; 可以理解为数组里&#xff08;__Vectors &#xff09;定义了数据类型为DCD的许多个元素。 下边…

算法与数据结构--散列表与哈希算法

引入 我们知道c的set和unorder_set&#xff08;map本质上也是set&#xff0c;就是把set的存储对象换成键值对结构体&#xff09;&#xff0c;set底层是红黑树实现的&#xff0c;那么unorder_set是怎么实现的呢&#xff1f;这一节就来讲讲实现unorder_set的哈希表&#xff0c;也…

[每周一更]-(第78期):Nginx负载均衡proxy_pass代理模块常用参数配置

0、负载均衡的策略 使用场景示例 # 定义要包含在负载均衡方案中的服务器。 # 最好使用服务器的私有IP以获得更好的性能和安全性。 http {upstream backend {server 10.1.0.101;server 10.1.0.102;server 10.1.0.103;}server{server_name game1.test.com;listen 80;location / {…

java流浪动物保护系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web 流浪动物保护系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

Ubuntu 常用命令之 echo 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 echo 是一个在 Ubuntu 系统下常用的命令&#xff0c;主要用于在终端输出字符串或者变量。 echo 的基本语法 echo [option] [string]echo 命令的参数包括 -n&#xff1a;不输出结尾的换行符。-e&#xff1a;启用反斜杠转义字符。…

【mongoose】 Model.create() no longer accepts a callback 报错解决

在最新版的 mongoose 操作 MongoDB 数据库的时候&#xff0c;当我们插入一条数据时候&#xff0c;会报错 &#xff1a;Model.create() no longer accepts a callback&#xff0c;看了很多文章都说是&#xff0c;版本太高&#xff0c;都妥协选择了降低回旧版本&#xff0c;但我就…

服务器数据恢复-误操作导致xfs分区数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌OceanStorT系列某型号存储MD1200磁盘柜&#xff0c;组建的raid5磁盘阵列。上层分配了1个lun&#xff0c;安装的linux操作系统&#xff0c;划分两个分区&#xff0c;分区一通过lvm进行扩容&#xff0c;分区二格式化为xfs文件系统。 服务器…

YZ系列工具之YZ03:高版本Excel的自定义菜单

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…