主页 > 玩家风采 >
东森游戏:基于NorFlash移植TFFS文件系统

发布时间:2018-12-27 10:16 作者:李明发 来源:原创

VxWorks是由Wind River于1983年设计和开发的实时操作系统(RTOS)。它广泛用于通信、军用、航空、航空航天和其他复杂技术领域,具有良好的可靠性和出色的实时性能。目前,硬盘很少用作嵌入式系统中的存储设备,并且通常选择闪存设备作为存储介质。闪存设备具有与硬盘设备不同的特性和操作模式。传统的文件系统无法满足这些要求。目前,有两种主要的解决方案:在操作系统和闪存之间添加FTL转换层,以屏蔽Flash和普通硬盘。区别;在设计新的文件系统时,这个新的文件系统已经考虑到了Flash在所有操作中的各种功能,可以直接由系统引用。 VxWorks操作系统为Flash设备提供的TFFS是使用FTL层的Flash文件系统。中间层负责直接与底层Flash设备交互,并为上层dosFs文件系统提供接口以便于数据访问。在迁移过程中,存在许多问题。例如,由于不同的芯片型号,需要修改底层驱动程序代码。底层设备是NorFlash。与之前的NandFlash不同,需要配置不同的转换层。处理器从16位变为32位。根据地址行更改修改后的代码中的地址等。本文介绍了TFFS文件系统的基本组件,重点介绍了文件系统迁移过程中出现的主要问题。

1TFFS文件系统组成和移植

1.1文件系统组成

根据分层设计思想,TFFS文件系统内部分为4层,结构如图所示,包括:

(1)核心层。该层可以连接其他层以协同工作。它负责接收上层发送的设备操作请求,调用其他三个子级别完成功能请求,分配和释放全局资源。

(2)翻译层。该层是整个TFFS文件系统的核心组件。它主要实现了dosFs和TFFS之间的交互,并支持Flash设备文件系统实现的各种机制,如耗损均衡、错误恢复、垃圾收集、虚拟实地址转换等。设备寿命起着关键作用。

(3)套接字层。该层提供底层块设备硬件的控制功能实现,包括设备检测、Socket层注册等功能,主要提供与特定硬件板相关的驱动程序。此迁移中使用的NorFlash芯片直接焊接到主板上,因此该层无需修改。(4)MTD层。该层提供Flash识别、擦除、读写、地址映射功能码实现,属于Flash设备驱动层,不同种类的芯片由不同的MTD层实现。该层是开发人员在迁移过程中需要编写和修改的主要部分。

1.2NorFlash芯片连接

NorFlash芯片提供类似于SRAM的接口,因此NorFlash可以直接使用存储器读取功能memcopy而无需编写特殊驱动程序。此迁移实验基于两个相同的norFlash芯片S29GL01GP,每个芯片的尺寸为128MB。两个norFlash芯片都使用16位模式,通过位扩展形成256MB存储空间,并且每次都支持读取和写入32位数据。 NorFlash芯片连接到CPU地址线,如图所示。

CPU的地址线地址2连接到NorFlash芯片的地址线A0。参考S29GL01GP芯片手册,程序中的地址应向左移2位,以正确地将数据写入闪存芯片控制寄存器的地址。例如:

执行上述指令后,NorFlash芯片将执行整个擦除的嵌入式算法,即将整个空间的所有位设置为1。

东森游戏:基于NorFlash移植TFFS文件系统

1.3TFFS文件系统迁移过程

对于项目中TFFS文件系统的迁移要求,首先需要获取一个可用的BSP包,然后添加基于该包的TFFS文件系统,将所需的文件实现到项目中,并根据需要编写和修改MTD。现有模板。层驱动程序,修改配置文件,逐步编译、调试,最后在目标板上的NorFlash芯片S29GL01GP上构建TFFS文件系统。迁移过程如图所示。

(1)安装Tornado2.0开发环境,获取可以创建项目的BSP包、VxWorks操作系统可以正常启动,然后通过修改BSP包建立可启动项目。

(2)从Tornado2.2开发环境中的target \ src \ tffs获取TFFS源代码,并将相应的.h文件复制到tffs文件夹,并将tffs文件夹复制到Tornado2.0创建的项目目录中发展环境。 。

(3)将sysTffs.c文件复制到项目目录。必须在sysTffs.c文件中定义Socket层实现代码。 sysTffs.c文件必须实现以下功能:sysTffsInit()初始化函数,它调用所有Socket层注册函数,为Socket层分配一个驱动号; rfaRegister注册功能,该功能将Socket层实现的驱动程序功能注册到TFFS核心层,以便以后在操作Flash设备时使用。修改sysTffs.c中的定义:

