首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 常见主设备设备清单

Linux 常见主设备设备清单# 在Linux系统中,设备通常通过主设备和次设备来标识。主设备用于区分设备的大类,例如硬盘、字符设备等;次设备用于在同一大类设备中区分不同的设备。...,如 cdrom、cdrom1 等 sound card 14 音频设备,如 /dev/dsp(数字音频)、/dev/mixer(混音器) 请注意,不同的Linux发行版和不同的设备驱动可能会有所不同...NVMe 设备的主设备是在设备驱动程序注册到内核时由内核动态分配的,因此,不同的系统,内核版本或配置可能会有所不同。在许多现代 Linux 系统中,NVMe 设备的主设备可能是 259。...不过,你仍然可以在 NVMe 驱动的源代码中找到关于如何注册设备和处理设备的代码。NVMe 驱动的源代码通常位于 drivers/nvme/host 目录下。...函数的返回值就是分配给设备的主设备。 然而,查看驱动程序的源代码并不能直接告诉你在特定系统上的设备是什么,因为这取决于内核在运行时的动态分配。

35410

【i.MX6ULL】驱动开发2——新字符设备开发模板

目前Linux内核推荐的新字符设备驱动API函数,使得驱动的使用更加自动化,本篇就来一起研究下。...先看目录: 1 旧字符设备驱动的弊端 使用register_chrdev函数注册字符设备,需要指定一个设备,这就造成: 需要事先确定好哪些主设备没有使用 会将一个主设备下的所有次设备都使用掉,...2 新字符设备驱动原理 2.1 分配和释放设备 使用设备的时候向Linux内核申请,需要几个就申请几个,由Linux内核分配设备可以使用的设备。...dev_t from, unsigned count) 新字符设备驱动下,设备分配示例代码如下: int major; /*主设备*/ int minor; /*次设备*...加载驱动 驱动加载成功后,可以看到自动申请到的主设备和次设备,如下图,主设备号为249。

57620
您找到你想要的搜索结果了吗?
是的
没有找到

一文秒懂|Linux字符设备驱动

一文秒懂|Linux字符设备驱动 image-20231123091238538 1、前言 众所周知,Linux内核主要包括三种驱动模型,字符设备驱动,块设备驱动以及网络设备驱动。...其中,Linux字符设备驱动,可以说是Linux驱动开发中最常见的一种驱动模型。 我们该系列文章,主要为了帮助大家快速入门Linux驱动开发,该篇主要来了解一些字符设备驱动的框架和机制。.../types.h 主要作用:表示字符设备对应的设备,其中包括主设备和次设备。...主设备:用于标识设备的类型, 次设备:用于区分同类型的不同设备 简单来说,主设备用于区分是IIC设备还是SPI设备,而次设备用于区分IIC设备下,具体哪一个设备,是MPU6050还是EEPROM...alloc_chrdev_region:调用前,未定义主设备和次设备;调用后,主设备以0来表示,以自动分配,并且将自动分配的设备,同样加入到子系统中,方便系统追踪系统设备的使用情况。

52811

Linux设备驱动之字符设备(一)

Linux中设备驱动的分类 从上图可以看到Linux系统将各异的设备分为三大类:字符设备,块设备和网络设备。内核针对每一类设备都提供了对应驱动模型架构,包括基本的内核设施和文件系统接口。...对于红色区域来说,1是主设备,11是次设备。 对于绿色区域来说,7是主设备,0-7代表是次设备。...主设备用来标识对于的设备驱动程序,而次设备则由驱动程序使用,用来标识它所管理的若干同类设备。 设备的表示 在linux系统中,设备用dev_t表示。这是个32位的无符号整数。...随着Linux系统的演变,上述的主次设备的分发可能在将来会发生变化,所以设备驱动程序开发者应该避免直接使用主次设备所占的位宽来获得对于的主设备或次设备。...是在主设备不知情的情况下,让系统给分配设备

7.1K52

从单片机到ARM Linux驱动——Linux驱动入门篇

Linux 下每个设备都有一个设备,设备分为主设备和次设备两部分,关于设备后面会详细讲解。...设备的组成 设备主设备和次设备两部分组成,主设备表示某一个具体的驱动,次设备表示使用这个驱动的各个设备。...这 32 位的数据构成了主设备和次设备两部分,其中高 12 位为主设备,第 20 位为次设备。...因此 Linux系统中主设备范围为0~4095,所以大家在选择主设备的时候一定不要超过这个范围。...设备的分配 1、静态分配设备 注册字符设备的时候需要给设备指定一个设备,这个设备可以是驱动开发者静态的指定一个设备,比如选择 200 这个主设备

3.9K11

Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?

,使用这个主设备; 参数2 name:设备名称; 参数3 fops:file_operations 类型的指针变量,用于操作设备; 如果是动态分配,那么这个函数的返回值就是:操作系统动态分配给这个设备的主设备...这是静态指定的,例如:MKDEV(200, 0) 表示起始主设备 200, 起始次设备号为 0; 参数2 count: 驱动程序指定连续注册的次设备的个数,例如:起始次设备是 0,count 为...0 ~ 9 这 10 个次设备; 参数4 name:设备名称; 补充一下关于设备的内容: 这里的结构体 dev_t,用来保存设备,包括主设备和次设备。...它本质上是一个 32 位的数,其中的 12 位用来表示主设备,而其余 20 位用来表示次设备。...系统中定义了3宏,来实现dev_t变量、主设备、次设备之间的转换: MAJOR(dev_t dev): 从 dev_t 类型中获取主设备; MINOR(dev_t dev): 从 dev_t

1.8K20

linux字符设备驱动基本框架

作为Linux特有的抽象方式,将所有的硬件抽象成文件的读写。 (2)设备类型 字符设备、块设备、网络设备 (3)设备文件、主设备、从设备 有了设备类型的划分,还需要进行进一步明确。...所以驱动设备会生成字符节点,以文件的方式存放在/dev目录下,操作时可抽象成文件操作即可。每个设备节点有主设备和次设备,用一个32位来表示,前12位表示主设备,后20位表示次设备。...主设备和次设备统称为设备主设备用来表示一个特定的驱动程序。次设备用来表示使用该驱动程序的各设备。...4:第四个参数:驱动的名字 由于每个设备只有一个主设备,所以如果用静态分配设备时,有可能会导致分配不成功,所以采用动态分配的方式。...用户进程利用在对设备文件进行诸如read/write操作的时候,系统调用通过设备文件的主设备找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数,这是Linux的设备驱动程序工作的基本原理

5.8K53

2.制作第一个驱动程序

,函数的返回值是主设备*/ register_chrdev (111, “first_drv”, &first_drv_fops); //111:主设备,”first_drv”:设备名 /* register_chrdev...4.然后开发板通过nfs网络文件系统来加载frist_drv.ko 加载之前首先通过 cat /proc/devices来查看字符主设备111是否被占用 ?...0,1,2都已经被控制台占用了,所以从3开始 7.改进底层驱动,使用动态装载: 除了静态装载驱动外,还可以动态装载,让系统自动为我们驱动设备自动分配设备 7.1 修改first_drv_init入口函数和...设置major为0,由内核动态分配主设备,函数的返回值是主设备*/ major =register_chrdev (0, “first_drv”, &first_drv_fops); return...,通过动态分配得出它的主设备是252,然后重创252的测试程序 ?

