sd卡文件系统设计.doc

上传人:asd****56 文档编号:70482084 上传时间:2023-01-19 格式:DOC 页数:4 大小:31.50KB
返回 下载 相关 举报
sd卡文件系统设计.doc_第1页
第1页 / 共4页
sd卡文件系统设计.doc_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《sd卡文件系统设计.doc》由会员分享,可在线阅读,更多相关《sd卡文件系统设计.doc(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、SD卡文件系统设计(note)SD卡文件系统设计(note) Common Sense of SD FS Design闪存功耗低,密度高,体积小,可靠性高,可擦除,可重写,容量大,便宜(how much?). 以块为单位对SD卡进行管理. 屏蔽硬件操作细节,为应用开发者提供统一的API调用. 文件系统分5层(由下往上): SD卡的底层驱动层, 磁盘高速缓存Cache层,逻辑盘,文件系统和应用层.1. SD 卡的底层驱动层包括对SD 卡的初始化,读/写操作. 操作通过对SD 卡发送命令信号来实现. SD 卡标准定义了两种命令: Application specific Command(ACMD)

2、和General Command(GEN-CMD). 普通命令直接发送,所由ACMD命令在发送前必须先发CMD55作为标识.SD 卡接收命令后响应. 命令和响应都遵循一定格式(SD Memory Card Spec. Part2 File System version 1.0.SD Group, 2000).MMC与SD卡 的插槽一样,具体实现稍有区别. SD 卡初始化流程如下:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz1) 配置SD 卡的控制寄存器中断寄存器2) 判断: 有卡插入?有,下一步;

3、 无,等待. 3) 判断: 发送命令ACMD41: 判断插入的卡是不是SD卡? 是,下一步;否,返回. 4) 发送命令CMD2: 获取卡的CID(每个卡都有自己特有的CID号,由厂商定义;接收到CID后,卡进入认证状态)5) 发送命令CMD3: 分配卡的相对地址RCA(即为本系统对卡的访问提供一个临时的访问地址)6) 发送命令CMD16:设置数据块的大小7) 发送命令ACMD6: 设置数据总线宽度(可选,默认数据宽度为4位)zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSD 卡读写数据是以块为单位进行

4、的.对卡读一个或多个块通过发送CMD17/CMD18命令来实现;对卡写一个或多个块通过发送CMD24/CMD25命令来实现.这些数据在末尾附有CRC校验码,如果校验码失败,则所传输的数据都会被丢掉,数据的读/写操作也会被中止. 2.Cache层Cache原理: 使用较快的存储装置保留一份从较慢速存储装置中所读数据, 使读/写动作先在较快速的装置上完成,这样可以提升系统的响应速度. Cache越大,响应速度越快. 决定处理器成本的最主要的因素就是处理器芯片的面积. 缓存的主要结构如下:typedef struct _Disk_Cache U8 Drive; /表示Cache数组中某个元素的存储状

5、态 U8 Flag; /表示某个元素可以被某种方式访问: 只读/只写/读|写 U8 RW_ID; /计数器,表示元素有多久没被访问了 U32 SecIndex; /记录被缓存的扇区的逻辑扇区索引 U8 bufDISK_CACHE_SIZE; /存放被缓存的扇区的具体内容 Disk_cache;当有读/写的需求时, 从SD卡读取的数据copy一份放到Cache数组的空闲扇区中; 如果系统继续要求读取/写入同一份数据或同一扇区时, 系统就可以直接从Cache中进行读/写, 从而大大提高系统存取速度. 每次访问Cache时, Cache数组中所有元素的RW_ID值会被加1,直至最大值; 当某个元素被

6、访问时, 这个元素的RW_ID值被清零;当cache数组的所有元素都已分配又有新的扇区被访问时, 找出Cache模块中RW_ID值最大的元素分配给新的扇区作为缓存(需要回写的内容进行回写后再分配给新的扇区).需要注意的是: 这种技术如果仅用于读数据是没问题的. 但用于写数据, 即如果写入cache的数据不能立即写回SD卡的物理内存中, 则一旦断电会丢失数据; 若每次都将数据回写到SD上, 则影响写速度. 基于这种情况,将Cache写入的方式分为直写式和回写式.a) 直写式: 每次写入cache的同时, 把数据回写到SD卡物理内存中, 以保证cache的内容和SD卡物理内存中相应单元的数据保持一

7、致. b) 回写式: 只把数据写入cache(这样有可能出现cache中数据得到更新但物理内存中数据陈旧的情况), 并在cache中通过设置Flag标明该缓冲区的数据是否需要回写; 等系统空闲或进行cache替换时,再将数据回写到SD卡上. 3.逻辑盘管理所谓逻辑盘指通过扇区映射吧SD卡物理存储数据的地址隐藏起来, 上层通过对逻辑扇区的操作实现对物理扇区的存取. 这个模块存有逻辑盘的基本信息, 如文件系统类型, 每簇扇区数, 根目录,FAT表和数据区的开始扇区号, 以及占用的扇区个数等信息. 4.文件系统层负责组织文件在SD卡上存放的具体位置, 采用链式存储. 它直接与应用程序接口, 实现文件

8、的逻辑结构以及为用户提供打开,关闭,读,写等操作, 设置文件访问权限, 还实现目录的添加,删除, 和重排等操作. 该层内部结构如下图:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz PSN LSN (物理扇区号) (逻辑扇区号)1.分区区域: MBR(主引导记录)和分区表 038 -2.规则区域: a)系统区域: 分区引导扇区 39 0 FAT表1和FAT表2 4063 124 b)用户区域: 根目录区 6495 2556 用户数据区 96129791 57129752zzzzzzzzzz

9、zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzSD卡的文件结构与硬盘结构相同(参考FAT文件系统原理及实现). 1) MBR区装有用于启动系统的代码和有关文件系统的重要信息; 在主引导扇区的末尾处含有分区表, 分区表用于标识每个分区开始和结束的表项, 最多可以有4个分区, 每个分区可以包含不同的文件系统. 2) 分区引导扇区记录各个分区启动的引导程序.3) FAT表记录SD存储卡以簇为单位进行记录的存储空间的信息,簇的大小根据实际系统的电子盘特性设定. 4) 根目录区记录文件名和目录名. 5) 用户数据区用于存放用户数据及子目录. 5.应用程序层直接使用文件系统层提供的接口API函数对文件和目录进行操作, 而不需要考虑所使用函数的细节问题以及底层硬件的相关问题. 6. 小结功能: 兼容FAT12,FAT16,FAT32;只需对底层驱动进行简单修改就可以移植到CF卡,Flash,电子盘等存储介质上.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com