VDK与嵌入式文件系统的投入使用

发布者:ArtisticSoul最新更新时间:2018-02-18 来源: eefocus关键字:VDK  文件系统 手机看文章 扫描二维码
随时随地手机看文章

  Blackfin(BF)系列DSP是ADI公司和Intel公司共同开发的DSP,采用了一种新型结构MSA.BF系列中的BF537具有较块的运算速度和丰富的接口资源,长于控制和视频图像处理,且其带有符合IEEE 802.3规范的以太网控制器,如果在BF537中移植带有LwIP协议栈的VDK工程,并利用网络芯片对537进行扩展,就能便捷地实现嵌入式系统与因特网的通信。

  由于低功耗、数据非易失、存储速度快、存储密度大等优点,Nand Flash在闪存行列中脱颖而出,常被用作大容量数据的存储媒质。随着存储系统容量和存取速度的不断提升,构建嵌入式文件系统来实现存储系统中数据的管理。

 

  1 VDK与嵌入式文件系统

  1.1 VDK简介

  VDK(Visual DSP Kernel)是ADI公司针对Blackfin系列DSP处理器特别开发的"小而健壮"的轻量级内核,特别适合编写需要精确控制的代码,是一个提供了丰富的API函数库,同时支持轻量级IP协议栈(LwIP)的RTOS。

  VDK功能全面,具有线程、信号量、事件与事件位、消息、关键域与禁止调度域等特征。内核通过协同多任务和时间片轮转的方式来管理和协调线程,这种方式称为"调度".VDK运用程序可分为两部分:线程域和中断域。线程域中的调度称为"软件调度",由内核完成;中断域中的调度称为"硬件调度",由中断控制器完成。后者的优先级高于前者,而设备驱动是两者沟通的桥梁。

  然而VDK只是一个"裸核",不提供文件系统的支持,如果需要基于VDK实现文件系统,用户必须自己编写各种接口函数的代码。

  1.2 基于Nand Flash的嵌入式文件系统简介

  Flash文件系统主要有开源的和商业的两类。开源的Flash文件系统,有JFFS、JFFS2、YAFS等。JFFS采用高效的日志文件系统,具有掉电安全、脏块回收、磨损均衡等特性,主要用于嵌入式Linux.Red Hat公司后来在JFFS基础上进行升级,发展出JSSF2.JSSF2采用哈希表的日志节点结构,加快了节点的操作速度。YAFFS也是基于日志结构的文件系统,相比JFFS,YAFFS减少了一些功能,但降低了内存占用率,提高了访问速度。

  商业Flash文件系统主要有TrueFFS和TransactiONFFS.前者用于仿真硬盘驱动,利用冗余数据结构保证可靠的数据操作,并能均匀使用Flash.后者使用事务记录方案,运用程序可通过FAL访问文件系统。

  2 嵌入式系统的硬件平台

  基于BF537的嵌入式系统硬件平台的框图如图1所示。

  图1 嵌入式系统硬件平台

  LAN8187用于对BF537的以太网控制器进行扩展,使其能够通过以太网络与上位机进行通信。

  BF537外挂了两片Nor Flash芯片作为其异步外存。程序Nor Flash用于存储运行程序代码,数据Flash主要用于存储文件系统运行所需的数据,例如文件目录表、地址映射表等。XC4VFX100用于处理数据流的速度、解析和转发BF537的命令,配合BF537对存储阵列进行管理。

  3 嵌入式文件系统设计

  3.1 文件目录表

  考虑到存储系统的存储速度较快,且文件数目较少的特点,文件目录表采用线性表的方式。格式如表1所示,其中的"更新次数"用于记录存放文件目录表数据Nor Flash的编程次数。

  表1 文件目录表格式

  文件系统采用Nor Flash中的一个64 kB的数据块实时记录文件目录表。出于磨损均衡的考虑,如果数据块的编程次数超过规定的阈值,文件系统将自动跳到Nor Flash的下一个64 kB的数据块记录文件目录表。

  文件索引采用类似日志记录的方式,每个文件索引作为文件目录表的一个节点。文件系统进行文件操作时,可以根据具体操作要求,实时搜索、增删和标记索引节点,文件索引格式如表2所示。

  表2 文件索引格式

  文件存储时,主线程遍历文件目录表的节点信息,计算出当前存储的起始块地址,然后向存储阵列发出开始存储的命令,随后将控制权交给中断域。一旦接收到存储阵列的地址请求信号,运用程序进入中断,在中断域中向文件存储子线程发出信号,以发送当前地址信息,如此反复。如果主线程接收到用户停止存储的命令,将立即关闭中断,取得控制权,接着将最新的文件信息更新到文件目录表的最后位置,作为最新的节点。

  文件下载时,主线程遍历文件目录表,找到相应的文件索引信息,然后发送消息给文件下载子线程,开始对指定文件进行下载。如果需要删除某个文件,在遍历目录表找到指定文件的信息后,先发送地址将存储阵列相应数据块的信息擦除,然后将该文件索引信息的"文件标记"置为"删除"标记。

  3.2 地址映射表

  地址映射是文件系统的核心。文件系统将整个存储阵列作为一个独立的地址空间,统一编址。通过定义一个地址缓冲区,将其相应的偏移地址作为Nand Flash的物理地址,并根据坏块信息对缓冲区相应偏移地址的单元做坏块或有效块的标记。文件系统在实际操作中,可"查询"地址缓冲区,如果地址缓冲区某偏移地址为坏块标记,则抛弃,继续查询下一个偏移地址的标记,如为有效块标记,则将此偏移地址作为存储阵列的有效物理块地址。

  为提高存储效率和方便管理,地址缓冲区的内容会被记录在数据Nor Flash中,作为一个"地址映射表".地址映射表体积不大,烧写到Nor Flash时,可将烧写代码推入到VDK的"关键域"中,因为烧写时间小于两次中断间隔,这样既不会照成中断延时,又能保证烧写工作一次完成。

  硬件平台上电后,系统启动线程首先读取Nor Flash中的地址映射表到地址缓冲区,随后基于地址缓冲区进行文件管理;如需更新坏块信息,首先更新地址缓冲区,然后将地址缓冲区内容记录到Nor Flash中。故而名为"映射",实质是一种"标记"的方法。地址映射机制如图2所示。