1K50

字符设备驱动程序接口

返回值:成功返回主设备, 失败返回一个负值 内核中有一个数组要来存储注册的字符设备驱动,register_chrdev注册的字符设备驱动的信息主要就存在这个数组的相应位置,该数组的下标就是主设备,...major:主设备(1 - 255),传递0则由内核自动分配一个合适的空闲的主设备 **const char *name**:设备名称 字符设备驱动新接口 主次设备 在老接口中使用register_chrdev...函数来注册字符设备驱动,但是设备只有major(主设备),而新接口中提供了minor(次设备),内核中通过dev_t类型描述设备,其实质是unsigned int类型,其中高12位为设备,低20.../* linux/kdev_t.h */ // 传入两个参数生成设备(dev_t),分别为主设备和次设备 MKDEV(ma, mi) // 传入设备(dev_t),返回主设备 MAJOR(...(主设备 + 次设备) unsigned int count; // 文件引用计数 }; cdev_alloc 为cdev指针分配内存 /* linux/cdev.h

1.4K30

Linux驱动实践:一步一步编写字符设备驱动程序

目录 API 函数 编写驱动程序 编写应用程序 卸载驱动模块 小结 今天我们继续讨论: Linux 中字符设备的驱动程序。 在上一篇文章中Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?...静态注册:由我们的驱动程序来指定主设备,即参数1:from; 动态注册:由操作系统来分配,驱动程序提供一个变量来接收该设备,即参数1: dev 指针; 另外,在Linux 2.6后期的内核版本中,引入了...$ cat /proc/devices /proc/devices 文件: 列出字符和块设备的主设备,以及分配到这些设备的设备名称。...来查看一下 /proc/devices 目录下显示的设备: $ cat /proc/devices 设备已经注册了,主设备是: 244 。...继续用dmesg命令查看一下: 卸载驱动模块 卸载指令: $ sudo rmmod driver2 此时,/proc/devices 下主设备 244 的 driver2 已经不存在了。