#defineINCLUDE_TL_FTL

系统通过包含NorFlash设备的转换层(转换层)选择NorFlash设备的特定格式函数(formatFTL)和安装函数(mountFTL)。

(4)将两个文件tffsConfig.c和S29GL01GP.c添加到BSP包中。

需要在MTD层中修改的文件主要是tffsConfig.c和S29GL01GP.c,其中tffsConfig.c包含两个重要的数组mtdTable [和tlTable [。 mtdTable [该数组包含所有Flash设备识别功能,系统将根据数组识别底层Flash设备; tlTable [该阵列将由TFFS转换层使用,并根据Flash设备类型调用不同的格式化和安装功能。 。 MTD层的所有功能都在S29GL01GP.c文件中实现。在设备识别功能中,配置了norFlash的参数:vol.noOfChip = 1;两块Flash被认为是合乎逻辑的一块;因为Flash格式化速度慢,影响实验、的调试过程,所以使用Flash的部分空间构建文件系统,vol.chipSize =0x800000,定义芯片大小为8MB(使用前8MB的norFlash), vol.erasableBlockSize =0x40000,并将norFlash的可擦除单元的大小定义为256KB。

#defineINCLUDE_DOSFS

#defineNOR_FLASH_OFFSET0

使用修改后的BSP包创建可引导类型的项目。

(5)修改完成后,编译、下载项目。编译后的系统映像通过编程工具写入NorFlash,串口调试助手可以在系统启动后看到屏幕,如图所示。

执行sysTffsFormat()函数,usrTffsConfig(0,0,/ tffs0)函数后,文件系统显示成功创建,如图所示。

通过devs命令,可以看到TFFS挂载点/ tffs0。通过tffsShow命令,可以看到特定TFFS文件系统的参数包括8MB的设备大小。、器件可擦除单元大小为256KB,定义了套接字号、type参数。 TFFS文件系统已成功创建。sysTffsFormat()函数在sysTffs.c文件中定义,您可以看到它的一些参数:

#ifdefHALF_FORMAT

NULL,2,0,NULL},

#其他

NULL,2,0,NULL},

#ENDIF / * * HALF_FORMAT /

此功能的作用是根据偏移量在偏移地址之后格式化闪存空间。第一个参数0x00200000表示为系统映像使用保留了前2MB空间,并使用以下6MB空间构建文件空间。系统调用tffsDevFormat函数来专门预格式化Flash设备,即在Flash设备上创建元数据。 TFFS中间层将使用此数据来定位和管理Flash设备中的每个块,并完成文件系统层块到Flash块的映射。 usrTffsConfig(0,0,/ tffs0)函数用于在Flash设备上创建dosFs文件系统。

2测试TFFS文件系统

创建TFFS文件系统后,将文件系统测试代码添加到S29GL01GP.c文件中,以测试文件系统功能是否正常。测试文件系统需要调用I / O系统函数(open()、create()、read()、write()、close()等)、文件系统函数(rename()、mkdir()、rmdir()等。 )。系统启动后,首先调用tffsDrv()函数进行初始化,然后通过usrTffsConfig(0,0,/ tffs0)挂载文件系统,输入devs命令查看系统中的当前设备,检查挂载是否成功,最后在文件系统级运行测试函数testall()。测试的主要内容包括创建文件夹、删除文件夹、创建文件、删除文件、写入文件、读取文件和其他功能,如图所示。

3控制策略

采用复合控制策略,即检测电网电流和负载电流。检测电网电流的功能是抑制无源部分与电网之间的串联、并联谐振,并东森游戏:补偿电网谐波电压产生的谐波电流。并且主谐波补偿不需要承担,因此控制参数不需要太大的余量。

4实验结果

从等式(2)可以看出,K值越大,系统的补偿效果越好。理想情况K接近无穷大,并且ish接近0以获得最佳补偿效果。然而,在这种情况下,APF的所需容量最大化,这增加了成本。此外,复合控制策略使用具有惯性和延迟的闭环系统。如果K值很大,系统将不稳定,从而影响补偿效果。为了验证上述理论的正确性和有效性,选择不同的K值进行实验。根据中国着名屏蔽制造商的现有数据,该比率降低,电流基波设定为100A,栅极电感为3mH。注入电容为19.6F,五次谐波的幅度为10A,七次谐波的幅度为8A,十一次谐波的幅度为6A,十三次谐波的幅度为3.5A。被动部分参数如图所示。

推荐文章

热门文章

东森游戏平台专业提供东森注册开户、相关产品和服务。东森官方注册是行业中极具实力的品牌销售和服务机构。

CopyRight © 版权所有: 东森娱乐科技有限公司 备案号:浙ICB备82719号