《VxWorks设备驱动开发详解》笔记——第九章 Flash设备驱动

1.Flash设备总体上分为两类:NorFlash和NandFlash。它们具有完全不同的数据访问方式,但也都是基于块的擦除;


  • NorFlash

(1)适合存储少量代码;

(2)支持芯片内执行(XIP,execute inplace);

(3)具有高传输效率;

(4)写入和擦除速度很低;

(5)可以对单个字节写入而不对周围其他字节造成影响;

(6)有独立的地址线来寻址,可以很容易地存取其内部的每个字节;

(7)占据了1~16MB闪存市场的大部分;

(8)每个块的最大擦写次数是10万次;

(9)很少出现位反转的问题;

(10)在NorFlash器件上运行代码不需要任何的软件支持;


  • NandFlash

(1)是高数据存储密度的理想解决方案;

(2)写入和擦除速度很快;

(3)应用的难度在于对其的管理,且需要特殊的系统接口;

(4)不支持单个字节的写入操作,只能采取面向一个页面的写入操作,每个页面通常为2112个字节(2048个数据字节+64个空闲字节);

(5)使用同一数据线进行操作,每次数据读写操作都要分为几个周期使用这一组相同的信号线进行命令、地址、数据的传输;

(6)主要使用在8~128MB的产品中;

(7)每个块的最大擦写次数是百万次;

(8)容易出现位反转问题,需要同时使用错误探测/错误更正(EDC/ECC)算法;

(9)坏块是随机分布的;

(10)在NAND器件上通常需要驱动程序支持,及内存技术驱动程序(MTD);


2.VxWorks为Flash设备驱动在CBIO中间层之下又提供了一个TFFS中间层来直接负责与底层FLASH设备的交互。TFFS中间层存在的原因在于FLASH不同于硬盘设备的特殊操作方式:FLASH设备写入前必须进行擦除,而且擦除是面向块的,即每次只能擦除一个块。而且FLASH的页面大小与硬盘设备的基本操作单元(扇区)完全不同,所以需要在CBIO中间层与FLASH设备驱动之间插入一个新的层次——TFFS中间层。

3.TFFS中间层对FLASH设备进行封装,提供一个普通硬盘设备接口给上层使用,即通过TFFS中间层,文件系统(CBIO中间层)就像操作一个硬盘设备一样操作底层FLASH设备。

4.FLASH设备驱动内核层次如下图所示

FLASH设备驱动将包含在TrueFFs中间层实现中,具体的由其中的MTD层和socket层两个子层次实现。MTD层完成主要驱动函数(设备读写、擦除)的实现,而socket层则完成设备电源管理、设备探测及设备容量探测函数的实现。

5.TrueFFs初始化

作为中间层和驱动本身,需要在初始化时完成三方面的工作:

(1)内部初始化:包括各子层次所需资源分配;

(2)MTD层和socket层初始化,这两个子层次实现为FLASH设备驱动本身,必须完成这两个子层次向TrueFFs其他子层次(核心层)的注册;

(3)TrueFFs中间层向其上层(CBIO中间层)的注册;

6.TrueFFs初始化过程总结:

(1)TrueFFs中间层中核心层、映射层、socket层驱动在VxWorks操作系统启动过程中完成初始化工作;

(2)TrueFFs中MTD层在调用tffsDevCreate函数进行FLASH设备创建时完成初始化,并同时完成与socket层驱动的对接,二者共同完成FLASH设备的驱动。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章