字符驱动程序-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)函数 (还没清除为啥是这个函数)

相关推荐
南天一梦N12 小时前
新的软件研发范式即将到来!
驱动开发·架构·系统架构·aigc·ai编程
电脑小管家13 小时前
蝰蛇鼠标驱动怎么安装?全型号驱动下载方法汇总
windows·驱动开发·计算机外设·电脑·游戏程序
赖small强15 小时前
【Linux驱动开发】 Linux `/proc` 虚拟文件系统深度解析与实战指南
linux·驱动开发·/proc·/proc/sys`·/proc/net
Saniffer_SH16 小时前
【每日一题】PCIe 里的 RefClk (Reference Clock) 到底是干什么的?
服务器·驱动开发·单片机·嵌入式硬件·fpga开发·计算机外设·硬件架构
赖small强17 小时前
【Linux驱动开发】Linux EXT4文件系统技术深度解析与实践指南
linux·驱动开发·ext4·superblock·super block·block bitmap·inode bitmap
范纹杉想快点毕业18 小时前
《STM32深度100问:AI助教工程师的实战问答录》从入门到精通适用入门嵌入式软件初级工程师,筑牢基础,技术积累
arm开发·数据库·驱动开发·mongodb·fpga开发
赖small强19 小时前
【Linux驱动开发】Linux虚拟文件系统(VFS)技术架构深度解析
linux·驱动开发·vfs·inode·ext4·superblock·目录项
icy、泡芙1 天前
TF卡---热插拔
linux·驱动开发
Zeku1 天前
20251125 - 韦东山Linux第三篇笔记【中】
linux·驱动开发
赖small强1 天前
【Linux驱动开发】ESP-Hosted-FG 深度解析指南
linux·驱动开发·esp32·esp-hosted-fg