Flash文件论文

2025-01-23

Flash文件论文(共8篇)

Flash文件论文 篇1

摘要:当前航空电子系统的大容量存储设备一般选用NAND Flash作为存储介质, 需使用具有高可用性和高可靠性的Flash文件系统, 针对现有主流Flash文件系统, 如Reliance、JFFS2、YAFFS2等, 面向航电应用深入对比分析各自工作原理, 给出航空电子系统选用Flash文件系统的建议。

关键词:航空电子系统,大容量存储,NAND flash,文件系统

1 概述

NAND Flash是一种具有高存储密度、低功耗、非易失、大容量、优异的稳定性的存储介质, 非常适用于体积小、功耗低、环境恶劣、可靠性要求高的系统, 当前已被航空电子系统的大容量存储设备广泛采用。[1]随着技术的发展, 航空电子系统中普遍需要通过文件系统来管理大容量存储设备。机载环境的特殊性对文件系统提出了诸多可用性和可靠性方面的需求, 例如崩溃恢复、快速启动、损耗均衡、垃圾回收和高实时性等。

现有很多Flash文件系统, 例如Reliance、JFFS2、YAFFS2等, 都具有上述功能。该文基于机载嵌入式文件系统的需求, 对现有的部分文件系统的工作原理和特点进行对比分析, 对机载嵌入式Flash文件系统进行评估并给出相关选用建议。[2]

2 机载嵌入式文件系统需求

航电系统对大容量存储设备提出了抗恶劣环境、高可用、高可靠和高安全的要求。其中抗恶劣环境、高安全主要采取硬件手段实现, 而高可用、高可靠需软硬件结合保证。因此, 对于机载嵌入式文件系统来说, 具体需求包括:

1) 可用性:可用性是指在机载领域嵌入式系统中系统资源受限的应用情景下, 文件系统能够充分考虑系统资源, 保证实时性, 并能够高效的完成擦除、读写等操作。同时, 文件系统能够根据基于NAND Flash的大容量存储器的操作特点, 做相应针对性设计, 具有NAND Flash的基本管理功能, 如根据NANF Flash的异地更新 (out-of-place) 、有限的擦写次数等特征, 提供垃圾回收、损耗均衡等。

2) 可靠性:机载大容量存储设备的工作环境恶劣, 工作电源不稳定和突发性断电等状况极易导致存储设备中数据的灾难性损坏。因此, 机载嵌入式文件系统的可靠性包含两方面的内容:一是Flash文件系统能够在程序崩溃或系统掉电时, 保证文件系统的一致性和完整性不受影响, 即具备崩溃恢复能力;二是能够通过灵活的校验机制与坏损管理, 维护数据正确性, 确保现存储单元的可靠管理, 以保证数据的一致性和延长物理存储硬件的使用寿命。

3 典型Flash文件系统的实现方法

典型的Flash文件系统的实现方法有两种:

一是基于转译层 (Flash Translation Layer, FTL) 的文件系统。从系统层看来, 转译层将Flash设备被转变为一个可覆写的块设备, 从而可应用传统的磁盘文件系统。FTL把块设备上的文件系统直接应用到闪存上, 直观而方便的隐藏Flash的诸多限制。但转译层往往涉及产权保护, 从而阻碍了Flash文件系统的发展和推广, 同时, 影响了工作效率。

另一类是Flash专用文件系统。针对传统文件系统的问题, 从实施掉电保护, 确保数据可靠性、完整性的角度, 针对Flash的特点设计了一些专用文件系统。Flash专用文件系统可分为两大类, 一类是通用Flash文件系统, 既可用于NOR Flash, 也可在NAND Flash上运行;二是专门针对NAND Flash设计的Flash文件系统。

此外, 用于Flash大容量存储器的具有高崩溃恢复能力的文件系统的工作机制还分为日志型和事务型两种。

日志型文件系统基于日志模型, 会详细记录元数据中的操作和所修改的文件数据信息。每当修改文件的访问权限或者所有权, 则新建一个结点将新元数据信息储存于日志最后。若是更新文件内容, 不会用新数据直接覆盖旧数据, 而会在Flash上合适的区域中存储新建的数据结点, 并用version属性值将新旧数据结点加以区分。一旦系统发生故障, 比如突然掉电或程序崩溃, 由于旧数据还在, 只需重放日志, 即可将文件系统恢复到故障前状态。[3]

由于记录日志既需要将数据写入日志又需要写入外存, 造成一些额外的开销, 学术界开始慢慢的转入对事务型管理模式的研究上。事务型文件系统具有较高的可靠性, 且不要求更快的CPU或是更大的存储空间。该类文件系统保护措施的理念类似于银行事务的思想, 保留原始数据直到新数据写成功并且文件事务完成。在文件事务中, 所有的文件系统修改, 包括目录、文件、的修改, 都将保存在介质中某个空闲并且不含活跃数据的区域。由于新事务的数据被写入到介质的空闲区域, 从而消除了错误发生的可能性。写入到介质的空闲区域, 可保持文件系统的状态。因此, 之前事务的有效数据将一直有效。当写入操作期间发生系统错误时, 如掉电, 事务型文件系统总能提供有效的文件系统数据。

4 典型文件系统原理分析

由于基于转移层的文件系统如EXT2、FAT等对程序崩溃或系统掉电时的崩溃恢复能力较差, 该文主要分析JFFS2、YAFFS2、Reliance三种常用的Flash文件系统。

根据NANF Flash的异地更新策略, 以页为单位进行读写, 以块为单位进行擦除;更新Flash中数据时, 仅是将原有数据页标记为无效, 在空闲页写入更新的数据;这样, 一段时间后需擦除无效页较多的块以回收存储资源, 该过程称为垃圾回收。同时, 每一个块的擦写次数有限, 为平衡设备中每一块的擦出次数以达到最大的设备寿命, 还需引入损耗均衡的思想。下面对三种文件系统的实现原理和各自针对性设计的技术策略进行简要分析。

4.1 JFFS2

JFFS2是一种日志型的专用Flash文件系统。JFFS最初由Axis Communications公司专门为NOR Flash开发, 后由Red Hat对其进行改进, 产生了支持NAND Flash的JFFS2。

