五、kernel修改屏幕配置
2.3、修改屏幕配置
2.3.1、配置
gpio
修改 ./rk_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi
&dsi0_panel {
power-supply = <&vcc3v3_lcd0_n>;
reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&lcd0_rst_gpio>;
rotation = <270>; // 设置屏幕旋转为90度
}; lcd0 {
lcd0_rst_gpio: lcd0-rst-gpio {
rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
};
}; &vcc3v3_lcd0_n {
gpio = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
dsi0_panel
修改 ./rk_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
&dsi0 {
status = "okay";
//power-supply = <&mipi_dsi0_power>; dsi0_panel: panel@0 {
compatible = "simple-panel-dsi";
reg = <0>;
//backlight = <&backlight>;
//reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;
//enable-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
enable-delay-ms = <1035>;
prepare-delay-ms = <399>;
reset-delay-ms = <2000>;
init-delay-ms = <20>;
unprepare-delay-ms = <0>;
disable-delay-ms = <20>; size,width = <66>;
size,height = <156>; dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
dsi,lanes = <4>; panel-init-sequence = [
15 00 02 fe 26
。。。
15 00 02 fe 00
15 00 02 fa 07
15 00 02 c2 08
15 00 02 35 00
39 05 03 51 0d bb 05 c8 01 11
05 c8 01 29
];
panel-exit-sequence = [
05 78 01 28
05 00 01 10
];
disp_timings0: display-timings {
native-mode = <&dsi0_timing0>;
dsi0_timing0: timing0 {
clock-frequency = <178483200>;
hactive = <1080>;
vactive = <1920>;
hsync-len = <8>;
hback-porch = <8>;
hfront-porch = <100>;
vsync-len = <4>;
vback-porch = <8>;
vfront-porch = <8>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in_dsi: endpoint {
remote-endpoint = <&dsi_out_panel>;
};
};
};
}; ports {
#address-cells = <1>;
#size-cells = <0>; port@1 {
reg = <1>;
dsi_out_panel: endpoint {
remote-endpoint = <&panel_in_dsi>;
};
};
};
};
2.3.2、参数分析
size,width = <66>和size,height = <156>;这两行定义了显示面板的物理宽度和高度,单位为毫米。在这个例子中,显示面板的宽度为 66mm,高度为 156mm。
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;这一行设置了 MIPI DSI 的工作模式标志:
MIPI_DSI_MODE_VIDEO:使用视频模式。MIPI_DSI_MODE_VIDEO_BURST:使用视频突发模式。MIPI_DSI_MODE_LPM:启用低功耗模式。MIPI_DSI_MODE_EOT_PACKET:启用数据包结束标志。
这些标志定义了 MIPI DSI 接口的行为。
dsi,format = <MIPI_DSI_FMT_RGB888>;这一行指定了显示数据的格式为 RGB888,也就是每个像素使用 24 位色深。
dsi,lanes = <4>;这里定义了 MIPI DSI 使用的传输通道数。
<4>表示使用 4 条数据通道来传输数据。panel-init-sequence和panel-exit-sequencepanel-init-sequence:这部分是显示面板的初始化命令序列,通常这些命令会发送到显示器,以设置其工作模式、时序和其他显示参数。panel-exit-sequence:这部分是显示器退出时的命令序列,通常用于关闭显示或进入低功耗状态。
disp_timings0: display-timings这部分定义了显示的时序设置:
clock-frequency = <178483200>;:显示时钟频率为 178483200Hz。hactive = <1080>;和vactive = <1920>;:显示的有效像素分辨率为 1080x1920。hsync-len,hback-porch,hfront-porch,vsync-len,vback-porch,vfront-porch:这些是显示的水平同步宽度、水平回扫、水平前扫、垂直同步宽度、垂直回扫和垂直前扫的设置。这些值影响显示的刷新率和屏幕的扫描模式。hsync-active = <0>;和vsync-active = <0>;:这指定了同步信号的极性,0表示低电平有效。de-active = <1>;和pixelclk-active = <0>;:分别表示显示使能信号和像素时钟的极性。
2.3.3、panel-init-sequence 设置规则
panel-init-sequence 是用于定义显示面板初始化时发送的命令序列的部分,它通常会在显示面板上电并准备启动时执行。这些命令直接控制显示器的各个功能,比如电源开关、显示模式、时序设置、颜色格式等。
设置规则:
panel-init-sequence 是一个数组,数组中的每个元素都是一个命令,这些命令按照初始化顺序发送到显示面板。通常,每个命令的格式如下:
<command_length> <command_data...>
其中:
command_length:表示该命令数据的长度。command_data...:实际发送给显示器的命令数据。根据显示器的要求,可能是字节值或者具体的控制字。
一般规则:
命令长度和数据格式:
command_length是 8 位或 16 位数字,表示该命令的数据长度(以字节为单位)。例如,39 05表示这个命令的数据长度为 39 个字节。command_data是命令的具体数据,可以是控制信号、颜色数据、时序数据等。显示器根据这些命令来改变其状态。
控制命令:控制命令通常以
0x15开头,表示“发送控制命令”,后面跟随的字节可能是控制代码和数据。例如:15 00 02 51 ff
这表示发送一个控制命令
0x15,后面紧跟着控制数据00 02 51 ff。数据命令:数据命令通常以
0x39开头,表示“发送数据”,后面是要发送的字节流。例如:39 05 05 2a 00 00 04 37
这表示发送一个数据命令
0x39,后面是数据05 05 2a 00 00 04 37。延迟命令:一些命令可能会包含延迟时间,通常会在
panel-init-sequence中插入一个延迟命令。延迟命令通常以0x15命令为基础,例如:15 00 02 51 ff
后面的数据可能包含延迟时间,表示等待指定的毫秒数。
不同命令的功能:
0x39:通常用于写数据命令,包含显示控制或时序调整数据。0x15:通常用于写控制命令或控制信号。0x29:可能用于显示控制或使能显示。0x2A,0x2B,0x2C:通常涉及像素数据的写入或显示区块控制。
编写时注意事项:
- 确保命令与显示器的数据手册一致。每个显示器的初始化命令和顺序可能会有所不同,必须根据显示器的要求来编写命令。
- 如果显示器要求在某些命令之间等待(如发送完初始化命令后等待几毫秒),应插入延迟命令。
- 初始化序列中的命令顺序非常重要,错误的顺序可能会导致显示器不正常工作。
示例:
以下是一个典型的 panel-init-sequence 示例:
panel-init-sequence = [
39 05 05 2a 00 00 04 37 // 第一个初始化命令
39 05 05 2b 00 00 04 d7 // 第二个初始化命令
15 00 02 51 ff // 控制命令,可能是颜色设置或启用显示
15 00 02 35 00 // 控制命令,可能是显示模式的设置
39 05 03 44 02 6c // 数据命令,可能是时序设置
15 00 02 f0 50 // 控制命令,可能是电源控制
39 05 03 b0 0e 0e // 数据命令,控制显示区域设置
];
五、kernel修改屏幕配置的更多相关文章
- nuc950支持nand的mtd驱动的kernel修改
支持nand的mtd驱动的kernel修改 一.更新nanddriver文件 将新的nanddriver文件nuc900_nand.c放到kernel的drivers/mtd/nand目录下 二.修改 ...
- hi3531 SDK 编译 kernel, 修改 参数
开发环境用户指南上这么写的 3.1 内核源代码 成功安装Hi3531 SDK后,内核源代码已存放于SDK目录下的osdrv/目录中,用户可 直接进入目录进行相关操作. 3.2 配置内核 如果对内核和H ...
- vue全家桶安装以及修改webpack配置新增vue项目启动方式
一.安装node环境(自带npm) 下载地址 二.替换下载源 // 淘宝 NPM 镜像 npm install -g cnpm --registry=https://registry.npm.taob ...
- CentOS工作内容(五)单一网卡配置多个IP
CentOS工作内容(五)单一网卡配置多个IP 用到的快捷键 tab 自动补齐(有不知道的吗) ctrl+a 移动到当前行的开头(a ahead) ctrl+e 移动到当前行的开头(e end) ct ...
- SuSE Linux修改网卡配置
http://blog.chinaunix.net/uid-20765159-id-1850854.html SuSE Linux修改网卡配置 2010 SuSE linux ...
- Android Studio(五):修改Android Studio项目包名
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- discuz论坛移植修改数据库配置
从其他地方拷贝的discuz源码,可能需要修改数据库配置 分别打开discuz目录下面以下三个文件 discuzRoot/uc_server/data/config.inc.phpdiscuzRoot ...
- ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段
Loop at screen会loop处理屏幕上的每一个组件,并对其做相应的处理. SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.PARAMETERS ...
- SQL Server安装完成后3个需要立即修改的配置选项(转载)
你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...
- Cent OS 修改网卡配置
进入网卡修改界面 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 描述网卡设备名称 BOOTPROTO=static 静态IP,这里一 ...
随机推荐
- Momentum Contrast for Unsupervised Visual Representation Learning论文精读
目录 Birth of MoCo Supervised Learning Contrastive Learning MoCo Dictionary Limits of the early learni ...
- Win环境下的批处理命令和JScript脚本结合使用笔记
最近工作有接触到.bat 批处理命令,在Win环境下编写的时候基于以前的编码习惯,觉得批处理语法可读性较差,于是学习了解了一下结合JScript的用法,特此记录. 什么是JScript JScript ...
- kubernetes mysql-StatefulSet报错处理
我们使用网上mysql-StatefulSet集群教程时候mysql-1启动错误,init-error. 第一次尝试解决:我从官网上下载yaml部署依然报错. 第二次尝试解决:网上换各种版本的yaml ...
- 【Linux】3.1 远程登录Linux系统
为什么需要远程登录 Linux 示意图 说明: 公司开发时候, 具体的情况是这样的 linux 服务器是开发小组共享的. 正式上线的项目是运行在公网的. 因此程序员需要远程登录到 centos 进行项 ...
- 【Python】面向对象版学员管理系统
面向对象版学员管理系统 一. 系统需求 使用面向对象编程思想完成学员管理系统的开发,具体如下: 系统要求:学员数据存储在文件中 系统功能:添加学员.删除学员.修改学员信息.查询学员信息.显示所有学员信 ...
- 【Python】使用PyInstaller把代码打包成exe可执行文件
使用PyInstaller打包自己写好的代码 零.需求 最近接到一个小单,需要批量修改文档内容,用Python做好后要打包成exe程序给客户的Win7电脑使用,此时需要用到PyInstaller打包自 ...
- Kubernetes基础教程-通过部署Nginx快速学习基本使用命令
1.验证节点信息 1.1.查看控制平面组件的状态 [root@linux-servertwo software]# kubectl get cs Warning: v1 ComponentStatus ...
- 深入理解 C++ 条件变量:为何 `wait` 钟爱 `std::unique_lock`?
深入理解 C++ 条件变量:为何 wait 钟爱 std::unique_lock?在 C++ 多线程编程中,线程间的协调是一个核心挑战.我们经常需要一个线程等待某个条件满足(例如,等待任务队列非空, ...
- Linux centos8 VPS基本配置之SSH
Linux centos8 VPS基本配置之SSH 最近在使用阿里云的时候,需要安装一些nodejs模块,但是总是安装失败,我已经使用了淘宝镜像cnpm加速,查看了具体原因是有github的依赖. 阿 ...
- C 图上的遍历算法
图上的遍历算法 广度优先搜索 BFS 概念 广度优先搜索(Breadth-First Search)是一种图遍历算法,用于在图或树中按层次逐层访问节点.它从源节点(起始节点)开始,首先访问源节点的所有 ...