弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述i.MX6ULL驱动开发 | 10 - 修改LCD驱动点亮LCD显示小企鹅logo相关的知识,希望能为你提供帮助。
一、LCD硬件本文中我使用正点原子7’ RGB屏幕,分辨率1024*600。
原理图如下:
二、修改LCD屏幕节点
1. LCD屏幕引脚配置在 ??arch/arm/boot/dts/imx6ull-atk-emmc.dts?
? 设备树描述文件中。
(1)找到 pinctrl_lcdif_dat 节点,该节点描述了LCD数据引脚使用的引脚复用功能和电气属性:
(2)找到 pinctrl_lcdif_ctrl 节点,该节点描述了LCD控制引脚使用的引脚复用功能和电气属性:
因为正点原子开发板硬件设计的原因,LCD接口用了三个SGM3157模拟开关,为了防止模拟开关影响到网络,这里需要将LCD相关引脚的电气属性都修改为0x49,降低LDC相关IO的驱动能力<
.font>
。
(3)找到 pinctrl_pwm1 节点,该节点描述了LCD背光控制引脚使用的引脚复用功能和电气属性:
这里使用GPIO1_IO08作为LCD背光控制引脚。
(4)找到 pinctrl_lcdif_reset 节点,该节点描述了LCD复位引脚使用的引脚复用功能和电气属性:
这里使用GPIO5_IO09作为LCD复位引脚。
2. LCD屏幕参数节点信息修改在 ??arch/arm/boot/dts/imx6ull-atk-emmc.dts?
? 设备树描述文件中,找到 lcdif 节点的补充描述,该节点中描述了LCD屏幕的驱动参数。
(1)LCD使用到的IO
本文所使用的LCD没有用到复位引脚,去除对应设置。
(2)LCD屏幕参数
本文使用的屏幕支持RGB888,修改如下:
(3)LED时序参数
根据本文使用的LCD的数据手册,参数修改如下:
三、运行测试重新编译设备树:
make dtbs
用新的设备树运行:
四、小企鹅logo如何配置默认小企鹅logo显示是开启的,手动开启方法如下。
进入内核menuconfig:
->
Device Drivers
->
Graphics support
->
Bootup logo (LOGO [=y])
->
Standard black and white Linux logo
->
Standard 16-color Linux logo
->
Standard 224-color Linux logo
五、屏幕亮度调节1. 设备树描述节点在 ??arch/arm/boot/dts/imx6ull-atk-emmc.dts?
? 设备树描述文件中,找到backlight节点,该节点描述了背光信息。
2. 测试运行重新编译设备树,运行测试。
make dtbs
3. 手动设置亮度在 ??/sys/devices/platform/backlight/backlight/backlight?
? 目录中,文件如下:
其中brightness文件内容表示当前亮度等级,max_brightness文件内容表示最大亮度等级。
修改 brightness 文件:
echo 2 >
brightness
可以看到屏幕亮度瞬间变暗,注意,这里只是修改当前值,重启后,亮度依然为设备中设置的默认亮度等级。
六、关闭LCD自动熄屏功能Linux内核中,LCD默认10min后熄屏,此时可以外接USB键盘来通过回车键唤醒。
在开发期间,可以不在意功耗,通过修改代码来关闭此功能。
在Linux内核源码中的??drivers/tty/vt/vt.c?
?文件中修改(好家伙,这个文件是Linus写的)。
找到 blankinterval 变量,该变量控制LCD关闭时间,单位是s,改为0即可关闭此功能。
// modify by mculover666, disable lcd auto close.
static int blankinterval = 0;
重新编译内核:
make -j16
七、LCD驱动框架浅析1. 找到LCD对应的驱动在??arch/arm/boot/dts/imx6ull.dtsi?
?设备树描述文件中,找到lcdif节点的兼容性:
在linux内核源码中搜索兼容性"fsl,imx6ul-lcdif",找不到,搜索另一个兼容性:“fsl,imx28-lcdif”。
grep -nR "fsl,imx28-lcdif" *
找到驱动文件:drivers/video/fbdev/mxsfb.c。
2. platform驱动模块注册
这里再往下看就是Linux的Framebuffer驱动,需要另起一篇来详细的写写。
【i.MX6ULL驱动开发 | 10 - 修改LCD驱动点亮LCD显示小企鹅logo】
推荐阅读
- K8S中Pod的进阶(资源限制和探针)
- jupyter重置密码
- paramiko库实现远程登录主机上传下载
- Shell 编程之正则表达式与文件处理器
- Shell 编程实战
- Shell编程之expect免交互
- K8S部署Prometheus+Grafana监控集群
- 掌握linux文件系统inode与bloke &日志管理
- CentOS 8 中dnf管理器如何仅下载不安装软件