图2 地址映射机表的设置与使用

  3.3 坏块回收

  Nand Flash芯片在出厂时就存在随机坏块,同时随着使用时间的推移,一些有效块也会因为编程的原因成为新的坏块,故而存储阵列在使用一段时间后,应当更新坏块信息。考虑到阵列中文件的安全性和完整性,系统设置为存储阵列为空时方能更新坏块信息。

  格式化整个阵列后,存储阵列中的FPGA芯片依次读取每个数据块的第一页数据,如果发现非0xFF数据的个数超过设定阈值,就认为此数据块为坏块。之所以设定阈值而不是一有非0xFF数据就视为坏块,是为了克服数据读取的不稳定性。

  BF537读取存储阵列传送来最新坏块信息后,按照图2中地址映射表设置的办法,首先更新地址映射缓冲区,随即将地址映射缓冲区的内容实时更新到数据Nor Flash中,保持两者的同步。

  由于坏块信息更新的时间可能较长,更新工作放在主线程中可能造成较大时延,影响主线程对用户命令的响应,所以坏块回收与标记可放在子线程中。

  3.4 磨损均衡

  Nand Flash芯片的编程次数有限,如果对某个数据块操作过于频繁,将迅速缩短其使用寿命,最终成为坏块,乃至影响整个芯片的使用。如果均衡地使用Flash芯片的每个数据块,对其操作的概率在较长时间内大体相当,这样不仅能减少芯片坏块的比例,也能延长存储阵列的使用寿命。

  开源和商业的文件系统,都有较为完备的脏块回收和磨损均衡的机制,但是其算法往往较复杂,同时需要将运行信息实时更新到Flash芯片中。在存储速率要求很高的情况下,复杂的机制对存储速率将不可避免地造成影响。

  文件系统关于磨损均衡的解决方案主要是顺序存储和阵列整理。文件存储时,并不使用"链式存储",填充文件删除所留下的"空洞",而采用"连续存储"的方式,将最新的文件存储到当前所有文件的末尾。这样不仅编程简单,而且存储阵列在一段时间后可能会被耗尽,此时如果删除尾部的某些文件,那么下个的文件可以存储在这些空余出来的位置;如果利用阵列整理功能将当前文件"压缩"为连续紧凑的文件序列,去除文件删除时留下的空洞,这样整理出来的空间也可以继续用于下次存储。

  3.5 掉电保护

  嵌入式系统硬件平台的工作环境一般较为恶劣,电源模块随时会有停止供电的可能。故而掉电保护是嵌入式文件系统设计的重点和难点。

  微软的FNT文件系统的掉电保护主要针对FAT表,本文件系统也是基于这个理念。开始文件存储时,子线程对发送的块地址数目做一个计数,当计数量达到设定的阈值N后,将新文件的信息更新到文件目录表缓冲区中,并立即将文件目录表更新到Nor Flash中,两个更新的操作不能被中断,故而将这段代码推入到关键域中。随后将计数值清零,重新开始前一过程。如果在存储过程中掉电,重新上电启动后,开始新的存储,系统会自动查询存储阵列最后一个文件的状态标记,如果标记为暂存,则判定最后一个文件在存储时遇到了掉电的情况,那么系统自动擦除该文件接下来N个数据块的信息,然后最后一个文件开始新的存储。

  文件删除操作是在删除动作完成后才更新文件目录表,如果在删除过程中掉电,那么上电后,用户可以对该文件重新删除。文件的拷贝和剪切是在操作前更新文件目录表,如果在操作过程中出现断电,重新上电后,用户可先删除拷贝后的新的文件,去除残块,然后开始新的操作。

  4 结束语

  介绍的嵌入式文件系统已在项目中成功投入使用,当然仍有许多方面需要改进。例如文件目录表如果较长,线性遍历耗时也会相对较长;文件目录表没有备份,如果更新文件列表时存储系统出现掉电,该如何应对等。VDK是ADI公司为自己的集成开发环境量身打造的内核,相对于Linux等开源系统来说,使用范围可能较窄,但基于ADI的DSP使用自然有其得天独厚的优势。


