块设备驱动
文章平均质量分 58
# 块设备驱动
lucky tiger
要一直前进,一直静下心来学习。
展开
-
虚拟文件系统——(sys)
虚拟文件系统概念虚拟文件系统:为了支持各种本机文件系统,且在同时允许访问其它操作系统文件,Linux内核在用户进程(或者说C标准库)和文件系统之间引入了一个抽象层,也就是虚拟文件系统VFS虚拟文件系统类型1、基于磁盘的文件系统ext2/3 FAT所有文件系统都使用面向块的介质,这里对底层块设备通信方法不感兴趣,内核中的驱动程序对此提供了统一的接口。从文件系统角度看,底层设备无非是存储块组成的一个列表,文件系统相当于对该列表实施一个适当的组织方案。2、虚拟文件系统(一种伪文件系统)pr原创 2021-04-15 15:47:37 · 1316 阅读 · 1 评论 -
深入linux内核架构1.3.14——Kernel设备模型基础框架kobject
内核中很多地方都需要跟踪记录C语言中结构的实例(借鉴C++对象,内核里面有许多的结构体实例化),尽管这些对象的用法大不相同,但各个不同子系统的某些操作非常相似,例如引用计数,这导致了代码复制。在内核版本2.5开发期间,内核采用了一般性的内核方法来管理内核对象,所引入的框架并不只是为了防止代码复制,同时也为内核不同部分管理的对象提供了一致的视图,在内核的许多部分可以有效地使用相关信息,如电源管理。一般性内核对象机制可用于执行下列对象操作:引用计数 管理对象链表(集合) 集合加锁 将对象属性导原创 2021-04-08 22:30:47 · 338 阅读 · 0 评论 -
块设备驱动之——block_device、gendisk以及hd_struct之间的关系(一)
1、block_device、gendisk以及hd_struct之间的关系2、对于块设备上已经打开的每个分区,都对应一个block_device的实例。对应于分区的block_device示例通过bd_contains关联到对应于整个块设备的block_device示例。所用的block_device通过bd_disk,指向其对应的通用磁盘数据结构gendisk,这里切记对于一个块设备,多个分区但是只有一个gendisk实例。gendisk实例中part成员指向hd_struct指针的原创 2021-04-08 21:24:33 · 1711 阅读 · 2 评论 -
深入linux内核架构块设备驱动之——磁盘分区描述hd_struct(三)
对于每个分区来说,都有一个hd_struct实例,用于描述该分区在设备内的键。也就是说hd_struct用于描述一个具体的磁盘分区。位置:include/linux/genhd.h struct hd_struct { sector_t start_sect; /* 该分区的起始扇区号 */ sector_t nr_sects; /* 该分区的扇区个数,也就是分区容量 */ sector_t alignment_offset;原创 2021-04-08 20:33:15 · 649 阅读 · 0 评论 -
块设备驱动之——block_device_operations以及gendisk(一)
1、块设备驱动往往为磁盘设备的驱动,但是由于磁盘设备的IO性能与CPU相比很差,因此,块设备的数据流往往会引入文件系统的Cache机制。2、实现角度:Linux为块设备和字符设备提供了两套机制。字符设备的实现:内核例程和用户态API一一对应,用户层的Read函数直接对应内核中的read例程,这种映射关系由file_operation维护。块设备:read、write API没有直接到块设备层,而是直接到文件系统层,再由文件系统层发起读写请求。3、blok_device_operations结构体原创 2021-04-08 10:04:26 · 1791 阅读 · 0 评论 -
USB UDC驱动 gadget驱动
UDC(USB设备控制器)USB设备控制器(UDC)驱动指的是作为其他USB主机控制器外设的USB硬件设备上底层硬件控制器的驱动,该硬件和驱动负责将一个USB设备依附于一个USB主机控制器上。例如,当某运行Linux系统的手机作为PC的U盘时,手机中的底层USB控制器行使USB设备控制器的功能,这时运行在底层的是UDC驱动,手机要成为U盘,在UDC驱动之上需要另外一个驱动,对于USB大容量存储...原创 2019-07-13 16:35:36 · 1441 阅读 · 0 评论 -
USB驱动1
usb总线和pci总线一样,总线的作用都是提供通道,各种设备利用总线通道来实现自己的功能。USB OTG接口中有5条线: 2条用来传送数据(D+ 、D-); 1条是电源线(VBUS); 1条则是接地线(GND)、1条是ID线。基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。它可以为外设提供电源,而不像普通的使用串、并口的设备需要单独的供电系统。...原创 2019-07-13 16:14:54 · 220 阅读 · 0 评论 -
块设备驱动----------代码(2)
#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/types.h> /* size_...原创 2020-01-09 21:25:26 · 335 阅读 · 0 评论 -
块设备驱动-------基本知识(1)
当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等块设备是i/o设备中的一类, 当我们的应用层对该设备读写时,是按扇区大小来读写数据的,若读写的数据小于扇区的大小,就会需要缓存区, 可以随机读写设备的任意位置处的数据,例如 普通文件(*.txt,*.c等),硬盘,U盘...原创 2020-01-09 20:38:08 · 174 阅读 · 0 评论