微软的FNT文件系统的掉电保护主要针对FAT表,本文件系统也是基于这个理念。开始文件存储时,子线程对发送的块地址数目做一个计数,当计数量达到设定的阈值N后,将新文件的信息更新到文件目录表缓冲区中,并立即将文件目录表更新到Nor Flash中,两个更新的操作不能被中断,故而将这段代码推入到关键域中。随后将计数值清零,重新开始前一过程。如果在存储过程中掉电,重新上电启动后,开始新的存储,系统会自动查询存储阵列最后一个文件的状态标记,如果标记为暂存,则判定最后一个文件在存储时遇到了掉电的情况,那么系统自动擦除该文件接下来N个数据块的信息,然后最后一个文件开始新的存储。
文件删除操作是在删除动作完成后才更新文件目录表,如果在删除过程中掉电,那么上电后,用户可以对该文件重新删除。文件的拷贝和剪切是在操作前更新文件目录表,如果在操作过程中出现断电,重新上电后,用户可先删除拷贝后的新的文件,去除残块,然后开始新的操作。
4 结束语
介绍的嵌入式文件系统已在项目中成功投入使用,当然仍有许多方面需要改进。例如文件目录表如果较长,线性遍历耗时也会相对较长;文件目录表没有备份,如果更新文件列表时存储系统出现掉电,该如何应对等。VDK是ADI公司为自己的集成开发环境量身打造的内核,相对于Linux等开源系统来说,使用范围可能较窄,但基于ADI的DSP使用自然有其得天独厚的优势。
本文关键字:嵌入式 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术