SD卡数据恢复的技巧

2024-07-11

SD卡数据恢复的技巧(共6篇)

1.SD卡数据恢复的技巧 篇一

问题:什么是SD卡?是什么意思?

SD卡全称Security Digital Card,是由日本松下(Panasonic)公司、冬芝(TOSHIBA)公司与美国SanDisk公司共同开发研制的,

什么是SD卡

SD 卡可以看作是由MMC卡派生出来,它比MMC卡多了用于数据著作权保护的暗号认证功能(SDMI规格)。SD卡多用于MP3随身 听、数码摄象机、数码相机等,其投影面积与MMC卡相同,只是略微厚一点,为2.1mm,但是SD卡的容量大得多,且读写速度也 MMC卡快4倍。同时,SD卡的接口与MMC卡是兼容的,支持SD卡的接口大多支持MMC卡。目前SD卡在数码相机中正在迅速普 及,大有成为主流之势。www.HacK50.com-找入门资料就到

2.SD卡数据恢复的技巧 篇二

1 硬件设计

SD卡(Secure Digital Memory Card)由日本松下、东芝及美国San Disk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2 g,但却具有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性[2]。SD卡支持SD模式和SPI模式,其中,SPI模式中使用的SPI接口在数据采集系统中应用非常广泛,本设计中就采用SPI模式接口与控制器连接。所用通信模式不同,SD卡引脚的功能也不同。表1为各引脚在SPI模式下的定义和功能描述。控制器与SD卡之间通过指令来实现交互。

控制器选用TI公司Stellaris誖系列中所提供的LM3S615,这是一款基于ARM Cortex-M3的微控制器,它将高性能的32位计算引入到对价格敏感的嵌入式微控制器应用中,价格与8位和16位器件相同,但能为用户提供32位器件的性能。该芯片采用了精简指令集(RISC)结构,有较高的处理速度(50 MHz)。LM3S615与SD卡的连接,电路如图1所示。

2 软件设计

软件主要包括两部分:SD卡底层协议程序和文件系统程序。SD卡底层协议控制程序主要完成对SD卡的最基本的数据块的操作,如SD卡的初始化、SD卡数据块的读写等;文件系统程序则是在底层协议的基础上完成文件系统下对文件的各种操作,如文件系统的建立、文件的创建与删除、文件的读写等。

2.1 SD卡底层协议

SD卡底层协议主要包括:SD卡的初始化和SD卡数据块的读写。

2.1.1 SD卡指令规范

LM3S615通过特定的指令格式与SD卡进行交互。SPI总线模式下的所有命令都是由6个字节构成,发送时高位在前[3],其格式如表2所示。其中,7位CRC校验位可以全部为0,因为在SPI总线模式下无需CRC校验。

控制器与SD卡的各种通信都由LM3S615来控制,控制器在对SD卡进行任何操作前都必须先拉低SD卡的片选信号CS,然后由控制器向SD卡发送命令,SD卡对控制器发送的任何命令都要进行响应,不同的命令会有不同的应答格式。SD卡除了对命令应答外,在执行写操作时,还要对控制器发送的每个数据块进行响应(向主机发送一个数据响应标志)。

SD卡对命令的应答有4种格式,分别为:R1、R1b、R2和R3格式。应答为1个字节,发送时高位在前。其中的R1应答格式如图2所示,MSB总是设定为“0”,其他位包含了错误信息,即那些位为“1”时则代表1个错误信息。

2.1.2 SD卡的初始化

对SD卡操作前首先要对SD卡进行初始化,其过程如图3所示。

LM3S615选中SD卡、CS置低后需要等待至少74个时钟周期,以保证SD卡有足够的时间来完成上电复位过程。在有些资料中认为等待74个时钟周期是为了使SD卡有足够时间进入SPI模式,这种说法是不准确的,因为根据SD卡数据手册可知只有CMD0命令和CS拉低时才能进入SPI模式。

在发送CMD0命令时,必须发送CRC校验码0x95,因为发送CMD0命令前SD卡仍然处在SD模式,而在SD模式下发送的命令必须加上正确的CRC校验码才能得到正确的应答,因此此时的CMD0命令加上了相应的校验码0x95。得到正确的应答后进入SPI总线模式,而在SPI模式下,CRC校验在默认情况下是关掉的(可以通过命令CMD59来打开),但这个CRC字节所占的字节不能够省略掉,因此可以使以后发送的命令中校验码位发送任意数即可。

2.1.3 SD卡数据块的读写

在完成SD卡的初始化后,就可以对卡中的数据块进行读写操作。

(1)SD卡数据块读操作流程如图4(a)所示。所读块的大小可以通过CMD16修改CSD寄存器来进行设定,最大为512 B;读开始地址可以是包含在卡的合法地址范围内的任何字节地址,但是每个块必须是包含在卡的一个单独物理扇区内。

所读的数据块最后都带有2个CRC字节的CRC码,虽然不需要,但SD卡是会发送的,因此最好有相应的读取CRC码的操作,但不提取,这样有利于与SD卡的时序保持同步。CMD17命令的正确应答是0x00,正常的数据开始标记是0xfe。

