字符驱动程序-LCD驱动开发

一、驱动程序的框架

总共分为五步:

1、自己设定或者系统分配一个主设备号

2、创建一个file_operations结构体

这个结构体中有操作硬件的函数,比如drv_open、drv_read

3、写一个注册设备驱动函数

需要register_chrdev(major,name,结构体),这一步是构造函数,注册驱动的函数参数有三个很重要:分别是主设备号、驱动名字、驱动结构体

注:为了辅助的创建设备节点,还要写上两个函数

class_create、device_create

4、驱动入口,加载驱动

开始使用register_chrdev函数

5、出口,卸载驱动

使用unregister_chrdev函数

 

二、如何传输数据

1、从应用层到驱动层

使用

copy_to_user函数,驱动数据传输到应用层面

copy_from_user函数,应用层数据传输到驱动

2、从驱动层到硬件层

使用ioremap

使用内存映射的方法,进行寄存器操作

三、LCD驱动的开发

在这个驱动开发的时候,内核中已经有个fbmem.c文件函数把上面的框架弄好了,只需要我们做修改就OK了,fbmem.c这个文件不通用,不能用到所有的MPU和LCD上,所以需要我们修修改改。

fbmem.c只是一个框架,应用到不同的MPU上。起到一个框架中转的作用。

如何使用到不同的LCD上呢?

不同的硬件会在驱动程序中加入不同的fb_info结构体,通过这个fb_info去操作硬件

开发操作步骤:

用fbmem.c框架,然后编写具体的硬件相关驱动程序抽象的fb_info结构体。

1、抓住核心结构体fb_info

2、分配fb_info

使用framebuffer_alloc  (为啥使用它分配)

3、设置fb_info

需要设置var、fbops、硬件相关内容,如上电啥的

4、注册fb_info   \ 注销 fb_info

使用register_framebuffer(struct fb_info *fb_info)函数   (还没清除为啥是这个函数)

四、IMX6ULL的LCD控制器

1、LCD控制器是个啥

不同于单片机对8080接口测 LCD的控制,MPU控制lcd时候,大多数是用内存充当显存,一方面还是显存太贵的原因,MPU速度也比较快 有用内存当作显存的条件。

2、如何设置这个控制器呢

        找到芯片的应用手册,然后查看LCD控制器模块。找到了这个框图

主要我们关注两个方面,关于这个LCD模块,一个是数据传输和处理、和时序的控制

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值