基于VxWorks系统时钟中断的Flash文件系统

时间:2022-08-28 01:02:57

基于VxWorks系统时钟中断的Flash文件系统

摘要:本文首先明确了在嵌入式系统中,需要一个比目前更可靠、高效的Flash文件系统。随后介绍了一种新的Flash文件系统,并对其存储组织结构和基于VxWorks系统时钟中断的Flash读写方法作了详细的阐述。这种Flash文件系统已成功应用于通信系统中。 关键词:VxWorks;Flash;系统时钟

1、引言

在嵌入式系统中,Flash存储区需要一个可靠、快速和节约CPU资源的管理方式和写入方法。当前,嵌入式系统中常用的基于DOS文件系统的Flash操作方式对个别出错情况处理不足且出错不可控。在这里,提出一种新的Flash文件系统可以很好地解决这个问题。

2、Flash的结构组织

为了便于文件管理,将Flash空间分成三个区域:Flash芯片硬件参数区、Flash管理区和文件存储区。图1显示了Flash内部区域的分配情况。

不同Flash芯片的硬件参数有所不同,主要有访问周期、写入周期、基本扇区大小、数据端口宽度(8bit/16bit等)、适配CPU型号及主频、系统配置起始地址、数据暂存方式(数据锁存器/数据缓冲区)等。将这些参数写入Flash芯片硬件参数区。

Flash中存储的每个数据必须通过一定的组织方式,才能便于实现读取和修改等操作。相关参数有:数据状态、数据内容特征(如文件类型等)、数据长度、数据存储校验和、存储块序列、其他参数(如版本信息等)等。将以上信息写入Flash管理区。

其余的空间都是文件存储区。每次对文件存储区中的数据进行修改都需要首先修改Flash管理区,由管理区的修改进而擦写对应修改数据所在的整个扇区。Flash的擦写需要以扇区而不能以字节为最小单元。因此需要系统将Flash管理区的内容先镜像到内存中。当存储区的文件有修改时,先将内存中镜像的管理区修改,再擦除Flash管理区,最后再将内存镜像管理区写入Flash管理区的区域中。若Flash管理区占用扇区大小整数倍的空间,使用擦除命令字可使擦除操作简单快速,从而降低操作开销。不同Flash芯片的容量大小虽然不一样,但是Flash管理区的大小基本一致。可以采用相同大小的Flash空间作为管理区。常用Flash芯片的最小组织扇区根据不同型号有三种大小:128K、64K和4K。从文件数量和硬件参数角度考虑,128K的空间大小是足够的,即对于三种芯片分别采用1个、2个和32个扇区作为Flash管理区,三种芯片均采用128K空间作为Flash管理区。同样,Flash芯片硬件参数区采用一个扇区即可。对于Flash上重要的数据,如Flash管理区、系统内核文件,可以采用双备份的方法。系统根据Flash芯片硬件参数、Flash管理区的内容即可安全、可靠地使用文件存储区上的文件。

3、数据写入和写入事件的发源

由于Flash的特殊性。通过命令字的方式擦除和写入需要一定时间,与之相比CPU执行时间会快好几个数量级。在此过程中,数据被临时存储于Flash芯片的锁存器或缓冲区中。所以没有必要保持数据总线,可将毫秒级的擦除和微秒级的写入操作所占用的CPU时间消耗释放,用来执行其他指令。即设置命令字后,CPU就立即退出,并进行其他指令的执行,待命令字执行完毕后,通过其他事件的触发,使CPU跳转回来设置下一个命令字。

一个字节的写入是几个微秒的时间,CPU可执行几千条指令,而一个扇区的擦除是十几毫秒的时间,所以这种节约是有意义的。但是这几个微秒以及十几毫秒的时间的控制是一个门槛,即如何在一个命令宇的操作完毕后,触发下一个命令字的操作。目前可以通过扫描的方法或者中断的方法实现。通过扫描的方法,每个循环周期是不确定的:没有任务占用CPU时周期很短,可能上一个命令字操作还没有完成;有任务占用时周期可能又很长,时差大,导致整个数据段(文件)的写入需要很长时间。这样就造成文件写入时间的长短依赖于CPU的占用情况,无法确定一个数据段(文件)的写入时间开销。如果通过中断的方法,选择某种中断源,使其精度达到要求,这种方式与扫描方式相比更稳定、安全。目前可以选择CPU的时钟中断,在空闲、擦除和写入时采用不同的时钟频率。

在VxWorks操作系统中,利用系统时钟中断实现系统计数器,并在其基础上完成操作系统其他几个可选组件:系统定时器、看门狗定时器、任务的分时调度等功能的实现。通过改写并替换系统时钟中断处理程序,在中断处理程序里完成相应的命令字的设置。同时。必须保证系统时钟频率的修改不能影响操作系统其他几个可选组件所需的系统计数器。即保证系统计数器频率不变。所以在替换时钟中断处理函数时。必须包含操作系统的计数函数tickAnnounce( ),同时通过分频的方法保证tickAnnounce( )的调用频率和时钟频率修改前的调用频率一致。使操作系统的调用感觉不到时钟频率修改和中断处理程序被替换的区别。在应用中,将系统时钟二分频,在奇次系统时钟中断服务程序中完成原有的系统计数器操作,在偶次系统时钟中断服务程序中,根据每次中断到来时不同的Flash操作状态进行操作。

数据段(文件)的写入分为两个过程:整个扇区的擦除和单元(字节/字/缓冲区)写入。在整个写入的过程中,必须记录当前的扇区擦除情况和写入指针,同时前提是保证数据源的稳定,避免源数据文件不存在或被破坏等情况。

4、Flash数据的读出

Flash数据的读取和RAM的读取在方法上没有区别,只是会由总线周期的不同而带来读取数据速度的不同。

5、结论

本文介绍了一种新型的基于VxWorks系统时钟中断的Flash操作方法,这种方法已经在目前的通信系统中得到商用,在系统可靠性、稳定性方面都取得了很好的效果。有很高的推广价值。

上一篇:全球无线移动技术最新发展趋势 下一篇:Vista防火墙10个注意事项