(2)SD卡数据块写操作流程如图4(b)所示。写数据块时也需要有1个字节的起始标志(0xfe),写块的长度必须是512 B,如果设置错误则会导致下一条命令的错误应答。

在数据应答正常后,数据将会被SD卡正式烧录。SD卡在烧录期间是长时间处于忙状态,忙标志将会持续发送到控制器,如果这时重新设置CS并不能中止烧录,这时数据线DATAOUT将会变成三态并继续进行烧录。如果在烧录完成前重选中该卡,DATAOUT信号会被强制置低并拒绝所有命令,因此,这里需要有一个检测忙信号并等待的过程,以防止控制器其他命令无法正常写入。CMD24的正确应答是0x00,数据正常写入的应答标志是0xe5。

2.2 文件系统程序

在能够对SD卡进行底层数据块操作的基础上,就可以进行更高层次的文件系统的操作,如文件的创建,文件的删除和文件的读写等。

2.2.1 FAT16文件系统

目前比较常见的文件系统有FAT12、FAT16、FAT32、NTFS。在本设计中采用FAT16文件系统,采用一级目录组织。物理上SD卡由扇区组成,每扇区512 B。为了方便管理,SD卡文件系统中将物理空间划分为多个大小相同被称为簇的逻辑块,指定每簇的大小为2 048 B,即由4个连续的扇区组成。按照实现FAT16的需要,将SD卡的逻辑结构划分为:分区引导记录、文件分配表、目录项表以及数据区4个部分。

分区引导记录通常包含4块内容:BIOS参数记录块BPB、磁盘标志记录表、分区引导记录代码区、结束标志0x55aa。BPB表从扇区字节位移0b H开始共占25 B,表3是从SD卡的首扇区中读出的BPB表的内容。

文件分配表(FAT)记录了SD卡上文件的物理位置,表是文件的主要组成部分。文件存储分配的最基本单位是簇,而文件分配表是反映硬盘上所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。在给一个文件分配空间时总是先扫描FAT,找到第1个可用簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内,即形成了“簇号链”。FAT是记录文件簇号的一张表,它是一个极其重要的数据结构,FAT表若损坏,整个卡上的文件都无法读取,因此,FAT16的文件系统中有两份完全相同的文件分配表FAT1和FAT2。

目录项表BOOT(也称DIR)位于第2个FAT表之后,文件目录项包含了文件的主要信息:文件名、扩展名、文件属性和文件的首地址等基本信息。

数据区(DATA)是真正意义上的数据存储的地方,位于DIR区之后。

2.2.2 文件的创建

在SD卡中创建文件的过程就是填写分配表,表中包括文件的基本信息,包括一个指针,指向文件的内容的地址。然后由系统在指向的地址进行文件的读写。同时,如果要创建其他文件,就被禁止指向这个地址,以防文件错乱。文件创建流程图如图5所示。在创建过程中需要填写FAT1和FAT2两个表,其中FAT2是作为备份表。

在调用文件创建函数前需要对SD卡进行格式化,可以在PC上实现,也可以由LM3S615直接进行[4]。

2.2.3 文件的读写

读卡上的文件一般遵循以下步骤:根目录读取、文件名读取、判断文件是否是文件夹、子文件夹读取、文件数据的读取、文件的返回(读取文件保存的父文件夹的地址信息从而进行文件的返回)、文件夹的返回[5](读取父文件夹地址信息,判断其簇号是否为0)。其中最重要的数据读取有以下步骤:

(1)从文件目录中读取文件所在的簇;

(2)根据簇来读取所在的扇区;

(3)通过扇区×512来得到其首地址;

(4)通过文件的大小来读取数据。

文件的写操作流程如图6所示,写操作的一个很重要过程就是计算出写入位置。写入位置主要包括5个信息:写入位置在写入文件中所处簇数、写入位置在磁盘中所处的簇号、计算写入位置在所在簇中所处的扇区数、写入位置在所在簇中所处的扇区号、写入位置在所在扇区内的偏移字节数。其中,前2个值是磁盘中的绝对地址,后面3个值是文件中的相对地址。文件的读操作与写操作是一个类似的过程。

2.2.4 文件的删除

删除文件时,并不是直接删除数据区的内容,而是只删除相应的文件目录登记项。

通过实验表明,本设计实现了SD卡的各种常见操作。将其运用到野外地质仪器中,简化了采集系统的设计,减小了系统尺寸,提高了系统的可靠性,使采集数据的读出变得简单易行。为长期大量的地质数据采集、存储提供了一种新方法。

参考文献

[1]苏义鑫,程敏,何力.基于AT89C52单片机的SD卡读写设计[J].世界电子元器件,2008(5):65-68.

[2]刘素花,龚德俊,徐永平,等.SD卡在海洋数据存储中的应用[J].海洋科学,2009(3):16-20.

[3]张洪涛,莫文承,李兵兵.基于SPI协议的SD卡读写机制与实现方法[J].电子元器件应用,2008(3):42-43,47.

[4]段琪炜,周洪利.基于MMC卡的嵌入式文件系统的设计与实现[J].现代计算机,2006(7):94-96,109.

