Linux驱动
记录自己在学习的驱动过程中的点滴,也希望各位有心人拍砖
lee_jimmy
长期DJI内推,所有岗位都有,有意愿者可以发送简历到我的邮箱:651074561@qq.com
展开
-
字符设备的新写法
前言之前我写的字符设备中,用到的分配主设备号的函数是int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops); 这种方法是在内核2.6之前比较老版本中常用到的方法,调用register_chrdev后,系统会一次性为你的主设备分配0...原创 2019-05-11 15:07:08 · 338 阅读 · 0 评论 -
I2C驱动程序
I2C驱动程序框架 I2C的协议流程在I2C协议原理简述一文中写过,这里就不再讲解。为了更好的书写I2C客户驱动程序,我们先理一理I2C驱动程序的框架,才能更好的写出属于我们自己的驱动程序。 上图中的I2C总线驱动程序(也就是I2C适配器驱动程序)是芯片商为我们实现的,知道如何收发数据;而需要我们自己实现的I2C客户驱动程序,则知道数据的具体含义。 ...原创 2019-04-27 21:44:06 · 3318 阅读 · 0 评论 -
NAND flash驱动程序(2)
前言 上一篇文章(NAND flash驱动程序(1))我们已经分析过了书写一个nand flash的大致框架是什么样的,现在我们再次回忆一下大致的流程:(1)分配一个nand_chip和mtd_info结构体(2)根据自己的需要,构造nand_chip结构体。以及一些硬件相关的设置(3)最后就是调用nand_scan()和add_mtd_partitions()函数...原创 2019-02-23 23:32:29 · 1170 阅读 · 0 评论 -
NAND flash驱动程序(1)
前言 前面我们已经写过一个块设备驱动程序,用内存来模拟块设备。假如我们想写一个NAND FLASH驱动程序,又应该怎么做呢?我们先看一下kernel代码中别人现成的驱动程序,分析一下流程框架,总结出一个套路,我们就能开始写自己的驱动程序了。 之前写过一个裸板的nand flash程序:NAND FLASH的读操作及原理,可以参考一下。正文 我参考...原创 2019-01-27 21:16:02 · 1839 阅读 · 0 评论 -
Linux的LCD驱动
前言 Linux的源码中本身已经抽象出了LCD驱动的公共部分代码——drivers/video/fbmem.c,对于驱动开发人员来讲,只需要理解这部分的代码并会调用其提供的接口即可。驱动开发人员需要做的就是针对具体的SOC和LCD,设置对应的LCD参数和寄存器值即可。 至于fbmem.c的流程已经有很多文章介绍过了,我这里就不具体介绍了,可以参考一下这篇文章:Li...原创 2019-01-13 13:13:35 · 5927 阅读 · 0 评论 -
触摸屏驱动
前言 之前有篇文章简单介绍过触摸屏的工作原理,可以参考一下:电阻触摸屏原理简述。测出某个点的电压值后,我们就可以通过启动ADC模块,将电压转换为X,Y坐标了。 现在我们想写一个基于Linux系统的触摸屏驱动程序,先把程序的步骤写出来:触摸屏的使用过程:1、按下,产生中断2、在中断程序里,启动ADC转换x,y坐标3、ADC结束,产生ADC中断4、在ADC中...原创 2018-12-24 11:31:06 · 4144 阅读 · 0 评论 -
USB驱动的概念介绍
相关概念1、USB是主从结构所有的USB传输都是从USB主机发起,USB设备没有能力“主动”通知USB主机。例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来取数据,只能被动等待PC机来读。2、USB的传输类型(1)控制传输:可靠的、时间有保证,比如:USB设备的识别过程(2)批量传输:可靠、时间没有保证。比如:U盘(3)中断传输:可靠、实时。比如:USB...原创 2018-11-11 12:37:23 · 3831 阅读 · 0 评论 -
input子系统的架构分析及应用
input子系统的架构以前我们写的裸板程序中,驱动程序一般分为以下几步:(1)构造我们自己的file_operations(2) 注册设备字符register_chrdev,将我们的file_operations告诉内核(3)然后就可以通过入口函数module_init(),调用上面创建的字符设备 上面是一个简单的字符设备的书写框架,但是要做到通用,肯定必须抽象出一...原创 2018-10-21 19:28:34 · 1452 阅读 · 0 评论 -
设备、驱动、总线模型简介
前言 在Linux系统中,有很多的框架提供驱动编写者使用,比如前面我写过的一篇文章:input子系统的架构分析及应用。都是将纯软件相关的代码和操作硬件相关的代码分离开,这样就使得驱动的编写者省去编写大量的、重复的代码,只要专注于底层硬件相关的代码就可以了。这次我们介绍Linux系统中另外一个常见的框架模型:device-driver-bus模型,也就是设备、驱动、总线模型。正...原创 2018-10-28 16:10:16 · 856 阅读 · 0 评论