块设备体系
dianhuiren
这个作者很懒,什么都没留下…
展开
-
scsi总线的初始化
1.6.1 scsi总线驱动的初始化块设备底层驱动的核心是scsi总线层驱动,在总线层驱动之上为各种不同的scsi设备驱动,在总线层驱动之下为scsi host驱动。其在内核中的位置如下图所示: 前面我们已经知道了上三层的工作,接下来大部分知识来自底下三层。 在Linux中scsi驱动基本分为三大层:top level,middle level以及l转载 2012-01-09 20:58:53 · 2064 阅读 · 0 评论 -
块设备体系结构分析
1块设备与字符设备的区别1.1从字面上理解,块设备和字符设备最大的区别在于读写数据的基本单元不同。块设备读写数据的基本单元为块,例如磁盘通常为一个sector(扇区),而字符设备的基本单元为字节。所以Linux中块设备驱动往往为磁盘设备的驱动,但是由于磁盘设备的 IO性能与CPU相比很差,因此,块设备的数据流往往会引入文件系统的Cache机制。1.2从实现角度来看,Linux为块设转载 2012-01-09 20:57:25 · 1432 阅读 · 0 评论 -
ATA与scsi的一点认识
对于没有pm的sata host,作为scsi_device设备它的id与作为ata设备的ap->link.devce[id]相对应对于具有pm芯片的sata host, 作为scsi_device 设备它的channel与作为ata设备的ap->pmp_link[channel].device[0]相对应,具体详见ata_scsi_find_dev(libata_scsi.c)转载 2012-01-13 09:51:04 · 1463 阅读 · 0 评论 -
sata DMA 的建立
硬盘的每次读写都会牵涉到DMA的过程,而文件系统对硬盘的I/O请求不是连续的,数据所在的物理内存页也是不连续的,如果能够将这些不连续的内存页组合到一起,再启用DMA操作,那么这些数据就能够一次传输完成,这样也就能高效的传输数据。以Silicon Image 3114为例,可以将不连续的物理内存页和该页的长度组合放到physical region descriptor table里,physic转载 2012-01-13 14:18:48 · 5184 阅读 · 1 评论 -
mtd Nand驱动
大约用了两个礼拜不到的时间为公司的IPcamera系统写了基于MTD的NAND驱动(linux-2.6.22.10内核),目前已可以在该驱动的支持下跑cramfs和jffs2文件系统,另外,该驱动也可以同时支持small page(每页512 Byte)和big page(每页2048 Byte)两种NAND芯片。在此整理一下与NAND驱动相关的概念,结构体,驱动框架和流程,同时分析一下基于M转载 2012-01-16 20:59:13 · 2030 阅读 · 0 评论 -
linux 页面的回收
关于页面的使用在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的thread_info结构和内转载 2012-05-02 14:09:04 · 2738 阅读 · 0 评论