3.电脑无法读取sd卡怎么解决 篇三

造成读卡器读不出来的原因有很多,但是我们可以通过排除法来解决,首先查看是不是读卡器的问题,就是将卡插入读卡器之后然后插入电脑上,如果前置接口没反应的话,改插后置接口吧,如果后置接口还是读不出来的话,那么就将换一台电脑插拔下。如果正常的话,说明是原先电脑的原因,如果不正常的话就是读卡器的原因。

如果在另一台电脑插入读卡器,读卡器正常的话,那么是原先的电脑故障了。电脑设置故障的解决方法:

1、那么对原先电脑点击【开始-控制面板-添加新硬件-查找】然后查找有没有外部设备,如果有的话可以打开点击【硬件】将驱动卸载掉,然后在插入读卡器,重新安装驱动。

2、当然可以进入到安全模式,然后修复注册表,然后在重新进入到正常模式来插拔读卡器,查看故障时候解决了。

3、如果故障还是依旧的话,那尝试将电脑还原到未出现故障的时候,或者将电用系统盘修复下,打开命令提示符输入SFC /SCANNOW 回车,然后插入系统盘修复。这里不需要我们去去修复,系统会自动检测修复的。

4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。

5、usb供电不足的原因造成的。这种情况可能是usb接口的外部设备太多造成的。解决方法:鼠标右键【我的电脑-设备管理器-找到“通用串行总线控制器”选项,然后在该选项的下拉列表上面有一些“usb Root Hub”选项】,如图所示:

双击该选项,然后打开属性对话框,切换到“电源管理”选项卡,去除“允许计算机关闭这个设备以节约电源”前的勾选,点击确定即可。

如果是读卡器出现了故障的话,先查看是否是数据线连接坏了。然后就在接口方面是否存在故障了。尝试换个接口就可以。当然小编建议现在读卡器不是很贵,换个读卡器吧。什么问题的解决了。

4.SD卡数据恢复的技巧 篇四

在Android手机空间不足的情况下,很多人选择在SD上安装应用或者备份相关数据。

在SD卡中进行操作会遇到很多问题,期中最显著的是SD卡 使用空间逐渐增大,其原因主要为缓存文件不能及时清除。

以下整理了SD卡中常见的文件夹名称及其作用,希望能够给用户进行清理及相关操作提供一些方便。

系统文件存储相关文件夹

1、.android_secure:官方app2sd的产物,存储了相关的软件使用认证验证,删除之后SD卡中的软件将无法使用。

2、Android:存放重要的程序数据,比如google:map的地图缓存,误删掉后地图还需重新下载。

3、backups:包含重要的备份文件,比如联系人导出到SD卡会导入到此文件夹。

4、bugtogo:系统出现问题的时候会形成一些报告文件,存放在此文件夹。

5、data:缓存数据文件夹,与Android类似。例如,“截图助手”截图保存在datacom.edwardkim.android.screenshotitfullscreenshots里。

6、LOST.DIR:卡上丢失或出错的文件会移动到这里,此目录删了会自动生成。

7、SystemAppBackup:SystemApp remove(深度卸载)备份系统文件后,备份文件保存的目录。

8、bugreports:升级系统或刷机,系统和程序发生兼容错误报告列表(包括内存使用全部内容)将保存在这个文件,重起机器可以删除。

9、.keepsafe:隐藏类的软件、加密保存文件地址存放于此

10、.thumbs:浏览或使用某一软件,以及使用某一文件夹后用于记录次数和内容的文件,随机产生,需要定期不断清除,长时间不清理会大量占用储存卡的有效空间

11、openfeint:打开联接网络后的一个启动程序,它广泛植入移动类平台发布的软件或游戏,是更新下载或评论反馈信息的记录地址,可删除。

12、com:播放类软件在收看播放影视节目生成的文件将存放于此,可以对制作方反映回馈信息,可以删除。

13、Download(download):大写字母的是网络联接下载文件目录,小写字母的是手机自身(蓝牙,近场等)存放下载传输文件,不要误删

系统工具类

1、albumart:音乐专辑封面的缓存文件夹。

2、albums:相册缩略图的缓存文件夹。

3、cmp:音乐的缓存文件夹。

4、Playlists:播放列表的缓存文件夹。

5、DCIM:相机随机缓存文件夹,记录功能设置的参数,需要及时清理。一些第三方相机软件拍出的相片也会保存在这里,比如360或晕影相机等。

6、科学上网:科学上网数据的缓存目录。

7、My documents:手机启用各种程序任务记录的文档,需要定期清除,长时间不清理会占用SD卡较大内存。

8、.nomedia:手机中隐藏的音频、图片文件夹都会在这里显示,可以自设在相关文件夹中。

9、media:使用电话通话录音软件或在线浏览视频等媒体产生的音频文件记录存档将保存在此。

10、.medieval_software:启用蓝牙传输软件时,记录任务保存文件的目录。

11、extracted:解压缩软件默认的解压目录

应用类

1、.mobo:Moboplayer的缓存文件。

2、.QQ:QQ的缓存文件,需要定期清除。

