以Linux认识的方式写Linux驱动之字符设备驱动

首先我们需要知道的是Linux内核干了什么我们不关心,我们开发驱动程序,只关心怎么才能让Linux认识我们的驱动,当然,对应的驱动也有对应的应用程序,否则,开发这个驱动也没有任何意义了,综上,我们只需要让Linux认识我们的驱动并且与我们驱动相对应的应用程序也让Linux认识即可。

那工作量就下来了,因为毕竟Linux 怎么工作的非常麻烦,而且短时间也不可能搞透,但现在我们只需关心:Linux认识的驱动和对应驱动的应用程序这两件事即可。

关于字符设备驱动字

以Linux认识的方式写Linux驱动之字符设备驱动_第1张图片

如图,这是字符驱动模块的框架,我们套用该框架来写对应驱动程序的入口和出口函数即可。

module_init()和module_exit()就是将写好的前两个函数注册位Linux认识的入口函数和出口函数。

显然这个框架只是告诉Linux了你的出入口函数,但是Linux并不知道你是哪一种设备驱动

下面以字符设备驱动为例继续处理

既然Linux不知道是什么设备的驱动,那我们告诉Linux是什么驱动就好了

在框架的入口函数里面写入

以Linux认识的方式写Linux驱动之字符设备驱动_第2张图片

即在入口函数里面就告诉Linux我们是字符设备驱动,其中200代表的是设备号,每一个设备都有唯一的设备号,且设备号是32位的(设备号的知识自行学习吧,比较简单,不说了这里),显然第二个是名字,第三个参数是要注册的字符设备,后面会用到(对所注册的设备的一些操作要写入里面去)。

同时我们需要在出口函数里面相对应的写入注销字符驱动

 至此驱动完成大半了,还剩下,打开设备、关闭设备等一些基础操作需要加入了。现在对于Linux来说你的驱动我已经认识了,你该告诉我你的驱动我怎么操作啦。

给出具体框架:

以Linux认识的方式写Linux驱动之字符设备驱动_第3张图片

 以Linux认识的方式写Linux驱动之字符设备驱动_第4张图片

 如图里面的内容,一般变更的部分是对应你的东西名字即可。上面的releas对应的就是close关闭操作

现在的操作写好了,但是Linux说了,你是啥我咋知道,你得写入我的内心才行,好的,马上写入!

以Linux认识的方式写Linux驱动之字符设备驱动_第5张图片

 这个名字就是当时注册到Linux的名字即当时注册的时候的名字(上面已经给了,再给一遍):

以Linux认识的方式写Linux驱动之字符设备驱动_第6张图片

 至此,一个字符设备驱动框架完成了。

你可能感兴趣的:(linux,linux,字符设备驱动)