JFFS2的数据操作全部按照日志方式保存在Flash设备中, 完全按照日志进行管理。JFFS2的基本结构为一长列的节点, 每个节点包含了文件的实际数据或者关于文件的其他一些信息。[4]

以垃圾回收为基础, JFFS2具有简单的损耗均衡算法, 也为垃圾回收的处理机制。JFFS2将闪存上所有擦除块分为三个队列, 分别为干净块链表 (clean_list) 、脏块链表 (dirty_list) 和空闲块链表 (free_list) , 基于这些链表来完成垃圾回收操作。JFFS2文件系统基于概率算法来选定垃圾回收操作的目标链表。系统定义全局变量jiffies, 表示系统时钟;当jiffies模100不为0时, 系统对脏块链表中某一块进行回收操作;当jiffies模100为0时, 系统对干净块链表中某一块进行回收。[5]

尽管JFFS2解决了Flash存储器文件系统的一些问题, 但是随着Flash存储器的容量越来越大, 它也表现出一些严重的缺陷。首先, JFFS2的挂载时间比较长;其次, 随着容量的增加, 其内存消耗增大;最后, 它不能保证损耗平衡的确定性。

4.2 YAFFS2

YAFFS2是一种日志型的专用Flash文件系统。YAFFS文件系统由Aleph One公司开发, 专为NAND Flash存储器设计的嵌入式文件系统, 适用于大容量的存储设备。YAFFS2是YAFFS的第二个版本。

YAFFS2中, 文件是以固定大小的数据块进行存储的。这种实现依赖于它能够将一个数据块头和每个数据块关联起来。每个文件 (包括目录) 都有一个数据块头与之相对应, 数据块头中保存了ECC和文件系统的组织信息, 用于错误检测和坏块处理。[6]YAFFS2把这个数据块头存储在Flash的备用空间中, 充分考虑了NAND Flash的特点。当文件系统被挂载时, 只须扫描存储器的备用空间就能将文件系统信息读入内存, 并且驻留在内存中, 不仅加快了文件系统的加载速度, 也提高了文件的访问速度。

YAFFS2也提供损耗均衡和垃圾回收功能。在YAFFS2文件系统中设立Blockstate结构用于表示擦除块的各种状态, 如空、满、已损坏和分配等状态。另有B1ock Info结构, 用于描述块属性, 记录块内剩余空闲页数、块的状态等信息。YAFFS2采用数组管理所有块, 分配空间时, 按顺序对存储空间进行分配, 从而实现损耗均衡。YAFFS2采用综合垃圾回收策略, 具有两个垃圾回收线程, 分别负责在不同情况下完成垃圾回收任务。[7]一个线程具有最低优先级, 只在系统空闲时才会启动, 该线程采用贪心算法, 针对具有最多无效数据的擦除块, 这样可以一次回收尽可能多的存储空间。另一个线程具有最高优先级, 当系统负载较大, 需要很多存储区空间时, 启动该线程, 它最先适应算法以便提高执行速度。

但是上述繁复的日志操作会增加一定的内存消耗, 也会增加系统的加载时间。

4.3 Reliance

Reliance是Datalight公司开发的事务型文件系统, 结合Flash FX转译层可用于管理Flash设备。[8]

Reliance基于事务模型来保护文件系统并且维护数据完整性。Reliance可以不必进行数据恢复操作, 保留原始数据直到新数据写成功并且文件事务完成, 如果数据写入期间发生中断, 文件系统的原始状态还保存在介质中, 使得文件系统总能处于有效状态。

Reliance的垃圾回收功能由FTL层的Flash FX组件完成。在Flash FX中, 将大量无效块划入擦除区域并请求回收操作。在垃圾回收过程中, 先复制擦出区域的有效数据到空闲备用擦除区, 然后擦除旧区域并将其作为新的备用擦除区。Flash FX的损耗均衡包含动态损耗均衡和动态损耗均衡两部分操作。动态损耗均衡算法针对频繁更新的数据和较少使用的存储空间。当更新数据或者写入新数据缺乏足够空间时, 则会触发动态垃圾回收。该算法将从当前可用块中确定一个擦除次数最少的块作为目标块, 并将有效数据写入该目标块。每次都对使用次数最少的可用块进行操作, 一定程度上达到均衡利用频繁更新或较少损耗的设备块。然而, 一些数据写入数据块后, 基本不会再更新 (比如地图信息) , 这些块称为冷数据块。这些冷数据块无法被动态损耗均衡算法顾及, 导致其使用频率很低。作为补充, 静态损耗均衡算法能够有效地解决该问题。静态损耗均衡算法, 会比较擦除次数最多的块和次数最少的块, 二者擦除次数的差超过一定阈值时, 交换二者所存储的数据, 目的是在满足损耗均衡的同时, 尽可能减少存储器总的擦除次数。

基于事务型理念, Reliance文件系统在大容量介质中可快速启动, 并可长时间保持有效状态, 系统初始化不需要执行存储介质检测或扫描从而减少加载时间。

5 测试结果与理论分析

文件系统应针对NAND Flash的特点, 提供高效的损耗均衡和垃圾回收机制的同时, 尽可能提高加载速度和读写性能, 满足实时性。基于广泛的资料收集和实验验证, 我们对上述三种文件系统对比分析。

在加载时间方面, Flash文件系统的加载时间已经为系统启动延迟的最重要的原因, 当Flash容量和存储数据大小都很庞大时其影响更为明显。文件大小的改变、整个分区的利用率, 都将影响到文件系统的加载时间。我们很容易通过加载指令来测量加载时间。

由于基于事务结构的Relaince在加载速度上比日志型的JFFS2和YAFFS2文件系统存在明显的优势。

在读写性能方面, 影响Flash文件系统读写性能的因素非常复杂, 涉及映射机制、垃圾回收算法、Flash结构、压缩算法等等。文件系统标准检测程序Benchmark可以用于直接测试读写性能。由此, Relaince的读写性能优于JFFS2和YAFFS2。