3、.quickoffice:quickoffice的缓存文件。

4、.switchpro:switchprowidget(多键开关应用)的缓存文件。

5、.ucdlres:UC迅雷的缓存文件。

6、baidu:掌上百度、百度输入法之类程序的缓存文件夹

7、etouch:易行的缓存文件夹。

8、documents:Documents To Go的相关文件夹。

9、gameloft:gameloft游戏数据包存放的文件夹。

10、handcent:handcent(超级短信)数据文件夹。

11、handyCurrency:货币汇率相关的文件夹,装了handycalc(科学计算器)之后才会有。

12、ireader:ireader的缓存文件夹。

13、KingReader:开卷有益的缓存文件夹:下载的文件和应用都在这儿:删除时留意看清

14、LazyList:Applanet的缓存目录,慎重使用。

15、moji:墨迹天气的缓存目录。

16、MusicFolders:poweramp产生的缓存文件夹。

17、openfeint:openfeint的缓存文件夹。

18、Picstore:图片浏览软件建立的一个目录。

19、renren:人人网客户端的缓存文件夹。

20、screenshot:截屏图片保存的目录。

21、ShootMe:shootme截屏后图片文件保存的目录。

22、SmartpixGames:Smartpix Games出品游戏的缓存文件夹,比如Jewellust。:

23、sogou:搜狗拼音输入法的随机缓存文件夹,可以删除

24、SpeedSoftware:RE文件管理器的缓存文件夹。

25、TalkingFriends:talking tom(会说话的tom猫)录制的视频文件所保存的目录。

26、Tencent:腾讯软件的缓存目录,比如QQ。(与上面的.QQ文件夹并不相同)

27、TitaniumBackup:钛备份备份的程序所保存的目录。

28、TunnyBrowser:感觉是海豚浏览器的缓存目录,但为什么叫这个名字?金枪鱼浏览器

29、UCDLFiles:UC迅雷下载文件的保存目录。

30、UCDownloads:UC浏览器下载文件缓存的保存目录。

31、VIE:Vignette(晕影相机)的缓存目录

32、yd_historys:有道词典搜索历史的缓存目录

33、yd_speech:有道词典单词发音的缓存目录

34、youmicache:删掉后还会自动生成,悠米广告的缓存目录,广告程序内嵌在其程序中。

35、Glu:Glu系列游戏的资料包存放地,如3D猎鹿人,勇猛二兄弟等。

36、apadqq-images:QQ for pad的缓存目录。

37、DunDef:地牢守护者的数据包

38、KuwoMusic:酷我音乐的相关文件夹。

39、MxBrowser:遨游的缓存目录。

40、Camera360:相机camera360的随机缓存目录,可以定期清除。

41、TTPod:天天动听的缓存目录。

42、downloaded:刷了MIUI,升级后的ZIP刷机包,保存在downloaded_rom里

43、.estrongs:当你使用了ES文件管理器解压文件,会有这个缓存记录。它反映使用进程,可以删除。

44、silentR:用了后台录音软件,自生的音频文件夹,子文件夹phoneCalls,定期管理清除45、3D-compass:这是使用实景指南针软件,生成的景象图片(图像和数字比较详细)文件夹,可以清除。

46、PDF:可移植文档格式,Pdf阅读器存储文件夹。

47、Zidan youdao:是字典的词库文件储存,删除了要重新下载词库。

48、Callrecords:采用第三方强制双向录音软件(手机未root),音频文件保存。

49、VPlayer Pro:是MOBO等视频播放器使用后的记录定期删除。

50、BeWeather(Videos):是气象类软件(如黑莓天气.。.等)附加下载音频或动画图标的储存地址,删除了会无图无声显示。

51、thumbnails:用第三方播放器观看手持移动类视频媒体时,存放点击暂停、随机截图以及文件储存时产生的内容。

52、iQuran(meta2):可兰经浏览文本和音频的储存文件。

53、Autodesk:手机系统自带存储器命令生成文件夹:储存图像或编写文稿,可以查看、备份或者删除。

54、PixlrOMatic:后期特效处理图片软件Pixlo,储存文件夹,打开可以预览看效果。

55、mapbar:图吧导航地图存放文件,有必须主文件和不同地区具体地图,主文件删掉要重下!

56、antTTS:是使用了高德导航选择语音种类导航、语种的下载地址,删掉了语音提示会丢失。

57、kingsoft:金山词霸专用文件夹下载储存词库、更新拓展文汇(官方发布修正补充)。

58、NightVisionCamera:夜间拍照相机相片存放的地址。

59、DSA:***专用夹,收录各地区道路探头监控位置信息,会定期更新。已测试配合高德、凯立德提前预警,效果不错。

5.51单片机SD卡SPI模式操作 篇五

关键词:sd卡,spi接口,时序

sd卡以其大容量、低成本、携带方便、存储数据简单和安全可靠性高被大量应用于数码电子设备中, 比如数码相机、数码摄像机、mp3、pda、电子学习机、电子图书等。对sd卡的操作有复位、初始化、读写等, 下面以本人掌握的材料对sd卡的操作进行分析。

