学少儿英语是什么_在广东省汕尾市去深圳信狮学校学字符设备驱动是什么?

在linux系统中,我们总是说驱动器,我们的驱动器是什么? 它有什么作用呢? 现在让我们从最常见的字符设备驱动程序开始,了解linux驱动程序开发的精髓。

一、什么是驱动?

1、概念:设置操作系统后,如果没有外围硬件的支持,用户想要操作的功能就无法实现。 驱动工程师需要开发相应的驱动程序(硬件),驱动程序代码需要操作硬件,完成相应的工作。

2、在这里我们区别了这两个概念,几乎stm32开发的事,说我以前直接操作寄存器也能实现硬件的驱动,和linux内核的驱动有什么不同? 我们发现linux内核有五项功能:内存管理、流程管理、文件管理、网络管理和设备管理。

1 )、ARM裸机驱动器:此代码不需要取决于其他代码,而是直接以汇编语言或c语言操作硬件寄存器。

2 )、内核驱动程序:该短码必须依赖于内核才能实现相应的功能,并且是用c语言开发的,因此该码必须依赖于一定的框架。

二、驱动的种类

在Linux系统驱动程序中,我们面临着各种硬件设备,因此我们有很多设备驱动程序。 例如,LED驱动程序、LCD驱动程序、触摸屏驱动、相机驱动、鼠标、键盘、USB光盘、硬盘、闪存、网卡、猫和路由器。

1 .我们通常将这些驱动分类如下:

另一方面,字符设备驱动:字符设备驱动是以字节为单位依次被访问的,字符设备是面向流的设备,是我们最常见的设备驱动,常见的是鼠标、键盘、LED设备等。

二)块设备驱动:在访问时是扇区或块( 512字节),在访问时是无序的,包括硬盘、USB盘、磁盘、SD卡等。

三)、网卡的设备驱动程序:网络适配器是计算机的网络连接设备,俗称网卡,网卡通常具有有线网卡和无线网卡。,也称网卡。 这是硬件设备,网卡驱动程序是一套软件,这不太好。

三、驱动框架

通过我们驱动的层次结构模型,可以直观地看到我们的驱动位置有多重要。

四、字符设备驱动

那么,对于刚接触驱动的我们来说,如何快速制作驱动程序呢?

最快的方法是浏览内核源的demo。 例如,我想创建第一个字符驱动程序。 在内核驱动程序目录中找到led驱动程序,以了解其他人是如何实现的。 还有制造商的参考演示。 这是我们最快的学习方法。

2、接下来开始代码

我创建了文字设备文件。 通常,这些步骤包括:

另一方面,定义结构对象struct cdev *cdev

二)、给结构分配空间

三)、cdev结构对象的初始化

四)、分配设备编号

5 )、字符设备驱动程序的注册( cdev与设备编号的关联的过程)

首先,导出一些函数模型,如open、read和write。

然后,在名为file_operations的结构中说明内核具有这两个函数。 通常,在内核include/linux/fs.h文件中定义的函数(如open、read和write )调用在应用程序处理设备文件时调用的对应函数

学少儿英语是什么

然后,将函数传递给内核

学少儿英语是什么

然后,由我们的模块条目函数指定的函数调用上述函数,即我们的mycdev_init函数,完成了对cdev的空格分配、设备编号的申请、字符设备驱动的注册等

学少儿英语是什么

设备编号:主设备编号和辅助设备编号(两者都是设备编号):字符设备或块设备具有主设备编号和辅助设备编号。 主设备编号识别与设备文件连接的驱动程序,反映设备类型。 次要编号用于标识驱动程序正在操作的设备,并标识相同类型的设备。

学少儿英语是什么

最后,用模块的出口函数进行资源释放。

学少儿英语是什么

这是我们制作的化妆文件

学少儿英语是什么

最后,手动创建设备文件

sudo mknod /dev/first_drv (适用于任意路径) c主设备编号次设备编号

sudo chmod 777 /dev/first_drv

您可以使用cat /proc/devices查看添加的设备文件。

学少儿英语是什么

实际上,具体有很多操作程序,想成为专业的IT技术人员,学习这个知识点是不够的,选择专业的训练学校是个好选择,在这里开始自己的新旅程。

大家都在看

相关专题