系列文章目录
Linux驱动学习(4) MTD字符驱动和块驱动1
Linux驱动学习(4) MTD字符驱动和块驱动2
Linux驱动学习(4) MTD字符驱动和块驱动3
文章目录
目录
系列文章目录
文章目录
前言
二、MTD块设备驱动初始化和读写
1.MTD块设备初始化
2.MTD块设备读写
总结
前言
前面学习了mtd字符设备驱动的初始化流程和读写流程,其实原理和操作方法和一般的字符设备驱动一致,本章学习的块设备驱动会有较多不一样的地方。
一、mtd块设备是什么?
mtd块设备主要是给vfs提供存储设备随机读写的驱动。相比于字符驱动,块设备驱动有以下几点不同:①,块设备驱动以块的形式访问设备,字符设备以字节。②块设备能够随机访问设备,字符设备只能顺序访问。③,块设备有缓存,能够存储访问请求,在合适的实际对设备进行操作,字符设备往往没有缓存,对设备及时操作。④,块设备驱动不是使用write和read的方式对设备文件进行操作,而是由io调度器将读写封装到request中,发送到块设备驱动的request_queue中。
二、MTD块设备驱动初始化和读写
1.MTD块设备初始化
块设备初始化主要进行三个关键的初始化,①:通过register_blkdev()完成设备号的初始化,②:通过blk_init_queue完成请求队列的初始化,③:通过INIT_WORK完成请求处理函数的初始化。
2.MTD块设备读写
块设备的读写触发方式不一样,不是通过对设备文件的读写方法,而是vfs对文件的操作,会在内核的io调度层封装成块设备请求,然后mtd块设备驱动会处理此请求,最后调用flash的操作命令。
总结
本节主要学习了mtd块设备的初始化方法和读写方法