一、sd卡的结构

sd卡的外形与接口如图1, 它有9个接点与主机相连, 其接口端定义如表1所示。sd卡有两种操作模式, 一种是sd模式, 另一种是spi模式, 不同模式下端口的定义不同。SD模式有一个时钟线、一个命令/反馈线、四根输入/输出信号线、两个电源地和一个电源, 所有九根线都有定义, 数据传输速率较快。SPI模式只用到CS片选、数据输入、数据输出、时钟、电源地及电源六根线。SPI模式较SD模式速度较慢, 但很多单片机都有专用的SPI总线, 可与sd卡直接相连, 使用方便。

SD卡的内部结构如图2所示, 主要有四部分组成, 一是接口电路, 共有九个接口电路, 定义如表1所示。二是接口控制电路, 所有操作都由该控制电路具体去执行。三是内部寄存器组OCR、CID、RCA等。四是存储数据的存储单元。接口电路通过控制电路与内部寄存器组成存储单元交换数据, 其主要操作有写命令、读数据、写数据、读状态等。

二、sd卡的命令格式

sd卡的命令格式固定为6个字节48个位, 其格式如图3所示。

开始位固定为0, 第二位固定为1, 表示主机给sd卡的命令, 然后是6位命令索引号, 索引号的大小与索引号数字相同, 比如cmd0的索引号为000000, 索引号41为101001。紧接着命令索引号是命令参数, 有些命令有参数, 有些命令没有参数, 比如cmd0和cmd1命令参数为32个0, 而命令cmd24、cmd17的命令参数是数据的读写地址。最后是7位CRC校验位和一位停止位1。根据命令索引号可推知sd卡的命令最多不超过64个 (有些命令索引号为保留以后升级用, 没有实际的命令相对应) , sd卡协议把卡的命令分为若干类, 有些命令只有对sd模式起作用, 有些命令只对spi模式起作用, 大部分命令是通用的, 两种模式下具有相同的命令。

三、51单片机与sd卡在spi模式下的连接

由于51单片机内部没有集成spi模块, 使用51单片机与sd卡通讯要用51单片机的IO口模拟spi时序, 原则上51单片机的P0、P1、P2、P3口的任意位都可以与sd卡相连, 但由于P0与P2口常用于单片机的数据与程序存储器扩展, 而P3口又多用于第二功能, 比如串行通讯、计数、外部中断等, 实际上常用P1口与外部设备连接。第二个问题是接口电平的匹配, 像at89s51等大多数单片机都是5v电平, 而sd卡的电平是3.3v, 超过3.6V的电压将可能烧坏sd卡, 所以两者之间要进行电平转换。一种思路是用专用电平转换芯片, 但代价较高, 另一种是用分压的方式或降压的方式进行电平转换, 转换电路如图4所示。

图4中左图是一个分压式电平转换电路, 当输入是5V高电平时, 经分压输入3.3V, 当输入是0V低电平时, 输出端仍然是0V低电平。图4中右图是一二极管降压电路, 当输入为5V时, 经二极管降压, 输出为3.3V, 当输入为0V时, 二极管截止, 输出仍然是0V。两种转换电路都是单向转换, 只能是从5V电平转换为3.3V电平。

单片机与sd卡的连接电路图为图5所示。由单片机到sd卡的信号需要5V电平到3.3V电平的转换, cs片选信号、sd卡的数据输入信号以及sclk时钟信号都进行了分压式电平转换, 并且所有电路都加有上拉电阻。由sd卡到单片机的dout信号线直接接到了单片机的IO端口上, 如果单片机不能确认3.3V为高电平, 从sd卡到单片机的电路也需要进行电平转换。

四、sd卡spi模式下操作时序

1. 复位操作。

sd卡进行正常读写前必须进行复位操作, 复位操作的命令为cmd0, 由0x40, 0x00, 0x00, 0x00, 0x00, 0x95组成, 前两位固定为01索引号为000000, 参数为32位0, CRC校验为1001010, 结束位为1。进行sd卡操作必须满足严格的时序, 其时序图为所6所示。复位操作由5个步骤组成, 首先在片选信号cs为高电平时, 发送至少74个时钟周期;第二片选CS拉低, 发送cmd0命令;第三发送一定数量的时钟信号, 等待复位成功;第四如果收到01h应答信号, 表明复位成功, 如果收到的信号始终是ffh信号, 表明复位失败, 需要重复进行复位操作;第五片选CS拉高并发送8个时钟信号完成整个复位操作。

2. 初始化操作。

进行spi模式操作前, 必须进行spi初始化, 初始化命令为cmd1, 由0x41, 0x00, 0x00, 0x00, 0x00, 0xff组成。前两位固定为01, 命令索引号为000001, 32位参数为0, CRC校验为1111111, 结束标志为1。初始化时序为图7所示。首先把片选CS拉低, 发送cmd1信号;插入一定量的时钟信号, 等待sd在spi模式下的复位;如果收到00h的信号表明初始化成功, 如果收到的信号始终是ffh, 则表明初始化失败, 需要重新初始化操作;拉高片选CS, 并且发送8位时钟信号, 完成整个初始化操作。