由图可知, 由于日志型文件系统在系统启动和读写操作过程中加入一些日志记录操作, 从而增加了加载时间, 降低了读写数据的速度, 而在事务型文件系统中, 通过事务型操作改善了前者的问题。上述测试结果符合原理分析。

6 结束语

本文针对航电需求, 分析了典型Flash文件系统的实现方法和工作原理, 对JFFS2、YAFFS2和Reliance进行了分析比较, 认为针对NAND Flash的专用文件系统JFFS2和YAFFS2的功能完备、原理简单高效, 而通用文件系统Reliance的工作机制更为复杂;但基于事务模型的Reliance相比于基于日志型的JFFS2和YAFFS2, 具有相近的可靠性的同时, 可以保证更高的性能, 对航空电子系统中Flash文件系统的选择具有重要意义。

参考文献

[1]陈智育.嵌入式系统中的Flash文件系统[J].单片机和嵌入式系统应用, 2002 (2) :5-8.

[2]Chin-Hsien Wu, Tei-Wei Kuo, Li-Pin Chang.Efficient initialization and crash recovery for Log-based file systems over flash ACM symposium on Applied computing, 2006:837-863.

[3]MMCA Technique Committee[C].The Multimedia Card System Specification.US:Multimedia card association, 2003.

[4]Li-Pin Chang.On efficient wear-leveling for large-scale flash memory storage systems.Proceedings of the 2007 ACM symposium on Applied computing, 2007:1126-1130.

[5]张小平.嵌入式系统中NAND Flash文件系统的研究[D].太原:太原理工大学, 2010:17.

[6]CHEN TIANZHOU, HU WEI.Smart File System:Embedded File System Based on Nand Flash[C].IEEE Computer Society, 2006, 14 (4) :65-66.

[7]张磊.基于闪存的嵌入式文件系统的研究与实现[D].成都:电子科技大学, 2005:1-2.

[8]Datalight Reliance?Developers Guide for Wind River VxWorks.Datalight, 2006.

Flash文件论文 篇2

我经过长时间的使用,也不经意地总结了七条为Flash减肥的小方法,希望通过这里与各位闪客们分享和研究。

1、尽量减少文字的叙述。

2、应尽量把图画转为“电影剪切”或“图形”。

3、导入的图片格式最好是*.jpg或*.gif这两种网络盛行的压缩图片格式(如果没有这两种格式的图片,就ACDSee等软件进行转换即可),

4、如果需要导入音乐文件,最好是*.MP3,这样你的源代码不会太大。

5、导入音乐后,在它的属性设置里去掉“使用文件默认品质”,然后,在它的品质设置如下:“压缩”选择MP3;“位比率”选择16Kbps;“品质”选择快速。如此设置之后,3MB的MP3输出后不足500KB,音质只有少量的损失,这样也可以算是音乐DIY吧!

6、如果非特殊需要,就不要把图片“打碎”,应该尽量在图片帧中进行。

7、不要在同一帧放置过多的“电影剪切”,否则可能使你的*.SFW成倍增肥。

Flash文件论文 篇3

关键词:FLASH,程序文件系统,FAT格式

随着嵌入式技术的发展, 许多嵌入式设备的文件系统都建立在FLASH上。FLASH存储器具有容量大, 可多次擦写和掉电数据不丢失等优点。本文以并行FLASH HY29LV160B为存储芯片, 分析和设计一个主要用于存储应用程序、设备驱动程序、动态链接库等文件, 提供创建、删除、修改、读写文件等功能的程序文件系统。

1. 程序文件系统的结构分析

程序文件系统是基于FAT16格式的文件系统, 与标准FAT格式相比还存在部分差异:标准FAT文件系统支持子目录, 程序文件系统不支持子目录;标准FAT格式的FDT项的每项为32字节, 包含文件名、扩展名、文件属性、创建时间、起始簇、文件大小这些信息, 程序文件系统没有文件属性、创建时间, 多出文件显示名字段, 总共48字节;标准FAT文件系统是8.3文件名格式, 程序文件系统为17.3格式。

程序文件系统的整体结构与FAT文件系统一样, 采用FDT、FAT表、数据区这三部分来实现文件系统, FDT表主要存放文件注册信息, 通过FDT表的信息可以找到文件起始数据簇的位置。FAT表可以查找到文件占用了那些数据簇, 并且指示对这些数据簇的使用顺序, 可以说是一种链式结构。

FDT表是由很多个FDT项组成, 每个FDT项代表一个注册的文件, 如果这个FDT项的文件名第一个字节非0时表示文件有效;如果这个FDT项的文件名第一个字节为0xFF时表示该项为空, 没有注册文件;文件名第一个字节为0时表示文件被删除, FDT项无效。

FAT表是由很多个FAT项组成, 每一个FAT项代表一个数据簇的使用情况, 当这个FAT项的内容是未分配的簇时, 是可以被分配的;当FAT项的内容是坏簇时, 不能分配给任何文件;当FAT项的内容是释放簇时, 表示该簇原来分配给一个文件, 后来删除过这个文件, 虽然释放簇是可以再利用的, 但是不能分配给一个文件, 仅当没有未分配的簇时, 整理一次FAT表, 将释放簇变成未使用的簇时才能将对应数据簇分配给文件使用;当FAT项的内容非以上几种时, 说明数据簇已经分配给文件使用, 这种情况下, FAT项对应的数据簇是不能被分配的, FAT项的内容由两种可能值:文件的最后一簇, 下一簇的簇号。当FAT项的内容是文件最后一簇时, 表示文件占用的数据簇链结束, 否则FAT项的内容是文件占用下一数据簇的簇号, 也就是下一个FAT项的项号。

2. 程序文件系统中文件数据的定位

文件数据位置的确定是通过FAT表和FDT表和起来决定的, 首先通过查找FDT表得到文件基本信息, 取得文件起始簇的簇号, 文件起始簇的簇号对应的数据簇便是文件的第一块数据, 然后查找FAT表, 查找文件起始簇的FAT项, 得到下一簇的簇号, 这个簇号对应的数据簇便是文件的第二块数据, 依次推算, 如果FAT项的内容为文件最后一簇时表示文件的数据链结束。