3K30

linux设备驱动第三篇:如何写一个简单的字符设备驱动

linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动。...首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作。 1、主设备和次设备 对于字符设备的访问是通过文件系统中的设备名称进行的。...那么主设备和次设备分别代表什么意义呢?一般情况下,可以这样理解,主设备标识设备对应的驱动程序,也就是说1个主设备对应一个驱动程序。当然,现在也有多个驱动程序共享主设备的情况。...1.1、设备编号的表达 在内核中,dev_t用来保存设备编号,包括主设备和次设备。在2.6的内核版本种,dev_t是一个32位的数,其中12位用来表示主设备,其余20位用来标识次设备。...通过dev_t获取主设备和次设备使用下面的宏: MAJOR(dev_t dev); MINOR(dev_t dev); 相反,通过主设备和次设备转换为dev_t类型使用: MKDEV(int major

2K150

linux 字符设备驱动

Linux设备驱动概述 操作系统内核是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备。 设备驱动程序是操作系统内核和机器硬件之间的接口,系统调用是操作系统内核和应用程序之间的接口。...Linux下设备的属性 设备的类型:字符设备、块设备、网络设备; 主设备:标识设备对应的驱动程序。...一般“一个主设备对应一个驱动程序” 次设备:每个驱动程序负责管理它所驱动的几个硬件实例,这些硬件实例则由次设备来表示。同一驱动下的实例编号,用于确定设备文件所指的设备。 文件名:设备文件名字。...struct file_operations *i_fop;在生成设备文件的时候,这个文件操作成员被赋予一个默认值; 从inode中获得主设备和次设备的宏: * unsigned int iminor...在模块的入口函数中,申请设备,初始化并注册一个cdev结构; 在模块的出口函数中,注销cdev结构,注销设备; 可以通过文件 /proc/devices 查看设备信息,找到动态分配的主设备 手动建立设备文件通过

9.6K45

linux字符设备驱动

Linux设备驱动概述 操作系统内核是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备。 设备驱动程序是操作系统内核和机器硬件之间的接口,系统调用是操作系统内核和应用程序之间的接口。...Linux下设备的属性 设备的类型:字符设备、块设备、网络设备; 主设备:标识设备对应的驱动程序。...一般“一个主设备对应一个驱动程序” 次设备:每个驱动程序负责管理它所驱动的几个硬件实例,这些硬件实例则由次设备来表示。同一驱动下的实例编号,用于确定设备文件所指的设备。 文件名:设备文件名字。...struct file_operations *i_fop;在生成设备文件的时候,这个文件操作成员被赋予一个默认值; 从inode中获得主设备和次设备的宏: * unsigned int iminor...在模块的入口函数中,申请设备,初始化并注册一个cdev结构; 在模块的出口函数中,注销cdev结构,注销设备; 可以通过文件 /proc/devices 查看设备信息,找到动态分配的主设备 手动建立设备文件通过

10.6K65

Linux驱动框架与杂项字符设备框架介绍

Linux驱动框架介绍 1.1 驱动框架分类 Linux驱动框架分为3大类型: 字符设备 --------- 块设备 存储设备 SD 硬盘 网络设备 网卡 无线 有线 字符设备和块设备都会生成设备节点在...、蜂鸣器 驱动都是使用字符设备框架编写 1.2 驱动框架代码模板 示例代码: #include #include static...杂项设备框架 2.1 框架结构介绍 杂项字符设备的主设备固定: 10 主设备: 0 ~ 255 次设备范围: 0 ~ 255 Linux内核寻找驱动节点是依靠设备寻找的。...设备: 主设备(区分类型)、次设备(区分同类型的具体设备) 主设备: 10 ,240 下面是查看串口设备节点、MMC设备节点的详细信息: 下面是杂项设备的模型图: Linux下把无法分类的一些设备都归类为杂项设备...杂项设备的主设备

3K30

嵌入式Linux驱动开发——字符设备驱动框架入门

1 提到了关于Linux的设备驱动,那么在Linux中I/O设备可以分为两类:块设备和字符设备。...mknod命令,第一个参数是设备文件的名字,这个名字要和测试程序中的打开的相一致 第二参数c代表的是字符设备 55代表的是主设备 0代表的是次设备 驱动程序测试通过了,当我们不需要驱动程序的时候,我们应该将他卸载掉...首先关于第一个问题的解决方案很简单,注册驱动程序的时候,如果传入的major为0,那么系统将会自动为这个驱动程序分配主设备,同时这个程序也会返回所分配的主设备。...0,同时把用设备来接收函数的返回值,实际该函数会返回自动创建的主设备 third_class = class_create(THIS_MODULE, "third_drv"); //初始化...252的设备,名字为third_driver,而实际代码中并没有指定对应的主设备,那么也就是说明该设备是由系统自动创建的。

3K20

Linux内核设备驱动之字符设备驱动笔记整理

设备通过设备来标识。设备分两部分,主设备和次设备。 通常,主设备标示设备对应的驱动程序,linux允许多个驱动共用一个主设备; 而次设备用于确定设备文件所指的设备。...在驱动中访问设备应该用中定义的宏。...copy_to_user等函数如果返回值不等于0,则read或write应向用户空间返回-EFAULT 主设备用来表示设备驱动, 次设备表示使用该驱动的设备 在内核dev_t 表示设备, 设备主设备和次设备组成...#include #define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS)) //根据设备获取主设备 #define...(mi)) //根据指定的主设备和次设备生成设备 #include //静态:申请指定的设备, from指设备, count指使用该驱动有多少个设备(次设备

4.6K20

Linux通过设备找到设备的方法

为了管理这些设备,系统为设备编了,每个设备又分为主设备和次设备主设备用来区分不同种类的设备,而次设备用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号。...一个字符设备或者块设备都有一个主设备和次设备主设备和次设备统称为设备主设备用来表示一个特定的驱动程序。次设备用来表示使用该驱动程序的各设备。...关于次设备的主要用途,这篇博客主设备和次设备介绍了部分内容。...1、区分设备驱动程序控制的实际设备; 2、区分不同用途的设备 (misc 系列设备) 3、区分块设备的分区 (partition) 通常,为了使应用程序区分所控制设备的类型,内核使用主设备。...而存在多台同类设备时,为了选择其中的一种,设备驱动程序就使用次设备

6.2K11

Linux驱动之网卡驱动剖析

Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送的接口。...传递的数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中的各层之间传输数据,该结构在整个网络收发过程中贯穿始终...源码分析 笔者基于的是 S5PV210 的 DM9000 驱动,会大体上对 DM9000 的驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 的驱动是基于 platform...; /* dm9000 数据端口 */ db->irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); /* dm9000 irq ...>io_addr; ndev->irq = db->irq_res->start; 以上代码从platform_device中获取 DM9000 资源: 地址端口、数据端口地址和中断,

55.4K20
领券