3. spi模式下读扇区操作。

对sd卡的操作主要是对存储在sd卡的数据进行读写, spi模式下的读扇区操作时序如图8所示。读扇区命令为cmd17, 由0x51, 32位读地址, 0xff组成。前两位固定为01, 命令索引号为010001, 参数为32位读扇区地址, CRC校验为1111111, 结束标志为1。首先把CS拉低, 发送cmd17, 插入一定量的时钟信号, 等待命令发送成功, 当收到00h信号后表明命令发送成功, 如果始终收到的是FFh则表明发送命令失败, 需要重复发送, 插入一定量的时钟信号, 等待读取扇区数据。当收到0xfe标志后, 表示随后的512字节为接收的数据, 512个字节后是两字节CRC校验位, 但在spi模式下, 并不关心这些位的具体数值。操作结束, 拉高CS位, 并发送8个时钟信号。读取的数据长度可以由cmd16设定, 默认值是512个字节。

4. spi模式下写扇区操作。

对sd卡的操作主要是对存储在sd卡的数据进行读写, spi模式下的写扇区操作时序如图9所示。写扇区命令为cmd24, 由0x58, 32位读地址, 0xff组成。前两位固定为01, 命令索引号为011000, 参数为32位写扇区地址, CRC校验为1111111, 结束标志为1。

spi模式下, 写扇区操作可以分成三部分, 第一是写命令cmd24, 时序与前面的读扇区相同。CS拉低, 写入cmd24, 插入一定量的时钟信号, 当读回的是00h时, 表示命令写入成功, 然后再插入一定量的时钟信号, 如图中1-4部分。第二是向sd卡写入512字节的数据, 同读扇区命令相同, 写入的字节数也可由cmd16设定, 默认是512字节。首先写入扇区开始标志FFh, 紧接着写入512字节的数据, 最后是两字节的CRC校验, 因为spi模式下并不关心CRC校验的数据, CRC校验的数据可以是两个0x FF。发送完数据后可以连续读sd卡, 如果读回的数据的低五位是00101表明写入的512个字节的数据被sd卡所接收, 整个过程如图中5-8部分。第三是将数据存入sd卡相应的flash存储单元中, 这个过程需要一定时间, 在此时间段, sd卡呈现忙状态, 读sd卡数据端数据为00h, 此时间段需要发送一定量的时钟信号;直到读sd卡的数据端读回的数据是FFh, 表示数据写入成功, 拉高CS片选, 插入8个时钟信号。

结语

sd卡的操作还有很多, 比如读内部寄存器CID、CSD等信息, 对sd卡的数据的擦除等等, 其操作大同小异, 只不过使用的命令不同。在sd卡的复位及初始化时期, sd卡时钟信号应该保持低速, 否则就可能引起复位及初始化失败。sd卡在spi模式下, 通信速率较低, 要充分发挥sd卡的优势, sd卡应工作在sd模式下。随着嵌入式技术的发展, sd卡的使用范围越来越广, 掌握sd卡的操作将方便开发需要存储大量数据的智能设备。

参考文献

[1]SD Group.SD Memory Card Specifications.2000.

6.SD卡数据恢复的技巧 篇六

近年来,由于绿色节能的需要,智能设备高速发展并广泛地运用于生活和工业领域。这些设备产生的数据量大,并且要求数据能被实时、快速、可靠地采集并存储在存储设备中,用作后续的分析与使用,因此要求存储介质具有存储容量大、体积小、可靠性高,存储速度快,通用性好等特点。

移动存储器因其携带方便而受到广泛应用,目前主要的移动存储器有MMC卡、U盘、SD卡、CF卡等。MMC卡是快速闪存存储卡,可反复读写。U盘采用USB接口技术与设备连接,具有即插即用的功能,但不能用于智能手机等智能设备作为存储卡使用。CF卡存储容量大,成本低,兼容性好,缺点是体积大。SD卡存储容量大,与PC机兼容,体积小,存储性能高,价格实惠,读写速度比MMC卡更快一些,同时安全性也更高。综合考虑SD卡的众多优点及应用范围,本设计选用SD卡作为存储介质。

1 SD卡存储器的特点

SD卡是以NAND Flash为存储介质的存储器,目前最大的存储容量已达8GB。SD卡以块为单位进行读写,每个块512字节。NAND Flash的特点是擦除次数有限,一般是1 000 000次,当某块执行过度的擦除操作后,这一块的存储空间将会变为“只读”状态,不能再写进数据[1]。SD卡内部所带的接口控制器使得它具有识别坏块的功能,当写数据过程中遇到某一个坏块时,只要存在有效的空白区域,SD卡控制器会自动将数据写到空白区域中,大大减轻主机对存储器管理的负担[2]。

2 SD卡文件系统的分析

当前操作系统常见的有WinCE、μCLinux、μC/OS-II等,其中μCLinux和μC/OS-II因为源码公开而被广泛采用。相比μCLinux,μC/OS-II因其结构更加简单,容量小,方便移植而被本设计采用。μC/OS-II本身不提供文件系统[3],因而选取一个与μC/OS-II有很好兼容性的文件系统非常重要。

