Linux下驱动开发_块设备驱动开发(内存模拟存储)
Posted DS小龙哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下驱动开发_块设备驱动开发(内存模拟存储)相关的知识,希望对你有一定的参考价值。
一、前言
块设备驱动块是Linux下3大设备驱动框架之一,块设备主要是针对存储类型的设备设计的驱动,配合文件系统完成数据存储。在应用层的cp、cd、touch、vim、mount等等可以操作文件,可以操作目录的命令都会通过文件系统,通过块设备驱动完成对底层存储设备的访问,实现数据读取或者写入。
所以大致总结下:块设备驱动的目的是给Linux文件系统提供底层接口。
二、编写块设备驱动的思路
既然学到了驱动开发,了解到块设备开发。 那么看这篇文章的小伙伴应该在单片机里裸机方式写过一些flash驱动、SD卡驱动。 对于flash存储设备而言,要存取数据,根据芯片的手册我们主要是封装一个写数据函数和读取函数,封装好了这两个函数才方便上层应用的调用。 对于flash而言常见的读写单位一般是页、扇区。容量大的flash比如SD卡,读写最小单位规定为扇区。 扇区一般大小规定为512字节,那么底层要封装好的函数就是读扇区,写扇区函数。 这两个函数完成与flash空间交互,实现数据存储。
在Linux下完成块设备驱动编写,主要是要完成来至文件系统的存储请求,文件系统让你把数据存到那个扇区,你驱动就去存,文件系统让你从那个扇区读取输出来,驱动就去读取。 只要是完美的处理好了文件系统的请求,那么应用层工作就是一切顺利的。 文件系统不需要管你把数据存在什么设备上。是SD卡?是FlashW25Q64是eeprom?还是RAM内存里?对文件系统而言不关系,它只关心存进去的数据下次可以完美的读取出来便是。
那么为了方便介绍块设备的驱动开发,我这里会先用malloc在驱动申请一块内存来当做FLASH设备,这样就不需要接任何硬件,降低了难度,纯软件的方式理解驱动框架运作流程。
以上是关于Linux下驱动开发_块设备驱动开发(内存模拟存储)的主要内容,如果未能解决你的问题,请参考以下文章
Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)