关注分享主机优惠活动
国内外VPS云服务器

linux字符设备放在哪个目录中(linux字符设备的文件类型的符号)

今天主机频道就和大家分享一下目录linux字符设备放置的相关知识点。内容详实,逻辑清晰。我相信大部分人还是太了解这些知识了,所以我把这篇文章分享给大家,供大家参考。希望你看完这篇文章有所收获。让我们一起来看看吧。

Linux字符设备放在“/dev”目录中。字符设备是指只能逐字节读写的设备。通常,每个字符设备或块设备将对应于“/dev”目录中的一个设备文件,并且每个设备文件必须有一个主/辅助设备号。具有相同主设备号的设备是相似的设备,并且使用相同的驱动程序。

1.Linux设备驱动分类Linux系统将设备分为三类:字符设备、块设备和网络设备。在这三类中,字符设备相对简单,应用程序通过字符设备文件访问字符设备。本讲座主要介绍字符设备。如果对块设备和网络设备感兴趣,可以参考相关资料,多了解一下。

linux字符设备放在哪个目录中

2.什么是字符装置?字符设备是指一次只能读写一个字节的设备。不允许随意读取设备中的某个数据,应该按顺序读取数据。字符设备是面向流的设备。常见的字符设备包括鼠标、键盘、串口、控制台和LED。

linux字符设备放在哪个目录中

通常,每个字符设备或块设备将对应于/dev目录中的一个设备文件,并且每个设备文件必须有一个主要/次要设备号。具有相同主设备号的设备是相似的设备,使用相同的驱动程序。

Linux用户层程序使用驱动程序通过设备文件操作字符设备或块设备。

你可以通过

cat /proc/devices

命令查看当前加载的设备驱动程序的主设备号。

linux字符设备放在哪个目录中

通过执行/dev目录中的命令

ls -l

您可以看到所有设备文件的主要和次要设备号:

linux字符设备放在哪个目录中

常见的设备档案描述如下:

/开发/高清

如图,在Linux内核中,最左边,用cdev结构来描述字符设备;通过其成员dev_t定义设备号(分为主设备号和次设备号)来确定角色设备的唯一性;角色设备驱动提供给虚拟文件系统VFS的接口函数是通过其成员file_operations来定义的,比如常见的open()、read()、write()等。这些功能实际上是操作硬件设备。

linux字符设备放在哪个目录中

在前一个数字的基础上,我们来看这个数字。字符设备驱动以内核模块的形式加载到内核中。首先,模块加载函数以静态或动态方式获取设备号。然后角色设备初始化函数建立cdev和file_operations的连接,通过注册函数给系统添加一个cdev,完成注册;当模块卸载时,它对应于加载。取消cdev,并释放设备号。

在用户程序中,可以通过open()、read()、write()等系统调用来调用驱动在内核中实现的这些函数。这样就打开了从用户态到内核驱动的路径。

6、编写一个简单的字符设备驱动程序linux字符设备放在哪个目录中

如图所示,编写字符设备驱动程序分为三个步骤:

驱动初始化分为四步,通过调用相关函数实现。

实现对设备的操作,具体操作取决于你想要实现的功能。这里只是基本操作。

驱动注销,注销就是释放资源。

被调用的接口函数的功能如下:

linux字符设备放在哪个目录中

第一个函数是分配函数,动态申请cdev的内存,为结构分配内存空间。

第二个函数是初始化函数,初始化cdev的成员,建立cdev和file_operations之间的关联。

第三个函数注册cdev设备对象,即把字符设备添加到字符设备表中,就像每个人入学时注册一样。

第四个功能是注销驱动程序调用,并从系统中删除cdev对象。

第五个函数释放cdev数据结构占用的内存。

6.1设备编号的申请和发布

字符设备或块设备有一个主要设备号和一个次要设备号。主设备号用于标识连接到设备文件的驱动程序,并反映设备类型。驱动程序使用辅助设备号来区分操作的是哪个设备,并区分相同类型的设备。注册时申请设备号,注销时释放设备号,就像每个人入学时都有一个学号,毕业离开时释放这个学号。

linux字符设备放在哪个目录中

6.2用户空间和内核空间数据传输

当我们在用户程序中调用read()函数时,我们陷入了内核空间。其实我们要通过内核的copy_to_user()函数把内核空间缓冲区的数据复制到用户空间缓冲区。相反,当我们调用write()函数时,内核通过调用copy_from_user()函数将用户空间中的数据复制到内核缓冲区。

linux字符设备放在哪个目录中

未经允许不得转载:主机频道 » linux字符设备放在哪个目录中(linux字符设备的文件类型的符号)

评论 抢沙发

评论前必须登录!