关键字:VDK  文件系统 引用地址:VDK与嵌入式文件系统的投入使用

上一篇:增强定时计数器和PWM输出功能
下一篇:采用微程序控制和门级设计的嵌入式FPU微指令控制模块

推荐阅读最新更新时间:2024-03-16 15:55

在C51系统上实现YAFFS文件系统
随着NAND Flash存储器作为大容量数据存储介质的普及,基于NAND闪存的文件系统YAFFS(Yet Another Flash File System)正逐渐被应用到各种嵌入式系统中。本文将详细阐述YAFFS文件系统在C51系统上的实现过程。 1 NAND Flash的特点 非易失性闪速存储器Flash具有速度快、成本低、密度大的特点,被广泛应用于嵌入式系统中。Flash存储器主要有NOR和NAND两种类型。NOR型比较适合存储程序代码;NAND型则可用作大容量数据存储。NAND闪存的存储单元为块和页。本文使用的Samsung公司的K9F5608包括2 048块,每一块又包括32页,一页大小为528字节,依次分为2个256
[单片机]
向APFS文件系统转进:看iOS 10.3如何为iPhone扩容存储空间
此前,入门级iPhone用户总会抱怨预留的可用存储空间太少。但是随着iOS 10.3更新的发布,大家发现苹果竟然释放了数GB的自由空间。根据外媒Apple Insider编辑的实测,其iPhone 7 Plus的“释放量”达到了7.81 GB 。Daniel Eran Dilger表示,在从iOS 10.2升级到最新版iOS 10.3操作系统之后,其顶配iPhone 7 Plus(256GB)的可用存储空间从75.45 GB增加到了83.26 GB。 编辑手上这部手机在升级前已经装下了超过40000张照片和200款应用,有趣的是,系统总存储的数字也从248.5 GB增加到了252.14 GB,增量达到了3.64GB 。 一
[嵌入式]
分布式测试系统中数据存储管理技术研究
  引言   本课题研究的数据存储与管理技术可应用于在大型海域进行的水中爆炸效能参数测试的分布式测试系统中,整个系统中基站与主站通过无线传输。由于在海域中的测试环境比较恶劣,对于测试设备的布置比较困难,因此有时需要在短时间内做多次重复性实验。重复性实验就要求将每次所采集的数据实时回传处理或存储管理,为下次实验作准备。本系统所采用的无线传输方式决定不可能在短时间内把大量数据回传。NAND Flash存储器作为一种非易失、大容量、可擦除与重复性编程等优点,在其内部构建文件系统,把多次重复性采集的多种数据以文件格式存储,可为系统由无线传输引起的瓶颈提供另一种解决方案。在存储冲击波数据时,冲击波信号有其典型的特征(最大值特征),可提取
