博客
关于我
【Linux驱动开发】LCD 驱动实验
阅读量:227 次
发布时间:2019-02-28

本文共 1760 字,大约阅读时间需要 5 分钟。

Linux LCD 驱动编写与配置指南

一、LCD 帧缓冲设备简介

Framebuffer(帧缓冲),简称 fb,是 Linux 系统中用于显示 LCD 显示屏幕像素信息的设备文件。LCD 对应的设备文件通常位于 /dev/fbX(X=0~n)下。通过操作帧缓冲区的 RGB 显存,应用程序可以在 LCD 显示屏幕上实现在字符、图片等信息。

在 Linux 系统中,帧缓冲设备被抽象为 fb_info 结构体,包含了帧缓冲设备的完整属性和操作集合。例如,imx6ull 系统的 LCD 驱动代码通常位于 drivers/video/fbdev/mxsfb.c 文件中。

二、LCD 驱动编写流程

1. 初始化 eLCDIF 控制器

首先,初始化 I.MX6U 系统的 eLCDIF 控制器,配置 LCD 屏幕宽(width)、高(height)、hspw、hbp、hfp、vspw、vbp、vfp 等参数。

2. 初始化 LCD 像素时钟

确保 LCD 显示屏幕的像素时钟(pixel clock)正确运行,是 LCD 显示屏幕正常工作的基础。

3. 设置 RGBLCD 显存

配置 RGBLCD 显存,确保应用程序能够通过显存操作 LCD 显示屏幕。

4. 应用程序显示操作

应用程序直接通过操作显存来控制 LCD 显示屏幕,实现字符、图片等信息的显示。

三、设备树配置与修改

1. 修改设备树主节点

  • 配置 LCD 所使用的 IO 引脚。
  • 修改 LCD 屏幕节点,配置相应的屏幕参数。
  • 修改 LCD 背光节点信息,确保背光 IO 配置正确。

2. LCD 屏幕节点配置

  • 配置 pinctrl_lcdif_dat 子节点,定义 24 个数据线。
  • 配置 pinctrl_lcdif_ctrl 子节点,定义 CLK、ENABLE、VSYNC、HSYNC 等控制线。
  • 配置 pinctrl_pwm1 子节点,定义 LCD 背光 PWM 引脚。

3. LCD 显示屏幕参数

  • 使用 RGB888 模式,一个像素占用 24 位。
  • 根据具体屏幕型号(如 ATK7016 7 寸 1024x600),配置屏幕时序参数。

4. LCD 背光节点配置

  • 节点名称为 backlight。
  • compatible 属性值为 pwm-backlight。
  • 配置 pwms 属性,定义背光 PWM 引脚和频率。
  • 配置 brightness-levels 属性,支持 0~255 级别亮度。
  • 设置 default-brightness-level 属性,配置默认亮度等级。

四、使能 Linux Logo 显示

在 Linux 内核配置中,启用 Bootup logo 选项:

Device Drivers  Graphics support    Bootup logo (LOGO [=y])      Standard black and white Linux logo      Standard 16-color Linux logo      Standard 224-color Linux logo

通过配置 /etc/rc.local 文件,实现 logo 在启动时显示。

五、LCD 自动关闭解决方法

方法一:按键唤醒

参考相关文档,在 /etc/rc.local 中添加按键唤醒脚本。

方法二:修改 blankinterval

drivers/tty/vt/vt.c 文件中,修改 blankinterval 变量,设置为 0 即可关闭 10 分钟熄屏。

方法三:自定义脚本

新建 lcd_always_on.c 文件,编写控制 LCD 始终亮屏的脚本,并在 /etc/init.d/rcS 中添加启动脚本。

六、编译与测试

  • 生成新的设备树文件 imx6ull-iot-emmc.dtb
  • 使用最新的设备树和 zImage 文件启动开发板。
  • 访问 /sys/devices/platform/backlight/backlight/backlight 目录,查看亮度等级和最大亮度等级。
  • 调整屏幕亮度,设置为 7 级(50.19%亮度)。
  • 通过以上步骤,可以实现 LCD 显示屏幕的正常显示和亮度控制,同时解决自动关闭问题。

    转载地址:http://qwzi.baihongyu.com/

    你可能感兴趣的文章
    mysql InnoDB数据存储引擎 的B+树索引原理
    查看>>
    mysql innodb通过使用mvcc来实现可重复读
    查看>>
    mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
    查看>>
    mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
    查看>>
    Mysql join原理
    查看>>
    MySQL Join算法与调优白皮书(二)
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    mysql order by多个字段排序
    查看>>
    MySQL Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    mysql replace用法
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>
    MySQL Server 5.5安装记录
    查看>>
    mysql server has gone away
    查看>>
    mysql slave 停了_slave 停止。求解决方法
    查看>>
    MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
    查看>>