下面我们用一个例子来说明, 假设文件系统运行一段时间后, FAT表和FDT表变成如表1和表2所示。

通过FDT表和FAT表得知:

Name1文件起始为0, 查找FAT表得知文件占用的链为0→1→3→6

Name2文件起始为2, 查找FAT表得知文件占用的链为2→4

Name3文件起始为5, 查找FAT表得知文件占用的链为7→5→8→……

以上得到的链便是文件数据情况, 例如簇大小为512字节, 数据区起始地址0x10000, 那么Name1文件的数据为起始地址为0x10000、0x10200、0x10600、0x10c00的数据簇。通过Name3文件占用的数据簇信息可以看出, 文件使用簇的顺序与簇号的顺序没有关系, 文件某簇的簇号可以比下一簇的簇号大。

如果删除Name1文件后这两个表将变为如表3和表4所示。

Name1文件删除后仅仅时文件在FDT注册取消, 文件占用链被释放, 文件数据还保存在FLASH。由于文件占用链被释放, 因此找不到Name1文件的占用链顺序, 文件也不能恢复。

如果这时FAT表中没有未分配的簇, 但是却需要分配一个簇, 这就需要整理FAT表, 将那些释放的簇变为未分配的簇, 整理后FAT表将如表5所示:

此时第0簇将可以再分配给其他某个文件。

由于定义释放数据簇标志为0x00, 与第0簇冲突, 因此在定义指向下一簇的簇号时, 把指向的簇号+1, 也就是说, 簇从逻辑上讲时从1开始 (数组从0开始) 。例如FAT表中第1个FAT项内容为3, 代表下一个数据簇为第2簇 (对应FAT表第2项) 。

3. 程序文件系统的可靠性保证

掉电保护是为了在写文件系统重要数据时掉电, 使得数据丢失或写入错误数据后能够进行恢复的一种保障机制。主要是通过掉电保护状态项和备份扇区进行恢复, 恢复的途径有两种:一种是继续完成未完成操作, 另一种是恢复到操作前的状态。因此, 在进行掉电保护后的操作只有操作成功或失败两种状态, 如果成功数据写入正确;如果失败, 要将数据恢复到写前的状态。

只有写重要数据时需要用到掉电保护, 非重要数据或不影响文件系统的数据不需要掉电保护, 下面列举需要用到掉电保护的几种情况:

写FAT表

写FAT表有这几种情况:分配一簇给某个文件、删除一个文件时释放文件占用的簇、整理FAT表。对于中间一种情况不需要使用到备份扇区, 对于第一种情况和最后一种就需要用到备份扇区。

写FDT表

写FDT表有这几种情况:创建一个文件、修改文件信息、整理FDT表、删除文件。对于中间两种情况需要用到备份扇区, 其它情况不需要用到备份扇区。

整理数据扇区

对数据扇区的整理主要是由于要写入的数据簇不空, 需要擦除, 但是又不能破坏其它文件的数据。整理数据扇区时需要用到备份扇区。

针对以上几种情况, 文件系统需要做的掉电保护步骤为:

步骤1:找一个未用的掉电保护状态项

步骤2:写掉电保护状态标志为‘准备掉电保护’

步骤3:写入掉电保护信息, 如果要用备份扇区的应该写备份扇区

步骤4:写掉电保护状态标志为‘开始写数据’

步骤5:做要保护的工作

步骤6:写掉电保护状态步骤为‘完成掉电保护’

当步骤1、2、3时掉电表示写掉电保护信息未完成, 此时掉电保护是无效的。步骤4、5时掉电表示已经做好掉电保护, 但是重要数据写入未完成, 掉电保护有效。而步骤6时掉电表示已经完成掉电保护, 数据已经写入, 不需要进行恢复。

用到掉电保护的情况很多, 因此会对备份扇区的寿命产生影响, 为了尽量减少备份扇区使用的次数, 还要保证数据写入正确, 归纳程序文件系统的特征后发现:修改FDT表和FAT表出现在写文件的时候, 而写文件的过程中掉电, 文件的数据是不正确的, 仅当文件数据全部写入后文件数据才有效, 文件数据有效只有在关闭打开文件后, 因此在对文件进行簇分配、写文件时文件长度变化时不写入FLASH, 当关闭文件时将这些信息一次性写入FLASH, 如果写文件过程中掉电, 下次上电时由于未保存文件新分配簇的数据, 文件保持写前的状态。

4. 结束语

本文详细分析了以并行FLASH HY29LV160B为存储介质的程序文件系统的分析与设计, 该文件系统能有效进行管理应用程序、设备驱动程序、动态链接库等程序文件, 通过掉电保护和恢复来保证文件系统的可靠性和完整性, 有较高的安全性。该文件系统适合于多种采用FLASH作为存储介质的嵌入式设备, 具有较高的使用价值。

参考文献

[1]陈智育.嵌入式系统中Flash的文件系统[J].单片机与嵌入式系统应用.2002 (2)

[2]扶小飞, 郑善贤.一种Flash文件系统的设计和实现[J].微计算机信息.2010 (5)

Word文件变Flash的方法 篇4

如果想把自己的Word文件发布到网上和别人共享,一般都是直接保存为网页格式,但是这样会改变原先的排版格式,其实我们可以用“FlashPaper”将Word文件保存为Flash,而且一点也不会影响原来的排版格式,

下载安装好FlashPaper后会在Word程序中多了一个“FlashPaper”的菜单,打开要进行转换的文件,接着点击菜单“FlashPaper―ConverttoMacromediaFlash(.swf)”来选择保存Flash文件的目录和文件名,然后就可以进行转换了,

转换完成后会在指定的目录下生成一个Flash文件,打开就可以看见效果了,不错吧,文档的格式一点都没有变吧,而且还可以点击右上角的打印按钮来直接打开里面的内容呢。

Flash文件论文 篇5

在ASP.NET网页制作中经常会插入Flash文件,具体的方法有三种,一种是使用adobe公司推荐的object、embed方法,第二种是使用swfobject脚本,第三种是使用第三方控件完成。

2 使用object脚本插入Flash