[测试测量]
分布式测试系统中数据存储管理技术研究
在C51系统上实现YAFFS文件系统
随着NAND Flash存储器作为大容量数据存储介质的普及,基于NAND闪存的文件系统YAFFS(Yet Another Flash File System)正逐渐被应用到各种嵌入式系统中。本文将详细阐述YAFFS文件系统在C51系统上的实现过程。 1 NAND Flash的特点   非易失性闪速存储器Flash具有速度快、成本低、密度大的特点,被广泛应用于嵌入式系统中。Flash存储器主要有NOR和NAND两种类型。NOR型比较适合存储程序代码;NAND型则可用作大容量数据存储。NAND闪存的存储单元为块和页。本文使用的Samsung公司的K9F5608包括2 048块,每一块又包括32页,一页大小为528字节,依次分为2个2
[单片机]
stm32+sdio+文件系统 源码分析
一、概述 1、目的 在移植之前,先将源代码大概的阅读一遍,主要是了解文件系统的结构、各个函数的功能和接口、与移植相关的代码等等。 2、准备工作 在官方网站下载了0.07c版本的源代码,利用记事本进行阅读。 二、源代码的结构 1、源代码组成 源代码压缩包解压后,共两个文件夹,doc是说明,src里就是代码。src文件夹里共五个文件和一个文件夹。文件夹是option,还有00readme.txt、diskio.c、diskio.h、ff.c、ff.h、integer.h。对比网上的文章,版本已经不同了,已经没有所谓的tff.c和tff.h了,估计现在都采用条件编译解决这个问题了,当然文件更少,可能编译选项可能越复杂。 2、0
[单片机]
基于分块管理和状态转换的嵌入式Flash管理
1 引言 嵌入式系统中通常都需要存放一些非易失性数据, 并且数据量的大小和数据类型根据不同的系统需求差异很大。因此选取合适的存储器是完成数据存储系统的第一步, 更重要的是使存储系统长期稳定、高效的工作, 这就必须寻求一个完备的存储器数据管理方法 。本文介绍了一种适用于无文件系统环境下的N OR Flash 管理方法, 采用分块管理和状态转换的方法使得Flash 的使用效率和操作可靠性得到大大提高。 2 NOR Flash 存储器及其特性 NOR Flash 和NAND Flash 是目前市场上两种主要的Flash 存储器。一般在非海量存储型的嵌入式设备中都是直接采用NOR Flash 作为程序代码和非易失性数据的存储器, 这
[单片机]
基于分块管理和状态转换的嵌入式Flash管理
分布式测试系统中数据存储管理系统研究
引言 本课题研究的数据存储与管理技术可应用于在大型海域进行的水中爆炸效能参数测试的分布式测试系统中,整个系统中基站与主站通过无线传输。由于在海域中的测试环境比较恶劣,对于测试设备的布置比较困难,因此有时需要在短时间内做多次重复性实验。重复性实验就要求将每次所采集的数据实时回传处理或存储管理,为下次实验作准备。本系统所采用的无线传输方式决定不可能在短时间内把大量数据回传。NAND Flash存储器作为一种非易失、大容量、可擦除与重复性编程等优点,在其内部构建文件系统,把多次重复性采集的多种数据以文件格式存储,可为系统由无线传输引起的瓶颈提供另一种解决方案。在存储冲击波数据时,冲击波信号有其典型的特征(最大值特征),可提取其最大值特
[测试测量]
分布式测试系统中数据存储管理系统研究
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved