Linux驱动开发学习笔记-LCD设备驱动

<LCD设备驱动>
即Framebuffer设备。主设备号是29。

1. Framebuffer,简称 fb。fb 是一种机制,将系统中所有跟显示有关的硬件以及软件集合起来,虚拟出一个 fb 设备。
   当我们编写好 LCD 驱动以后会生成一个名为/dev/fbX(X=0~n)的设备,应用程序通过访问/dev/fbX 这个设备就可以访问 LCD。
   NXP 官方的 Linux 内核默认已经开启了 LCD 驱动。

2. Linux 下Framebuffer 驱动的编写流程:
    1). Linux 内核将所有的 Framebuffer 抽象为一个叫做 fb_info 的结构体。
        fb_info 结构体包含了 Framebuffer 设备的完整属性和操作集合。

    2). 每一个 Framebuffer 设备都必须有一个 fb_info。
         LCD 的驱动就是构建 fb_info,并且向系统注册 fb_info的过程。

    3). fb_info 结构体定义在 include/linux/fb.h 文件里面。
         fb_info 结构体的成员变量很多,我们重点关注 var、fix、fbops、screen_base、screen_size和 pseudo_palette。

    4). Framebuffer是一个标准的 platform 驱动,当驱动和设备匹配以后mxsfb_probe 函数就会执行。
         mxsfb_probe 函数的主要工作内容为:
    ①申请 fb_info。
    ②初始化 fb_info 结构体中的各个成员变量。
    ③初始化 eLCDIF 控制器。
    ④使用 register_framebuffer 函数向 Linux 内核注册初始化好的 fb_info。

3. Linux内核已经自带了Framebuffer驱动框架,芯片厂商已经编写好LCD接口驱动程序。
   因此LCD驱动部分不需要修改,只要按照所使用的LCD型号来修改设备树(如屏幕参数等)即可。

4. fb与应用程序的交互:
    对于应用程序而言,它和其它的设备并没有什么区别,用户可以把fb看成是一块内存,既可以向内存中写数据,也可以读数据。
    fb的显示缓冲区位于内核空间。应用程序可以把此空间映射到自己的用户空间,再进行操作。

    在应用程序中,操作/dev/fbX(X=0~n)设备的一般步骤如下:
    ①打开/dev/fbX(X=0~n)设备文件。
    ②用ioctl()操作取得当前显示屏幕的参数,如屏幕的分辨率、每个像素点的比特数。根据屏幕的参数可计算屏幕缓冲区的大小。
    ③用mmap函数,将屏幕缓冲区映射到用户空间。
    ④映射后就可以直接读/写屏幕缓冲区,实现一系列绘点、绘线、绘图和图片显示等函数。


<RTC设备驱动>
RTC 设备驱动是一个标准的字符设备驱动,应用程序通过 open、release、read、write 和 ioctl等函数完成对 RTC 设备的操作。

1. Linux 内核将 RTC 设备抽象为 rtc_device 结构体,因此 RTC 设备驱动就是申请并初始化rtc_device,最后将 rtc_device 注册到 Linux 内核。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值