Linux设备驱动程序 之 主次设备号】的更多相关文章

主设备号和次设备号 对字符设备的访问是通过文件系统内的设备名称进行的,这些名称被称为特殊文件.设备文件.或者简单称之为文件系统树的节点,它们通常位于/dev目录.字符设备驱动程序的设备文件可以通过ls -l命令输出的第一列中的c字符来识别,块设备也出现在/dev下,但它们由字符b来标识: 通过执行ls -l 命令,可以看到在修改日期之前,有两个用逗号分隔的数字,分别为主设备号和次设备号. 主设备号标识设备对应的驱动程序:linux设备内核允许多个驱动程序共享主设备号: 次设备号由内核使用,用用户…
设备驱动程序简介 更多内容请参考Linux设备驱动程序学习----目录 1. 简介   Linux系统的优点是,系统内部实现细节对所有人都是公开的.Linux内核由大量复杂的代码组成,设备驱动程序可以作为进入Linux内核世界大门的切入口.   设备驱动程序在Linux内核中,是一个个独立的黑盒子,在调用内部接口时某个特定硬件做出响应,这些接口隐藏了设备的工作细节.用户的操作通过独立于特定驱动程序的一组标准化调用执行,将这些调用映射到作用于实际硬件的设备特有操作上,是设备驱动程序的任务.   模…
内核内部使用struct cdev结构来标识字符设备,在内核调用设备的操作之前,必须分配并注册一个或者多个上述结构,为此,我们的代码需要包含<linux/cdev.h>,其中定义了这个结构以及相关的辅助函数: 分配和初始化 分配和初始化上述结构的方式分为两种: 1. 如果打算在运行的时候获取一个独立的cdev,需要使用下面代码: struct cdev *my_cdev = cdev_alloc(); my_cdev->ops = &my_ops; 2. 如果将cdev结构嵌入到…
先来分析一下串口打开的过程: 1.用户调用open函数打开串口设备文件:2.在内核中通过tty子系统,把open操作层层传递到串口驱动程序中:3.在串口驱动程序中的xx_open最终实现这个操作.这里主要有2个点需要我们重点分析,一个是open函数的传递过程,而是串口驱动程序XXX_open函数的实现. 1.open函数传递 打开uart_register_driver函数,里面就是实现注册串口驱动,在最后有一个tty_register_driver函数,这个函数实际上就是注册一个字符设备.在注…
1.主设备号和次设备号(二者一起为设备号): 一个字符设备或块设备都有一个主设备号和一个次设备号.主设备号用来标识与设备文件相连的驱动程序,用来反  映设备类型.次设备号被驱动程序用来辨别操作的是哪个设备,用来区分同类型的设备. linux内核中,设备号用dev_t来描述,2.6.28中定义如下: typedef u_long dev_t;     在32位机中是4个字节,高12位表示主设备号,低12位表示次设备号. 可以使用下列宏从dev_t中获得主次设备号: 也可以使用下列宏通过主次设备号生…
一.Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作.设备驱动程序是内核的一部分,它完成以下的功能: 1. 对设备初始化和释放. 2. 把数据从内核传送到硬件和从硬件读取数据. 3. 读取应用程序传送给设备文件的数据和回送应用程序请求的数据. 4. 检测和处理设备出现的错误…
I/O体系结构 总线系统 PCI(Peripheral Component Interconnect) ISA(Industrial Standard Architecture) SBus IEEE1394 USB(Universal Serial Bus) SCSI(Small computer System Interface) 并口与串口(Parallel and Serial Interface) 与外设的交互 I/O端口:处理器管理了一个独立的虚拟地址空间,可用于管理所有I/O地址.…
系统总线:1.链接CPU.RAM.I/O设备之间的数据流动.例如:PCI.ISA.EISA.MCA.SCSI.USB2.任何I\O设备有且仅能链接一条总线. I\O端口:1.每个连接到I\O总线上的设备都有自己的I\O地址集,通常称为I\O端口.2.一共提供了65536个8位的端口3.可以讲2个8位的看作一个16位的(必须从偶数开始),2个16位的看作一个32位的端口(必须从4倍数开始)4.对端口对读写命令 in.ins.out.outs5.为了提高性能提供控制寄存器.状态寄存器.输入寄存器.输…
(基于4.14内核版本) 为了梳理清楚linux内核中的i2c实现框架,从本文开始,博主将分几个章节分别解析i2c总线在linux内核中的形成过程.匹配过程.以及设备驱动程序源码实现. 在介绍linux内核中i2c框架之前,我们最好是知道怎么使用它,实现一个相应的i2c设备驱动程序demo,然后从使用去深挖背后的实现原理,先知道怎么用,然后再知道为什么可以这么用. I2C的基本知识扫盲 回到本文的重点--I2C,做过裸板开发或者是单片机开发的朋友肯定对I2C不陌生,I2C是主从结构,主器件使用从…
目录 设备驱动程序简介 1.设备驱动程序简介 构造和运行模块 2.内核模块和应用程序的对比 3.模块编译和装载 4.模块的内核符号表  5.模块初始化和关闭  6.模块参数  7.用户空间编写驱动程序 8.模块构造快速参考 字符设备驱动程序 Linux设备驱动程序学习----字符设备驱动程序 本文用来记录Linux设备驱动程序学习笔记的汇总目录.随笔记的增加而修改.…