资源描述:
《基于norflash 的tffs 文件系统移植》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于NorFlash的TFFS文件系统移植 引言 VxTD层。该层提供了Flash识别、擦除、读写、地址映射函数的代码实现,属于Flash设备驱动层,不同种类的芯片由不同的MTD层实现。该层是移植过程中开发人员需要编写和修改的主要部分。 1.2NorFlash芯片连接 NorFlash芯片提供类似SRAM的接口,所以NorFlash可以直接使用内存读取函数memcopy,无需编写特殊的驱动。本次移植实验基于两片相同的norFlash芯片S29GL01GP,每片大小为128MB,两片norFlash芯片都采用16位模式,通
2、过位扩展的方式构成256MB存储空间,支持每次32位数据的读写。NorFlash芯片与CPU地址线连接方式如所示。 CPU的地址线address2与NorFlash芯片的地址线A0相连,参考S29GL01GP芯片手册,应将程序中的地址左移2位,才能正常地向Flash芯片控制寄存器的地址写入数据。例如: *((volatileunsignedint*)(0x555<<2))=0xaaaaaaaa; *((volatileunsignedint*)(0x2aa<<2))=0x55555555; *((
3、volatileunsignedint*)(0x555<<2))=0x80808080; *((volatileunsignedint*)(0x555<<2))=0xaaaaaaaa; *((volatileunsignedint*)(0x2aa<<2))=0x55555555; *((volatileunsignedint*)(0x555<<2))=0x10101010; 执行完以上指令,NorFlash芯片将会执行整片擦除的内嵌算法,即将整个空间的所有位都置为1。 1
4、.3TFFS文件系统移植过程 针对项目中的TFFS文件系统的移植需求,首先需要得到一个可用的BSP包,然后在此包的基础之上添加TFFS文件系统实现所需的文件到项目中,根据已有的模板编写和修改MTD层驱动程序,修改配置文件,逐步编译、调试,最终在目标板上的NorFlash芯片S29GL01GP上搭建起TFFS文件系统。移植流程如所示。 (1)安装Tornado2.0开发环境,获得可以创建工程、VxTD层涉及的需要修改的文件主要是tffsConfig.c和S29GL01GP.c,其中tffsConfig.c中包括两个重要数组mt
5、dTable[和tlTable[。mtdTable[数组中包含了全部的Flash设备识别函数,系统将依据该数组对底层的Flash设备进行识别;tlTable[数组将被TFFS翻译层使用,根据Flash设备种类不同调用不同的格式化和挂载函数。S29GL01GP.c文件中实现了MTD层所有的函数。在设备识别函数中对norFlash的参数进行配置:vol.noOfChip=1;将两片Flash当做逻辑上的一片;因为Flash格式化比较慢,影响实验、调试过程的进行,所以使用Flash的一部分空间搭建文件系统,vol.chipSize=0
6、x800000,将芯片大小定义为8MB(使用norFlash的前面的8MB空间),vol.erasableBlockSize=0x40000,将norFlash的可擦除Unit的大小定义为256KB。 修改config.h中的宏定义(使VxAT {0x00200000,99,1,0x100001,NULL,{0,0,0,0}, NULL,2,0,NULL}, #else {0x00200000,99,1,0x10000l,NULL,{0,0,0,0}, NULL,2,0,NULL}, #endif/*HALF_FO
7、RMAT*/ 该函数的作用是在一个偏移的基础上格式化偏移地址后的Flash空间,第一个参数0x00200000表示前2MB空间预留给系统镜像使用,而使用后面的6MB空间搭建文件系统。系统调用tffsDevFormat函数专门对Flash设备进行预格式化,即在Flash设备上建立元数据,这些数据将被TFFS中间层使用,对Flash设备中的各个块进行定位和管理,并完成文件系统层块到Flash块的映射。usrTffsConfig(0,0,/tffs0)函数的作用是在Flash设备上创建dosFs文件系统。 2测试TFFS文件系统
8、 TFFS文件系统创建完成后,在S29GL01GP.c文件中添加文件系统测试代码,测试文件系统功能是否正常。测试文件系统需要调用I/O系统函数(open()、create()、read()、e()、mkdir()、rmdir()等)。系统启动后,首先调用tffs