前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统驱动之分析内核自带的LCD驱动程序_基于IMX6ULL

Linux系统驱动之分析内核自带的LCD驱动程序_基于IMX6ULL

作者头像
韦东山
发布2021-12-08 10:33:16
9900
发布2021-12-08 10:33:16
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

分析内核自带的LCD驱动程序_基于IMX6ULL

参考资料,GIT仓库里:

  • IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULLRM.pdf
    • 《Chapter 34 Enhanced LCD Interface (eLCDIF)》
  • IMX6ULL的LCD裸机程序
    • IMX6ULL\source\03_LCD\05_参考的裸机源码\03_font_test
  • 内核自带的IMX6ULL LCD驱动程序
    • 驱动源码:Linux-4.9.88\drivers\video\fbdev\mxsfb.c
    • 设备树:
      • arch/arm/boot/dts/imx6ull.dtsi
      • arch/arm/boot/dts/100ask_imx6ull-14x14.dts

1. 驱动程序框架

Linux驱动程序 = 驱动程序框架 + 硬件编程。 在前面已经基于QEMU编写了LCD驱动程序,对LCD驱动程序的框架已经分析清楚。 核心就是:

  • 分配fb_info
  • 设置fb_info
  • 注册fb_info
  • 硬件相关的设置
1.1 入口函数注册platform_driver
在这里插入图片描述
在这里插入图片描述
1.2 设备树有对应节点
在这里插入图片描述
在这里插入图片描述
1.3 probe函数分析

2. 编写硬件相关的代码

我们只需要针对IMX6ULL的编写硬件相关的代码,涉及3部分:

  • GPIO设置
    • LCD引脚
    • 背光引脚
  • 时钟设置
    • 确定LCD控制器的时钟
    • 根据LCD的DCLK计算相关时钟
  • LCD控制器本身的设置
    • 比如设置Framebuffer的地址
    • 设置Framebuffer中数据格式、LCD数据格式
    • 设置时序
2.1 GPIO设置

有两种方法:

  • 直接读写相关寄存器
  • 使用设备树,在设备树中设置pinctrl
    • 本课程专注于LCD,所以使用pinctrl简化程序

设备树arch/arm/boot/dts/100ask_imx6ull-14x14.dts中:

在这里插入图片描述
在这里插入图片描述
2.2 时钟设置

IMX6ULL的LCD控制器涉及2个时钟:

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

代码里直接使用时钟子系统的代码。

2.3 LCD控制器的配置

以设置分辨率为例。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • 分析内核自带的LCD驱动程序_基于IMX6ULL
    • 1. 驱动程序框架
      • 1.1 入口函数注册platform_driver
      • 1.2 设备树有对应节点
      • 1.3 probe函数分析
    • 2. 编写硬件相关的代码
      • 2.1 GPIO设置
      • 2.2 时钟设置
      • 2.3 LCD控制器的配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档