具体代码如下:

采用这种方式是为了兼容浏览器。OBJECT标签是用于Windows平台的IE浏览器的,而EMBED是用于Windows和Macintosh平台下的Netscape Navigator浏览器以及Macintosh平台下的IE浏览器。在上述代码中只要修改movie和src处的代码即可完成Flash文件的插入。

3 使用swfobject脚本插入Flash文件

Swfobject脚本的官方地址为:http://blog.deconcept.com。SWFObject是一个基于Javascript的Flash媒体版本检测与嵌入模块,其主要使用目的是将Flash嵌入网页中的操作更简单,在其最新2.x版本中加入了版本检测功能,其代码符合XHTML的标准验证,同时解除了IE对Flash点击激活的限制,对主流浏览器兼容。

SWFObject的使用是非常简单的,首先需要包含swfobject.js这个js文件,然后在html代码中插入一些简单的JS代码,就能嵌入Flash媒体资源了。下面是一个最简单的范例:

这个地方显示Flash文件

要注意的是在2.X版本中“swfobject”该单词是小写的,在该脚本的1.5版本中为“SWFObject”,采用的是大写。

3.1 Swfobject.js的使用参数

swfobject.embedSWF(swfUrl,id,width,height,version,expressInstallSwfurl,flashvars,params,attributes)

其中前5个为必选参数,后4个为可选的参数:

(1)swfUrl这个参数为必选参数,string类型,指定SWF的URL,这里指定为flash.swf。

(2)ID这个参数为必选参数,string类型指定将会被Flash内容替换的HTML元素(包含替换内容)的ID,这里为“flashcontent”。

(3)width这个参数为必选参数,string类型,指定SWF的宽,这里指定为400。

(4)height这个参数为必选参数,string类型,指定SWF的高。这里指定为400。

(5)version这个参数为必选参数,string类型,指定发布的SWF对应的Flash Player版本(格式为:major.minor.release),这里指定为9.0.0。

(6)expressInstallSwfurl这个参数为可选参数,string类型,指定expressInstall.swf的路径,并激活新版Flash的下载程序,这个参数是为了自动升级Flash控件,如果不填路径,则需要填入null。

(7)flashvars这个参数为可选参数,string类型,这个参数在实际中基本不用考虑。在上述代码中为null。

(8)params这个参数为可选参数,string类型,用name:value对指定你的嵌套object元素的params。上述代码中为{wmode:‘transparent’}。

(9)attributes这个参数为可选参数,string类型,用name:value对指定object的属性。

3.2 多种方式嵌入代码

对于flashvars,params,attributes这3个可选参数来说,有多种方式嵌入代码。

以params为例来说明。

(1)在定义对象的时候添加属性和值

(2)在对象创建之后用点号添加属性(properties)和值代码如下:

(3)还可以把属性和值直接写在代码里面

代码如下:

如果在网页中有多处需要插入Flash文件的话,可以简单地复制多份该部分代码,并修改相应参数即可。

4 使用第三方控件来插入Flash文件

在ASP.NET中嵌入Flash文件的第三方控件,比较著名的要数ASPNetFlash WebControl控件了。但是这个控件不是免费的,这里仅仅做简单介绍。

5 结语

采用第一种object、embed方法插入Flash文件,操作上没有什么困难,缺点是默认情况下会有Flash文件在Web网页上面可能需要点击以激活问题。同时,这样不利于重复插入Flash文件,可能造成代码极度重复、冗余。

第二种采用swfobject脚本的方法是现在比较流行的方法,其中像比较流行的视频播放网站六间房、酷六之类的都采用此方法,其优点是代码简洁,结构清晰,可以对客户端Flash版本进行即时升级提示,代码符合XHTML的标准验证,对主流浏览器兼容等。缺点是缺少人性化操作提示,对于一些新手来说过程比较复杂。

第三种方式插入Flash优点是使插入过程完全流程化、控件化,拖过来控件稍微设置下就能使用了。可以在后台代码中控制等。缺点是大多数控件都是收费的。

摘要:在ASP.NET网页制作中插入Flash文件是很频繁的操作。介绍在ASP.NET网页制作中插入Flash的常用到的3种方法,其中详细阐述了使用swfobject脚本插入Flash的方法,同时比较了这3种方法的优点和缺点。

Flash文件论文 篇6

一般的嵌入式目标系统体积小,不可能象PC机那样带一个很大的磁盘存储器作为文件系统存储器。由于Flash存储器具有高可靠性、高密度、存取速度快、掉电可保存等特点,使之成为理想的嵌入式文件系统存储器。

嵌入式文件系统建立在实时系统内核之上,其设计不仅要求满足数据存储的各种要求,而且还要考虑其应用环境和存储器的物理特性。MS-DOS的FAT文件系统技术成熟、结构简单、系统资源开销小,嵌入式文件系统易于在设计上兼容FAT文件系统[1]。

2 可靠性

在MS-DOS的FAT文件系统中,仅仅对数据区域提供坏损管理,而对于它的主引导记录、文件分配表和根目录这三个极重要的文件系统数据结构却未做任何保护(虽然MS-DOS的FAT文件系统中存在着两张FAT表,但是DOS只是在更新FAT1时简单地复写FAT2表,但从不使用它)。一旦这三个区域的内容出现一点失效,将必然导致文件数据的大量损失。另外,如果这些数据结构的存储区域发生物理性损坏,更会导致整张磁盘的报废[2]。这在由Flash存储器占据很大成本比重的嵌入式应用中,是非常不希望的。

归结起来,嵌入式系统中的Flash存储器主要面临两大类不稳定因素:一是Flash存储器本身可能出现物理性的损坏;二是嵌入式系统面对较多的突发掉电与重启动,造成Flash存储器写操作的异常终止。

针对Flash存储器的物理损坏问题,对文件数据区域提供坏损块管理。在系统格式化时对坏块进行标记。