目前嵌入式设备针对Flash设计的文件系统主要有3种[4]:TrueFFS、JFFS以及YAFFS。这三种文件系统都引入了日志结构的思想。其中TrueFFS利用块映射的翻译系统实现非绝对损耗均衡技术,保证所有空间的使用近似平等而不让某一单元过度使用[5],但TrueFFS代码非公开,尚不能直接应用;JFFS将文件系统的数据和元数据以节点的形式存储在闪存上并通过节点读取文件内容,提供了写均衡,垃圾收集等底层操作,具有断电保护功能,缺点是主要用于NOR Flash,对于以NAND Flash 为存储介质的SD卡,JFFS2文件系统不很稳定[6];YAFFS是唯一一个专门针对NAND Flash设计的文件系统,和JFFS功能类似,且速度更快,占用内存更少,唯一的不足是与μC/OS-II的兼容性不是最好。

uC/FS与μC/OS-II是同一个公司出品的系统,具有很强的兼容性。uC/FS只支持FAT文件系统[7],其中FAT32文件系统较FAT12和FAT16文件系统相比具有更大的管理空间,更适用于SD卡存储,因此本设计将以FAT32文件系统为例,对SD卡存储特点进行分析,设计具有日志结构的文件系统。

FAT32文件系统一共分为以下4个部分[8]:

1) 系统记录区SR 该记录区存放最重要的文件系统信息,如主引导程序、扇区字节数以及SD卡划分为多少个簇、每个簇包括的扇区数、FAT扇区数、根目录项数等。

2) 文件分配表FAT 存放SD卡上已占用空间和空闲空间的情况,以及文件存储所占簇的链接情况。为了防止文件分配表损坏而导致文件丢失,一般保存两个相同的文件分配表FAT1和FAT2。

3) 文件登记表FRT 存放SD卡中每一个文件的代号、长度、属性、目录、生成和修改的时间、以及文件在数据区中的首簇号。

4) 数据区 用于存放记录的数据。本设计中,文件系统以扇区为单位对数据进行存储。

uC/FS里通用的FAT文件系统并不适合直接移植到SD卡存储器中,主要有2个原因:

1) 文件系统以簇为单位存储[6],簇的大小固定为2n个扇区,假设要存储的数据容量为C,C的大小满足以下公式:

m×2n<C<<(m+1)×2n (m>=0,n>=0)

其中m代表一个簇的容量,那么大小为(m+1)2nC的存储空间将会无法被利用,这对于存储空间有限的SD卡来说是极大的浪费。

2) 嵌入式系统的应用条件恶劣,电源电压不稳定,突发性断电以及非法插拨都将对SD卡的存储造成灾难性的影响,而通用FAT文件系统对于断电保护的设计考虑不足。

如果可以将SD卡的数据区划分为数据记录区和数据索引信息区,记录过程直接将数据存储在SD卡的数据记录区,那么记录结束后只需要在数据索引信息区添加相应的索引信息就实现了数据的存储。这样,数据的存储过程只需对数据区进行操作而不再涉及FAT表和FRT表的修改,使这两个表所在的块不会因为频繁使用而坏掉。同时用连续的存储格式存储数据,使存储空间最大化地被利用而不致浪费。这个设计思路是实现数据存储的一个合适的方法。文件系统设计思路可以分为以下3个步骤:① 建立文件系统的结构;② 顺序记录数据到数据记录区;③ 记录结束后添加索引信息到数据索引信息区。

3 针对智能设备的文件系统的实现

根据上述设计思路,介绍应用于智能设备数据记录的日志结构文件系统的实现流程。

3.1 数据区的划分

数据区是物理上连续的磁盘空间,记录的数据以及对数据的索引信息都将存放在这个区域。FAT的管理结构由FAT1、FAT2、FRT和数据索引信息四部分构成。FAT1、FAT2和FRT为文件索引信息区,其中记录的每一条数据描述了文件到数据的映射,根据文件索引信息区的信息可以在数据区中找到相应的文件。但是如果当前只建立一个文件,并将所有的数据都存储到这个文件里,那么文件索引信息区只记录这个文件的属性,无法对文件里的每条数据进行管理,因此有必要建立一个数据索引信息区用来对文件里的每条数据进行管理。将数据区划分为两个连续空间(如图1所示):数据索引信息区和数据记录区。数据索引信息区用来存储数据的索引信息,这些索引信息和数据记录区的数据成映射关系;数据记录区用来存储实际的数据,其中每一段数据都对应着数据索引信息区的一段数据,根据数据索引信息区的信息可以在数据记录区中找到相应的数据。因此文件索引信息区和数据区中的数据索引信息区一起组成了文件系统中的管理信息区;数据区中的数据记录区作为顺序的存储空间用于存储智能设备的数据。

3.2 数据的记录

记录开始前先在数据记录区里建立一个数据记录文件,用来存储记录的数据,对应空间为整个数据记录区。

