驱动开发--【字符设备、块设备简介】【sky原创】

驱动开发

 

字符设备,块设备,网络设备

字符设备

以字节流的方式访问,

不能随机访问

有例外,显卡、EEPROM可以随机访问

EEPROM可以擦写1亿次,是一种字符设备,可以随机访问

读写是直接访问硬件的

flash 擦写次数有限,一百万次,容易有坏块

块设备

能随机访问

以”块“为单位进行访问

块大小一般为512字节

块的大小由硬件决定

是内核进行数据传输的基本单位

硬盘结构:

格式化分区是以柱面为单位的,即硬盘的柱面

如果有10个盘面,就有十个柱面

对于嵌入式设备

如果是flash的话,结构如下:

flash是以块为单位

有些是页为单位,每页又有很多块

字符设备和块设备根本使用的接口不同,

即两种架构

块设备也可以用字符设备的驱动程序的架构来驱动,但是这样效率不高

字符设备一般可以直接访问硬件来读取数据

块设备一般要经过系统缓存来读取数据

比如说以前的老u盘刚传完电影,直接拔下后可能读不出来这个电影,或者运行有问题,这是因为写入的时候是先写在缓存,再异步写入硬件的

linux万物皆文件有例外,网络设备在linux中不体现为文件

操作方式是以socket套接字的方式进行访问

网络设备接收外部世界(本系统之外)的请求

驱动程序的安装方法:

1、直接编译内核

2、需要的时候手动安装

新浪博客:http://blog.sina.com.cn/u/2049150530
博客园:http://www.cnblogs.com/sky-heaven/
知乎:http://www.zhihu.com/people/zhang-bing-hua

时间: 2024-10-14 07:28:42

驱动开发--【字符设备、块设备简介】【sky原创】的相关文章

字符设备/块设备/网络设备

<字符设备> 字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由字符设备驱动提供(一般字符设备都会实现相应的fops集),因此file_operations 也就成为了字符设备驱动的核心. <块设备> 对于块设备而言,ext2,jiffs2,fat等文件系统会 实现针对VFS的file_opertations成员函数,所以设备驱动层将看不到file_opeations的存在.磁盘文件系统和设备驱动会将对磁盘上文件的访问转换成对磁盘上柱面和扇

USB设备驱动开发之远程访问USB设备(一)

By Fanxiushu 2016 05-15  转载或引用本文,请注明原始作者. 使用过vmware的人都应该知道,vmware虚拟机有这样的一个功能, 当在宿主机上插入一个USB设备的时候,通过设置,可以在vmware的虚拟机系统里边能访问到这个USB设备, 而且访问这个USB设备,就跟真的把这个USB设备插入到这个虚拟系统中一样,跟真实的几乎没任何区别. 再看一种情况,假设有两台机器C和S,C 机器是你正在使用的机器, S机器在远端,你只能通过远程控制S. S机器的配置和功能都很强大,大部

linux 块设备驱动(五)——块设备应用层的操作

一: 加载好sbull驱动 [email protected]:/# ls /dev/sbull -l brw-r--r-- 1 root root 254, 16 Mar 25 08:25 /dev/sbull [email protected]:/# 可以看到sbull文件属性是一个块设备, 主设备号是254,次设备号是16 二:对设备进行分区 [email protected]:/# fdisk /dev/sbull [ 266.720648] sbull: unknown partiti

linux总结应用之六 驱动设备块设备中的中断

(一):块设备的中断: 中断函数:  request_irq() 函数将块设备驱动程序的中断服务子程序和特定的中断请求行联系起来. 驱动程序的中断服务子程序的中断过程如下: (1):用户进程发出莫种类型的输入或输出请求(read()系统调用),或许先 通过高速缓冲存储,最终要求进行实际设备的输入/输出. (2):调用设备驱动程序的read()函数,或者requset()函数,将完成输入/输出 操作的指令送给硬设备,现在设备驱动程序的等待操作的发生. (3):一些时间以后,硬设备准备好完成指定的操

USB设备驱动开发之远程访问USB设备(二 USB设备虚拟端)

By Fanxiushu 2016-05-22 转载或引用请注明原始作者 接上文, 在处理好USB数据采集端的问题之后,接下来进入核心的部分,虚拟USB设备端的开发工作. 上文简单介绍过,需要开发虚拟总线驱动来模拟USB设备. 所谓虚拟总线驱动,就是安装于System系统设备下的一个驱动,由PnP管理器创建出一个虚拟的总线PDO设备, 我们的虚拟总线驱动Attach到这个PDO上,形成一个FDO功能设备驱动, 然后在我们的驱动中,根据需要创建出若干个 Child PDO设备, 这些 Child

驱动开发之符号链接和设备名称

windows下的设备是以"\Device\[设备名]”形式命名的.例如磁盘分区的c盘,d盘的设备名称就是"\Device\HarddiskVolume1”,"\Device\HarddiskVolume2”, 当然也可以不指定设备名称.如果IoCreateDevice中没有指定设备名称,那么I/O管理器会自动分配一个数字作为设备的名称.例如"\Device\00000001".\Device\[设备名],不容易记忆,通常符号链接可以理解为设备的别名,更重

Linux字符设备驱动开发的一般方法

.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !important; white-space: pre !important; overflow: auto !important } .output_wrapper a:hover { text-decoration: underline; color: rgb(0, 96, 100) } .out

linux驱动开发之块设备学习笔记

学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.html 1.块设备 块设备将数据按照固定块大小的块中,每个块的大小通常在512字节到32768字节之间,磁盘.SD卡都是常见的块设备. 2.字符设备和块设备的区别: 字符设备 块设备 ---------------------------------------------- 按字节访问 按块进行访问 只能按照数据流访问 随机访问 直接访问设备 挂在文件系统的方式访问

块设备驱动程序设计

一.块设备简介 1.块设备 块设备将数据存储在固定大小的块中,每个块的大小通常在512字节到32768字节之间.磁盘.SD卡都是常见的块设备. 2.块设备VS字符设备 # 块设备和字符设备最大的区别在于读写数据的基本单元不同.块设备读写数据的基本单元为块,例如磁盘通常为一个sector,而字符设备的基本单元为字节. # 块设备能够随机访问,而字符设备则只能顺序访问. 块设备体系架构: VFS是对各种具体文件系统的一种封装,为用户程序访问文件提供统一的接口. Disk Cache 当用户发起文件访