针对Flash存储器的写操作异常终止问题,将系统记录、文件分配表和根目录表这三个对Flash文件系统最重要的数据结构均进行双份的存储改善其安全性。在文件系统的操作中,程序对每一个表结构的两个备份进行顺次修改,以此确保Flash存储器上总是存有一整套完好的系统记录表、文件分配表和根目录表。在每块的首页空闲区保存了FAT表中该簇的簇值。在系统被启动运行时,文件系统初始化时,根据三个表在所在块的最后一页空闲区的写入成功标志和最后的更新时间确定每一张表备份的合法性和有效性,读取正确的记录。通过这样的设计,即使文件系统在使用中出现了写操作异常终止的情况,错误将只涉及当时被操作的文件数据,不会扩散给Flash文件系统中的其他文件,使损失降到了最低,更不会因此损坏三个文件系统表结构,造成整个文件系统的彻底瘫痪。

通过以上的改进,该Flash文件系统的可靠性比MS-DOS FAT文件系统有了很大的提高。

3 耗损平衡

JFFS文件系统中系统耗损平衡机制可以在不同的功能模块中采取不同的策略来控制[3]。下面分析耗损平衡机制在不同功能模块中的实现方法,研究它们的实现效率和系统代价。

(1)在垃圾收集模块中实现

(2)在块分配模块中实现

(3)使用专门的耗损平衡模块实现

上述三种策略可以在系统不同的模块中同时或分别实现,在耗损平衡的控制效果和实现耗损平衡的系统开销上有所不同。

通过上面三种实现闪存文件系统耗损平衡方法之间的比较,考虑到策略在嵌入式系统中实现的开销,考虑兼容FAT文件系统对系统记录、FAT表的频繁更新操作。对于系统记录、FAT表和根目录表采用交替更新来控制系统的耗损平衡;对于数据区在文件系统启动建立空闲块链表时,产生一个随机数,从该随机数开始的块开始搜索建立空闲块链表,如没有空闲块再从该存储器的第二块开始向后搜索空闲块,再根据空闲块的分配按先进先出策略来控制系统的耗损平衡。这样基本上保证了存储器各块的平均使用。

4 垃圾回收

FAT文件系统中没有垃圾收集机制,但由于FlashMeory的特点,为了提高文件系统性能加入了垃圾机制,优化文件系统的性能。考虑到嵌入式系统自身的特点,即系统中资源的有限性,在垃圾收集策略的实现上需要一定的可行性,尽量降低算法的复杂度,减小系统开销,且应该便于实现。故本文件系统垃圾收集算法如下:

将Flash盘中块分为三个队列,分别是干净块,空闲块和脏块队列。干净块队列是此块上的数据都有效。脏块是此块的数据己删除,需擦除变为空闲块。空闲块是指没有数据存储的可分配块,它们的状态可记录在FAT表中,当存储文件需要分配块时,如没有空闲块可分配,则启用垃圾收集机制进行脏块的擦除。或者当系统启动或空闲时,空闲块的数目少于设定的空闲块的数目n时,则启用垃圾收集机制进行脏块的擦除。其垃圾收集流程如图1所示。

5 性能优化

为了提高系统的性能,要采取以下策略:

(1)由于文件的写入速度与要擦除的块时间确定,同时还由要写入的数据量有关,故尽量减少写入的次数。

(2)文件删除时,对其目录项的第一个字节做删除标记,同时释放该文件所占用的簇链,并标记为脏块,当系统启动或空闲时启动垃圾收集进程进行脏块的收集。

(3)为加快给文件分配空闲块的速度在系统启动时就建立空闲块链表,按先进先出策略取得空闲块。

(4)为提高文件的查找速度,除根目录外将文件目录项所占用的簇在FAT表中标记为EOC,查找文件时只查找根目录和簇值为EOC的簇,提高了查找文件的速度。

(5)将FAT表以数组形式调入内存做为全局变量,利用数组的随机访问特性,大大提高了簇的寻址速度。

6 多任务支持

为了加载的文件系统跟内核很好地配合工作,在μcos-Ⅱ内核的0S_TCB中增加了文件控制块指针,该指针指向该任务打开的文件控制块链表。用户任务对文件进行读写操作时,系统必须维护当前被用户任务所打开的所有文件,用文件控制块来登记这些被打开的文件的相关信息。一个用户任务可能同时打开几个文件,对文件读写时要记录下文件的当前位置,以便在挂起后重新调度运行时能从这个位置继续进行。每个文件控制块记录了当前任务打开每个文件进行读写的当前位置。

7 实现与测试

(1)硬件环境

FFS的测试环境由宿主机和目标机组成。宿主机为一般PC机;目标机ARMSYS44BO-P嵌入式系统开发板,配有K9F5608型号的32M的NandFlash芯片。

(2)软件环境

目标操作系统:μcos-Ⅱ;宿主机操作系统:WINXP;开发调试编译工具:ARM Develop Suite V1.2。

(3)通信设置

PC机通过网络接口连接到开发板的网络接口,这样建立了主机与目标机的一条通信线路。这条线路主要用于程序下载。第二条线路是PC通过串口和目标板上的串口相连,用于程序下载,调试信息交互,主要用于目标系统的数据回显,我们在WINXP操作系统中启用一个监控串口的超级终端来接收并显示数据。

(4)系统测试

“测试”一般是指“为了发现程序中的错误而执行程序的过程”。但是在不同的开发阶段、对于不同的人员,测试的任务是不同的。

(5)功能测试

功能测试分为两部分,第一部分测试Flash驱动程序;第二部分测试文件系统核。通过功能测试和可靠性测试,验证了FFS文件系统有比较完整的文件系统功能,在数据的可靠性等方面能够满足设计初衷。

摘要:基于实时嵌入式操作系统μCOS-Ⅱ内核,采用类似DOS的FAT文件系统,实现了一种适用于NandFlash的嵌入式文件系统。该文件系统从可靠性、耗损平衡、垃圾回收及文件系统的优化几个方面进行设计。

关键词:flash存储器,嵌入式,文件系统

参考文献

[1]张长宏.一种基于NandFlash的嵌入式文件系统的设计.青海大学学报(自然科学版),2006;06.

[2]罗华春.基于Flash存储器的嵌入式文件管理器设计.交通与计算机,2005;01.

Flash文件论文 篇7

