为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SD卡文件系统设计(转)

2017-10-08 6页 doc 18KB 14阅读

用户头像

is_477730

暂无简介

举报
SD卡文件系统设计(转)SD卡文件系统设计(转) SD卡文件系统设计(转) 发信人: autoca (听姐一席话,胜读十年书.), 信区: Embedded 标 题: SD卡文件系统设计(note) 发信站: 郁金香BBS站 (2006年08月06日15:45:38 星期天), 站内信件 Common Sense of SD FS Design ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 闪存功耗低,密度高,体积小,可靠性高,可擦除,可重写,容量大,便宜(how much?). 屏蔽硬件操作细节,为应用开发者提供统一的以块为...
SD卡文件系统设计(转)
SD卡文件系统(转) SD卡文件系统设计(转) 发信人: autoca (听姐一席话,胜读十年书.), 信区: Embedded 标 题: SD卡文件系统设计(note) 发信站: 郁金香BBS站 (2006年08月06日15:45:38 星期天), 站内信件 Common Sense of SD FS Design ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 闪存功耗低,密度高,体积小,可靠性高,可擦除,可重写,容量大,便宜(how much?). 屏蔽硬件操作细节,为应用开发者提供统一的以块为单位对SD卡进行管理. API调用. 文件系统分5层(由下往上): SD卡的底层驱动层, 磁盘高速缓存Cache层,逻辑盘,文件系 统和应用层. 1. SD 卡的底层驱动层 ~~~~~~~~~~~~~~~~~~~~~~ 包括对SD 卡的初始化,读/写操作. 操作通过对SD 卡发送命令信号来实现. SD 卡标准 定义了两种命令: Application – specific Command(ACMD)和General Command(GEN-CMD). 普通命令直接发送,所由ACMD命令在发送前必须先发CMD55作为标识. SD 卡接收命令后响应. 命令和响应都遵循一定格式(SD Memory Card Spec. Part2 File System version 1.0.SD Group, 2000). MMC与SD卡 的插槽一样,具体实现稍有区别. SD 卡初始化流程如下: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zz 1) 配置SD 卡的控制寄存器中断寄存器 : 有卡插入?有,下一步; 无,等待. 2) 判断 3) 判断: 发送命令ACMD41: 判断插入的卡是不是SD卡? 是,下一步;否,返回. 4) 发送命令CMD2: 获取卡的CID(每个卡都有自己特有的CID号,由厂商定义;接 收到CID后,卡进入认证状态) 5) 发送命令CMD3: 分配卡的相对地址RCA(即为本系统对卡的访问提供一个临时的访 问地址) 6) 发送命令CMD16:设置数据块的大小 7) 发送命令ACMD6: 设置数据总线宽度(可选,默认数据宽度为4位) zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz z SD 卡读写数据是以块为单位进行的. 对卡读一个或多个块通过发送CMD17/CMD18命令来实现; 对卡写一个或多个块通过发送CMD24/CMD25命令来实现. 这些数据在末尾附有CRC校验码,如果校验码失败,则所传输的数据都会被丢掉,数据的读/ 写操作也会被中止. 2.Cache层 ~~~~~~~~~~~~~ Cache原理: 使用较快的存储装置保留一份从较慢速存储装置中所读数据, 使读/写动作 先在较快速的装置上完成,这样可以提升系统的响应速度. Cache越大,响应速度越快. 决定处理器成本的最主要的因素就是处理器芯片的面积. 缓存的主要结构如下: typedef struct _Disk_Cache { U8 Drive; //示Cache数组中某个元素的存储状态 U8 Flag; //表示某个元素可以被某种方式访问: 只读/只写/读||写 U8 RW_ID; //计数器,表示元素有多久没被访问了 U32 SecIndex; //记录被缓存的扇区的逻辑扇区索引 U8 buf[DISK_CACHE_SIZE]; //存放被缓存的扇区的具体内容 } Disk_cache; 当有读/写的需求时, 从SD卡读取的数据copy一份放到Cache数组的空闲扇区中; 如果系统继续要求读取/写入同一份数据或同一扇区时, 系统就可以直接从Cache中进行 读/写, 从而大大提高系统存取速度. 每次访问Cache时, Cache数组中所有元素的RW_ID值会被加1,直至最大值; 当某个元素被访问时, 这个元素的RW_ID值被清零; 当cache数组的所有元素都已分配又有新的扇区被访问时, 找出Cache模块中RW_ID值最大 的元素分配给新的扇区作为缓存(需要回写的内容进行回写后再分配给新的扇区). 需要注意的是: 这种技术如果仅用于读数据是没问题的. 但用于写数据, 即如果写入cac he的数据不能立即写回SD卡的物理内存中, 则一旦断电会丢失数据; 若每次都将数据回 写到SD上, 则影响写速度. 基于这种情况,将Cache写入的方式分为直写式和回写式. a) 直写式: 每次写入cache的同时, 把数据回写到SD卡物理内存中, 以保证cache的内容 和SD卡物理内存中相应单元的数据保持一致. : 只把数据写入cache(这样有可能出现cache中数据得到更新但物b) 回写式 理内存中 数据陈旧的情况), 并在cache中通过设置Flag标明该缓冲区的数据是否需要回写; 等 系统空闲或进行cache替换时,再将数据回写到SD卡上. 3.逻辑盘管理 ~~~~~~~~~~~~~~ 上层通过对所谓逻辑盘指通过扇区映射吧SD卡物理存储数据的地址隐藏起来, 逻辑扇区 的操作实现对物理扇区的存取. 这个模块存有逻辑盘的基本信息, 如文件系统类型, 每簇扇区数, 根目录,FAT表和数据 区的开始扇区号, 以及占用的扇区个数等信息. 4.文件系统层 ~~~~~~~~~~~~~ 负责组织文件在SD卡上存放的具体位置, 采用链式存储. 它直接与应用程序接口, 实现 文件的逻辑结构以及为用户提供打开,关闭,读,写等操作, 设置文件访问权限, 还实现目 录的添加,删除, 和重排等操作. 该层内部结构如下图: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzz PSN LSN (物理扇区号) (逻辑扇区号) 1.分区区域: MBR(主引导记录)和分区表 0~38 ---- 2.规则区域: a)系统区域: 分区引导扇区 39 0 FAT表1和FAT表2 40~63 1~24 b)用户区域: 根目录区 64~95 25~56 用户数据区 96~129791 57~129752 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzz SD卡的文件结构与硬盘结构相同(参考FAT文件系统原理及实现). 1) MBR区装有用于启动系统的代码和有关文件系统的重要信息; 在主引导扇区的末尾处含有分区表, 分区表用于标识每个分区开始和结束的表 项, 最多 可以有4个分区, 每个分区可以包含不同的文件系统. 2) 分区引导扇区记录各个分区启动的引导程序. 3) FAT表记录SD存储卡以簇为单位进行记录的存储空间的信息,簇的大小根据 实际系统的电 子盘特性设定. 4) 根目录区记录文件名和目录名. 5) 用户数据区用于存放用户数据及子目录. 5.应用程序层 ~~~~~~~~~~~~~~ 直接使用文件系统层提供的接口API函数对文件和目录进行操作, 而不需要考 虑所使用函 数的细节问题以及底层硬件的相关问题. 6. 小结 ~~~~~~~~ 功能: 兼容FAT12,FAT16,FAT32; 只需对底层驱动进行简单修改就可以移植到CF卡,Flash,电子盘等存储介质上. 。。。
/
本文档为【SD卡文件系统设计(转)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索