• 15.1 linux操作系统下nand flash驱动框架2


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

      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的底层处理函数

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/8610921.html
Copyright © 2020-2023  润新知