关键词:文件系统,掉电保护,Flash文件

1 引言

掉电保护是为了在写文件系统重要数据时出现掉电,使得数据丢失或写入错误数据后能够进行恢复的一种保障机制。主要是通过掉电保护状态项和备份扇区进行恢复,恢复的途径有两种:一种是继续完成未完成操作,另一种是恢复到操作前的状态。因此,在进行掉电保护后的操作只有操作成功或失败两种状态,如果成功数据写入正确;如果失败,要将数据恢复到写前的状态。

2 文件系统掉电保护分析

只有写重要数据时需要用到掉电保护,非重要数据或不影响文件系统的数据不需要掉电保护,下面列举需要用到掉电保护的几种情况:

(1)写FAT表

写FAT表有这几种情况:分配一簇给某个文件、删除一个文件时释放文件占用的簇、整理FAT表。对于中间一种情况不需要使用到备份扇区,对于第一种情况和最后一种就需要用到备份扇区。

(2)写FDT表

写FDT表有这几种情况:创建一个文件、修改文件信息、整理FDT表、删除文件。对于中间两种情况需要用到备份扇区,其他情况不需要用到备份扇区。

(3)整理数据扇区

对数据扇区的整理主要是由于要写入的数据簇不空,需要擦除,但是又不能破坏其他文件的数据。整理数据扇区时需要用到备份扇区。

掉电保护的过程:

步骤1:找一个未用的掉电保护状态项。

步骤2:写掉电保护状态标志为‘准备掉电保护’。

步骤3:写入掉电保护信息,如果要用备份扇区的应该写备份扇区。

步骤4:写掉电保护状态标志为‘开始写数据’。

步骤5:做要保护的工作。

步骤6:写掉电保护状态步骤为‘完成掉电保护’。

掉电保护有效性:

步骤1、2、3时掉电表示写掉电保护信息未完成,此时掉电保护是无效的。

步骤4、5时掉电表示已经做好掉电保护,但是重要数据写入未完成,掉电保护有效。

步骤6时掉电表示已经完成掉电保护,数据已经写入,不需要进行恢复。

文件系统用到的掉电保护及恢复:

创建文件:创建文件时需要写FDT表,写FDT表如果写入失败可以删除写入的数据(将这些数据清0),因此这种情况下不需要用到备份扇区。恢复的过程是删除写入的数据。

修改文件信息:修改文件信息包括修改文件长度、文件起始簇号、文件显示名。由于修改的是文件最重要的数据之一,要用到备份扇区,将修改后的数据事先写入备份扇区,然后再擦除FDT扇区,写入修改后的数据。恢复的过程时,把备份扇区的数据重新写入FDT扇区。

整理FDT表:整理FDT表是将已经删除的文件FDT项清除(数据写为0xFF),以便重新利用这部分空间,因此需要用到备份扇区,将事先整理好的数据写入备份扇区,然后再擦除FDT扇区,写入整理后的数据。恢复的过程是把备份扇区的数据重新写入FDT扇区。

删除文件:删除文件需要释放文件占用的簇,删除文件在FDT表中注册项,删除的过程就是将这些数据写成0,因此可以不用备份扇区,释放文件占用的簇时需要从文件占用最后一簇开始释放,依次向前释放,如果中途掉电,还能找到最后释放的那个簇,继续释放。释放文件占用簇后才删除文件在FDT中注册项。恢复的过程就是继续完成文件删除的过程。

修改FAT表:修改FAT表是建立或删除文件占用链。对于删除文件占用链属于删除文件部分,建立文件链过程可能需要修改较多数据,因此需要用到备份扇区,保证一次写入的多个数据正确。掉电保护的过程是将数据先写入备份扇区,写入FAT扇区(不需要擦除FAT扇区)。恢复的过程是把备份扇区的数据重新写入FAT扇区。

整理FAT表:由于定义只有未分配的簇才能分配给一个文件,被释放的簇只有转变成未分配的簇才可以进行分配,因此需要整理FAT表,需要用到备份扇区。掉电保护的过程是将整理后的数据先写入备份扇区,然后擦除FAT扇区(必须擦除)然后再将整理后数据写入FAT扇区。恢复的过程是把备份扇区的数据重新写入FAT扇区。

整理数据扇区:当要写一个簇的数据时,该簇不空,写入可能出错,需要把簇清空,但是要保证不破坏其他被使用簇的数据,这时要用备份扇区。掉电保护过程是将整理后的数据写入备份扇区,擦除原来数据扇区,把整理后的数据写入数据扇区。恢复的过程是把备份扇区的数据重新写入数据扇区。

用到掉电保护的情况很多,因此会对备份扇区的寿命产生影响,为了尽量减少备份扇区使用的次数,需要尽可能保证数据写入的正确性。

3 掉电保护的数据结构

掉电保护是用于在操作Flash时防止掉电,造成数据意外丢失,导致文件系统崩溃,因此只要涉及到对文件系统重要数据的写入就需要用到掉电保护。掉电保护的数据结构就是记录在操作Flash前记录当前操作状态,如果操作过程中掉电,可以通过该数据结构的内容对操作进行恢复或继续完成未完成的操作。

ucFlag:状态标志,有未用标志、写掉电保护、写备份数据、完成掉电保护这4种标志。

未用标志--该数据空间未存储掉电保护数据,可用被使用。

写掉电保护--正在写掉电保护数据,掉电保护未完成,如果在该状态掉电,表示写入掉电保护数据不可靠。

写备份数据--已经备份了要保护的数据,掉电保护未完成,如果该状态掉电,表示备份数据可靠,可以通过备份数据完成掉电保护过程。

完成掉电保护--掉电保护过程结束。

ucType:掉电保护的类型,分以下几种:写FDT表的一项、写FAT和FDT、删除文件、写一个扇区数据。

4 掉电保护实现的伪代码

4.1 写掉电保护状态

功能:写掉电保护状态,如有使用备份扇区,先写备份扇区,再写操作状态输入参数:bType状态类型。

uiBackUpSector备份扇区号或备份簇号或保留(由状态类型决定)。

uiTargetSector目标扇区号或备份簇号或保留(由状态类型决定)。

