Linux操作系统下 NAND FLASH驱动程序框架

本文介绍NANDFlash作为块设备在Linux系统中的应用框架,包括其作为字符设备的特性、不同文件系统的组织形式、块设备的读写优化以及NANDFlash协议层与硬件操作层之间的联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备

NAND FLASH就作为一个最底层的块设备。

而我们写驱动,就是要构建硬件与操作系统之间的联系,因此我们需要知道nand flash在Linux操作系统下的框架。

框架如下:

 

1.即使nand flash是一个块设备,它也能作为一个字符设备使用,因为说到底,也只是从寄存器内部读取值而已。

2.对于不同的文件系统,会有不同的文件组织形式。

3.由于块设备的硬件操作繁琐,就像nand flash的读写操作就需要发送地址跟命令后才能读写数据,又比如磁盘的读写就需要选择磁头,寻道,这就花费了大量读写无关的时间

  为了最大限度发挥读写性能,就需要用算法进行读写分类,排序等

4.nand flash协议层也是linux提供的,该成集成了nand flash共性的操作,并且向上提供操作函数

5.nand flash协议层缺少硬件的实际信息,如某些寄存器的地址,它并不清楚,因此某些参数以及nand flash协议层没有实现的函数需要硬件操作层向上提供

 

我们写nand flash驱动就是写的硬件相关操作层

块设备驱动编写流程如下:

 

 

 

 

 

当读写文件请求到来的时候,流程如下

1.通过vfs进入文件系统,

2.文件系统把文件读写转换为块设备读写,其中有运用算法对读写操作进行合并,排序等,最后把块设备读写放进队列

3.循环从队列中取出读写要求,然后用处理函数(blk_init_queue设置)进行处理。这个函数就是连接上层(IO调度)跟底层(硬件操作)的桥梁,当我们调用add_mtd_partitions的时候,就建立了上下层的联系。

4.对不同的处理要求,调用不同的nand的底层处理函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值