<背景> 在linux系统驱动程序中,因为要面临各种各样的硬件,字符设备,快设备,网络接口设备,USB设备,PCI设备,平台设备,混在设备 ,设备不同则所对应的驱动模型不同,这就导致我们要掌握众多的驱动模型,能从这些众多的驱动模型中找到共性,则是学号linux驱动的关键 <linux 驱动程序的编写 ...
分类:
其他好文 时间:
2018-03-17 15:24:34
阅读次数:
213
<字符设备> 字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由字符设备驱动提供(一般字符设备都会实现相应的fops集),因此file_operations 也就成为了字符设备驱动的核心。 <块设备> 对于块设备而言,ext2,jiffs2,fat等文件系统 ...
分类:
其他好文 时间:
2018-03-17 15:22:51
阅读次数:
165
Linux中一切皆文件: 文件类型: 一般文件 - 目录文件 d 链接文件 l 块设备 b 字符设备 c soket s 管道文件 p linux 中目录结构: /bin 存放系统可以执行文件 有点类似于Windows中的那个Windows目录 /sbin 存放管理员(super user)用的可以 ...
分类:
系统相关 时间:
2018-03-17 15:21:36
阅读次数:
232
字符设备之混杂设备: 定义混杂设备: struct misdevice{ int minor; //为什么这里只有次设备号,因为混杂设备是一种在 /////////////////////////Linux系统默认主设备号为10 的特殊字符设备。 const char *name; const st ...
分类:
系统相关 时间:
2018-03-17 15:20:22
阅读次数:
222
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备 ...
分类:
系统相关 时间:
2018-03-17 00:41:42
阅读次数:
288
将 DMA 抽象为一个字符设备,在初始化函数中调用 ~~~~ void dma_alloc_writecombine(struct device dev, size_t size, dma_addr_t handle, gfp_t gfp) ~~~~ 函数来分配两段物理地址连续的空间,一段作为源空间 ...
分类:
其他好文 时间:
2018-03-13 00:59:23
阅读次数:
190
一、设备文件??一切皆文件?1、设备文件的类型??设备文件一般默认存放在/dev下???设备类型:???块设备:block,存取单位“块”,磁盘CD软盘U盘??下面我们来列举一个块设备文件的信息???b:代表块设备文件???8:主设备号???0:次设备号??字符设备:char,存取单位“字符”,键盘鼠标显示器??下面列举一个字符设备文件的信息???c:表示这是一个字符设备文件???设备文件:关联至
分类:
其他好文 时间:
2018-03-10 20:32:36
阅读次数:
233
“一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。另外所谓的块设备:是指支持随机访问的存储设备;与此相对应的是字符设备,它只支持顺序访问。另外Li ...
分类:
系统相关 时间:
2018-03-09 22:44:40
阅读次数:
288
首先讲下字符设备控制技术 : 大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如: 改变波特率。 在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...)fd: 要控制的设备文件描述符cmd: 发送 ...
分类:
系统相关 时间:
2018-03-07 23:58:27
阅读次数:
394
1.之前我们学的都是字符设备驱动,先来回忆一下 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等 2.接下来本节开始学习块设备驱动 块设备: 块设备是i/ ...
分类:
系统相关 时间:
2018-03-03 19:26:30
阅读次数:
211