linux驱动
Jay丶ke
这个作者很懒,什么都没留下…
展开
-
1.Linux之输入子系统分析
在此节之前,我们学的都是简单的字符驱动,涉及的内容有字符驱动的框架、自动创建设备节点、linux中断、poll机制、异步通知、同步互斥/非阻塞、定时器去抖动。其中驱动框架如下:1)写file_operations结构体的成员函数: .open()、.read()、.write()2)在入口函数里通过register_chrdev()创建驱动名,生成主设备号,赋入file_operati...原创 2018-12-02 22:23:52 · 241 阅读 · 0 评论 -
2.Linux键盘按键驱动
在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L、S、空格键、回车键1.先来介绍以下几个结构体使用和函数,下面代码中会用到1)input_dev驱动设备结构体中常用成员如下:struct input_dev { void...原创 2018-12-05 10:21:46 · 792 阅读 · 0 评论 -
3.linux-platform(平台分层分离)机制实现驱动层分离
本节目标: 学习platform机制,如何实现驱动层分离1.先来看看我们之前分析输入子系统的分层概念,如下图所示: 如上图所示,分层就是将一个复杂的工作分成了4层, 分而做之,降低难度,每一层专注于自己的事情, 系统只将其中的核心层和事件处理层写好了,所以我们只需要来写驱动层即可,接下来我们来分析platform机制以及分离概念2.分离概念优点:将所有设备挂...原创 2018-12-05 22:00:47 · 364 阅读 · 0 评论 -
4.Linux-LCD架构分析
如果我们的系统要用GUI(图形界面接口),这时LCD设备驱动程序就应该编写成frambuffer接口,而不是像之前那样只编写操作底层的LCD控制器接口。什么是frambuffer设备? frambuffer设备层是对图像设备的一种抽象,它代表了视频硬件的帧缓存,使得应用程序通过定义好的接口就可以访问硬件。所以应用程序不需要考虑底层的(寄存器级)的操作。应用程序对设备文件的访问一般在/d...原创 2018-12-09 14:57:20 · 615 阅读 · 0 评论 -
5.Linux-LCD驱动
在上一节LCD层次分析中,得出写个LCD驱动入口函数,需要以下4步:1) 分配一个fb_info结构体: framebuffer_alloc();2) 设置fb_info3) 设置硬件相关的操作4) 使能LCD,并注册fb_info: register_framebuffer() 本节需要用到的函数:void *dma_alloc_writecombine(struc...原创 2018-12-10 16:08:37 · 283 阅读 · 0 评论 -
6.Linux-触摸屏驱动
1.先来回忆之前第12节分析的输入子系统其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册到input_handler_list链表中搜索input_register_handler注册函数,就可以看到都是事件处理层里的函数:所以最终如下图所示: 右边的驱动事件处理,内核是已经写好了的,所以我...原创 2018-12-27 22:53:02 · 1055 阅读 · 0 评论 -
7.Linux-USB总线驱动分析
如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序 为什么一插上就有会提示信息?是因为windows自带了USB总线驱动程序,USB总线驱动程序负责:识别USB设备,给USB设备找到对应的驱动程序,提供 USB 读写函数。识别过程:1.新的USB设备一接入 PC,就会把 PC USB口的 D-或 D+拉高,从硬件的角度通知 ...原创 2019-01-23 17:31:17 · 265 阅读 · 0 评论