所有记录的数据都写到数据记录文件里,因此FAT表和FRT表只在创建文件的时候改写了一次,此后不做任何修改,数据写到文件前,先要计算存储起始地位,定义offset为偏移量,如果文件为空,存储地址就等于起始地址,即offset为0x00,如果不为空,新的存储起始地址需要紧接着上次记录数据的存储结束地址。这样,数据记录过程将按照时间顺序连续的存储数据。为了能重复利用SD卡减小成本并保证数据存储的连续性,文件系统将实行“覆盖写数据”策略,即当数据记录文件已被写满时,文件系统将回到数据记录文件的开头重新写数据,此时文件系统先检测当前指针所指位置的数据的存储时间,当时间小于预先设定的阈值时,这段数据将被新数据覆盖。见图2所示,数据记录文件就像一个循环的队列一样,由于数据存储格式是按照时间顺序存储的,最新的数据将会把最早的数据覆盖掉。

3.3 索引信息的添加

根据预先设计的文件系统结构,记录数据结束后需要在数据索引文件里添加新记录数据的信息。FAT表和FRT表记录的是文件的索引信息,对于将数据都记录到一个文件里,应该也要对文件内部数据建立索引信息以便对数据进行查找。记录开始前先在数据索引信息区建立一个数据索引文件,数据索引文件的大小必须要小于数据索引信息区,目的是为了当数据索引文件所占某个块由于频繁擦写而损坏时能有足够的剩余空间让SD卡将数据写到空白区域里,使得管理信息不会丢失。数据索引文件里存放着数据记录文件里每一条数据的信息,这些信息以结构体定义,包括数据存储的时间、数据存储的起始位置即偏移量offset、还有数据的长度。用户根据时间在索引文件里查找到数据存放的首地址和数据的长度,然后到数据记录文件里读取所需的数据,如图3所示。数据索引文件就像一个简单的二维表对数据管理信息进行存放,每个管理信息的存放空间固定为10个字节。当数据索引文件空间不足时,数据索引文件和数据记录文件一样采用“覆盖写数据”策略将旧的数据替换掉。

3.4 断电保护

为了避免突然掉电而使管理信息丢失,文件在将管理信息添加到数据索引文件时,先将整个数据索引文件里的数据复制到控制终端的内存中(这样做是因为在内存中可以对块内的数据进行修改和添加),在内存中添加新的管理信息的同时,也将文件的改写情况存储在数据索引信息区里的空白区域中。这样在任何时候发生突然掉电或非法插拨而导致内存中数据索引文件丢失的情况下,也能根据临时添加到空白区域中的内容恢复数据索引文件,提高文件系统的可靠性。

根据FAT32文件系统的性质,一般1簇=32个扇区=16kB。假设要存储3个大小分别为5kB,43kB,17kB的文件,若采用传统的文件系统存储方法存储,占用的空间为16kB+48kB+32kB=96kB;采用本设计的存储方法存储,占用SD卡的存储空间为5kB+43kB+17kB=65kB。可见,本设计的存储方法节省了SD卡的存储空间,提高了SD卡的掉电保护性,而且节省的存储空间会随着文件存储数量增大而增大。

4 结 语

本文针对当前应用广泛的智能设备中大容量数据存储问题,提出了基于文件系统的数据存储设计方法。该设计方法充分有效地利用了SD卡的存储空间;确保在发生掉电或非法插拨的情况时仍然可以根据空白区域中修改过的内容重新建立新的数据信息索引文件,使文件系统不至于遭到致命的破坏。实践证明,本方法有效地提高了SD的存储使用量,确保了文件系统的安全性和可靠性,优化了数据存储系统的整体性能。

摘要:针对智能设备数据记录系统中数据容量大和掉电不保护的问题,提出一种在μC/OS-Ⅱ操作系统和uC/FS文件系统下,利用基于国产32位处理器核CK510的MCU芯片而改造的具有日志结构的文件系统。该文件系统通过顺序记录数据以及将管理信息的改写和存储同时进行的方法,有效节省了SD卡的数据存储空间,提高了存储的稳定性。

关键词:CK510,uC/FS,SD卡

参考文献

[1]阎航.FAT文件系统在NAND Flash存储器上的改进设计[J].单片机与嵌入式系统应用,2006(11):27-29.

[2]周立功,等.ARM嵌入式系统软件开发实例(二)[M].北京:北京航空航天大学出版社,2006.

[3]王田苗.嵌入式系统设计与实例开发——基于ARM微处理器与μC/OS-II实时操作系统[M].北京:清华大学出版社,2002.

[4]黄文增,陈俊达,陈彦胜,等.以区块为基础之与非门闪存管理模式[J].台北科技大学学报,2005,37(2).

[5]王江.TrueFFS原理及其在CF卡上的实现[J].单片机与嵌入式系统应用,2005(1):38-40,66.

[6]杨磊,方康玲.基于ARM的嵌入式文件系统YAFFS的移植[J].微计算机信息,2008,24(17):168-169,208.

[7]郝伟,李敬兆.基于uC/FS的大容量微存储FAT32格式的实现与应用[J].电脑知识与技术,2006(11):113,186.

上一篇:统编一年级上语文知识点下一篇:励志个性名言句子