【驱动】linux系统下nand flash驱动程序框架
2013-09-01 16:10
204 查看
linux操作系统下nand flash驱动框架
当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备NAND FLASH就作为一个最底层的块设备。
而写驱动,就是要构建硬件与操作系统之间的联系,因此我们需要知道nand flash在Linux操作系统下的框架。
框架如下:
![](http://images.cnitblog.com/blog/536940/201309/01160008-1c5b9a0d09db44d094cdf3a38f797d5b.jpg)
1.即使nand flash是一个块设备,它也能作为一个字符设备使用,因为说到底,也只是从寄存器内部读取值而已。
2.对于不同的文件系统,会有不同的文件组织形式。
3.由于块设备的硬件操作繁琐,就像nand flash的读写操作就需要发送地址跟命令后才能读写数据,又比如磁盘的读写就需要选择磁头,寻道,这就花费了大量读写无关的时间
为了最大限度发挥读写性能,就需要用算法进行读写分类,排序等。
4.nand flash协议层也是linux提供的,该层集成了nand flash共性的操作,并且向上提供操作函数
5.nand flash协议层缺少硬件的实际信息,如某些寄存器的地址,它并不清楚,因此某些参数以及nand flash协议层没有实现的函数需要硬件操作层向上提供
写nand flash驱动就是写的硬件相关操作层。
块设备驱动编写流程
块设备驱动编写流程如下:![](http://images.cnitblog.com/blog/536940/201309/01160640-16b4c4c151f24f54a43637865caba3eb.jpg)
当读写文件请求到来的时候,流程如下
1.通过vfs进入文件系统,
2.文件系统把文件读写转换为块设备读写,其中有运用算法对读写操作进行合并,排序等,最后把块设备读写放进队列
3.循环从队列中取出读写要求,然后用处理函数(blk_init_queue设置)进行处理。
这个函数就是连接上层(IO调度)跟底层(硬件操作)的桥梁,当我们调用add_mtd_partitions的时候,就建立了上下层的联系。
4.对不同的处理要求,调用不同的nand的底层处理函数
相关文章推荐
- 嵌入式Linux驱动学习之路(九)Linux系统调用、驱动程序框架
- real6410移植linux2.6.39.4内核(2)-添加nand flash驱动及启动cramfs文件系统
- 概述Linux系统的驱动框架及驱动加载
- 嵌入式Linux驱动学习之路(二十三)NAND FLASH驱动程序
- android驱动之旅-在Ubuntu上为Android系统编写Linux内核驱动程序(3)
- 嵌入式linux之Nand flash驱动程序框架
- AM3353平台上的Linux 3.2.0 IIO子文件系统框架的驱动
- andriod驱动之旅-在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(4)
- Linux NAND FLASH驱动程序框架分析
- Linux驱动程序开发001 - 驱动程序基本框架
- Linux操作系统下 NAND FLASH驱动程序框架
- 概述Linux系统的驱动框架及驱动加载
- Linux下PCI设备驱动程序开发 --- linux 驱动框架(二)
- Linux_S3C2440_CAMIF接口驱动程序(一)驱动和系统相关的学习
- Linux驱动--为Ubuntu系统编写驱动程序入门
- Linux下PCI设备驱动程序开发 --- linux 驱动框架(二)
- linux驱动之网卡驱动程序框架
- 11-S3C2440驱动学习(七)嵌入式linux-字符设备的另一种写法及RTC驱动程序分析和字符设备驱动框架总结
- 09-S3C2440驱动学习(三)嵌入式linux-platform平台总线驱动程序及分离分层构建驱动框架
- 概述Linux系统的驱动框架及驱动加载