uiDataSize要保护数据块的大小。

pbData要保护数据指针。

输出参数:piNum分配的掉电保护状态项号。

返回值:EM_pfs_SUCCESS表示成功。

其他表示失败代号

4.2 写掉电保护状态标志

功能:写掉电保护状态状态标志。

输入参数:uiItemNumber掉电保护状态项的项号。

ucFlag状态标志。

输出参数:无。

返回值:EM_pfs_SUCCESS表示写入成功。

其他写入失败的代号。

4.3 分配掉电保护状态项

功能:分配一个没有用的掉电保护状态项。

输入参数:无。

输出参数:piItemNo--分配的项目号。

返回值:

4.4 掉电保护恢复操作

功能:掉电保护恢复

输入参数:无。

输出参数:无。

返回值:EM_pfs_SUCCESS表示恢复成功。

其他表示恢复失败的代号。

5 结语

通过“掉电保护”来保证多块数据的写入是可靠的;在具体的写操作前先写“掉电保护”,“掉电保护”本身是一个带“状态标志”及“校验”的数据块,因此,“掉电保护”的写入是可靠的,数据块的写操作完成后,再修改“掉电保护”的状态。使用掉电保护机制,保证写入数据的可靠性,如果再加上LRC校验方式,就可保证文件系统的完整性。

参考文献

[1]陈智育.嵌入式系统中Flash的文件系统.单片机与嵌入式系统应用,2002,(2).

[2]扶小飞,郑善贤.一种Flash文件系统的设计和实现.微计算机信息,2010,(5).

[3]郭明建.AT24C512中数据的文件系统化管理.单片机与嵌入式系统应用,2004,(10).

[4]万鸿基.基于M25P32SPI Flash的TFFS设计与实现.电子元器件应用,2010,(03).

Flash文件论文 篇8

一、使用“SWIFF POINT PLAYER”插件

第一步, 安装SWIFF POINT PLAYER插件。

第二步, 运行PowerPoint 2003, 切换到要插入Flash动画的幻灯片。

第三步, 单击“插入”菜单, 在弹出的下拉菜单中单击“Flash Movie…”, 弹出一个“打开文件”对话框 (如图1) , 再在弹出的对话框中找到要插入的Flash文件, 单击“打开文件”窗口的“打开”按钮, 这样, 放映幻灯片时即可直接播放Flash动画了。

二、使用“Shockwave Flash Object”控件法

第一步, 运行PowerPoint 2003, 切换到要插入Flash动画的幻灯片。

第二步, 单击“视图”菜单, 在弹出的下拉菜单中单击“工具栏”, 再在弹出的子菜单中单击“控件工具箱”, 便出现“控件工具箱” (如图2) 。

第三步, 单击“控件工具箱”中的“其他控件” (工具箱中的最后一个按钮) , 弹出ActiveX控件窗口, 窗口中列出了系统已经安装的所有ActiveX控件 (如图3) 。

第四步, 利用键盘上的光标控制键, 在控件列表中找到“Shockwave Flash Object”并单击 (如图2) , 此时系统会自动关闭控件窗口。

第五步, 将光标移动到PowerPoint的编辑区域中, 光标变成“十”字形, 按下鼠标并拖动, 画出适当大小的矩形框, 这个矩形区域就是播放动画的区域。

第六步, 右单击矩形框, 在出现的快捷菜单中单击“属性”, 出现“属性”窗口 (如图4) 。

第七步, 在“属性”窗口“Movie”一栏右侧的文本框中直接输入Flash动画的路径。

第八步, 调整幻灯片上控件对象的大小、位置, 即可在幻灯片放映方式下直接播放Flash动画了。

三、插入对象

第一步, 运行PowerPoint 2003, 切换到要插入Flash动画的幻灯片。

第二步, 单击“插入”菜单, 在弹出的下拉菜单中单击“对象”, 此时会弹出“插入对象”对话框 (如图5) 。

第三步, 选择“由文件创建”, 单击“浏览”, 出现“浏览”对话框 (如图6) , 通过该对话框找到所要插入的Flash文件, 最后单击“确定”返回PowerPoint。

第四步, 这时幻灯片上便出现了一个Flash动画的图标, 图标的大小和位置可以根据需要随意改变。右单击该图标, 在弹出的快捷菜单中单击“动作设置”, 出现“动作设置”对话框。

第五步, 激活对象的方式可以为“单击鼠标”也可以是“鼠标移动”, 本例采用系统默认的“单击鼠标”。再选中“单击鼠标”标签中的“对象动作”, 最后单击“确定”, 完成激活动画的设置, 返回PowerPoint。

第六步, 放映该幻灯片, 当鼠标单击Flash动画图标时, 出现一询问框, 单击“是”, 系统便会调用Flash程序来播放动画。

四、插入超级链接法

第一步, 运行PowerPoint 2003, 切换到要插入Flash动画的幻灯片。

第二步, 在其中建立任意一个对象。选中这个对象, 单击“插入”菜单, 在弹出的下拉菜单中单击“超级链接”, 此时会弹出“插入超级链接”对话框 (如图7) 。

第三步, 通过该对话框找到所要插入的Flash文件, 用鼠标单击该文件, 最后单击“确定”, 返回PowerPoint。

第四步, 放映该幻灯片, 用鼠标单击设置超级链接的对象时会出现一询问框, 单击“确定”, 系统便会调用Flash程序来播放动画。

五、动作设置法

第一步, 运行PowerPoint 2003, 切换到要插入Flash动画的幻灯片。

第二步, 在其中建立任意一个对象 (如一段文字、一张图片等) 。右单击该对象, 在弹出的快捷菜单中单击“动作设置”, 出现“动作设置”对话框 (如图8) 。

第三步, 在“动作设置”对话框中选中“单击鼠标选项卡中的运行程序”选项, 并指定Flash动画的路径用文件名。

第四步, 放映该幻灯片, 用鼠标单击设置了动作设置的对象时会出现一询问框, 单击“确定”, 系统便会调用Flash程序来播放动画。

上一篇:电气系统的安装与调试下一篇:初中数学学困生的成因