搜索
bottom↓
回复: 6

最近作430加SD卡的疑问—无缝存储?

[复制链接]

出0入0汤圆

发表于 2010-4-15 09:02:15 | 显示全部楼层 |阅读模式
关于SD卡的无缝存储问题……
不知道,标题是否可以这样写

众所周知, SD卡最小存储单位是一个扇区(512字节)

假设我一组数据10个字节,这样一个扇区能存51组数据,然后空下2个字节

如果我一组数据20个字节,这样一个扇区能存25组数据,然后空下12个字节

如此看来,空间的浪费很严重,可不可以将这剩余的空间都利用上,实现‘无缝存储呢’?

目前想到 两种方法:

1、一组数据一组数据的存储,我有了一组数据,就在当前扇区的最后一个数据位补上新的数据,类似于写FAT表的操作,但根据SD卡原理,就算一次写一个字节,SD卡还是一次读写一个扇区的,所以你只能读出一个扇区,然后根据数据项数在扇区内的索引,把新数据覆盖上去,然后再让SD卡将这一扇区数据写回去。这样来算就是每写一组数据,就进行了一次读/写扇区的操作,比较浪费时间,效率较低

2、采用双缓冲技术,用空间弥补时间,建立2个512得缓存,数据在一个缓存存储满后,立即向另一个缓存写入,然后将第一个缓存数据写入SD卡中,新数据存入第二个缓存,第二个缓存存满后,立即向第一个缓存写入,并把第二个缓存的数据写入SD卡中……以次类推,实现了数据的无缝存储。不过两个缓存1K得空间,对于MCU来说有点太大了吧

本人愚钝,只想到这么两种简单的方法,请教高人是否还有其他 更加可行或者成熟的技术呢

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-5-31 20:51:30 | 显示全部楼层
我想问一下,你用430将SD卡驱动起来了啊吗

出0入0汤圆

发表于 2010-6-1 09:12:56 | 显示全部楼层
我用的第二种方法,非常好用

出0入0汤圆

发表于 2010-6-1 15:46:30 | 显示全部楼层
学习

出0入0汤圆

 楼主| 发表于 2010-6-2 13:55:11 | 显示全部楼层
linhai:驱动起来了,实现了FAT、自定义等方式存储数据

oet-oet:这样做,1k是不是太大了点,况且,是否应该设置标志位,或者类似于FAT表的自定义索引,才能方便读取呢

gan1211 晨曦之剑:我也是学来的:-)

出0入0汤圆

发表于 2010-6-10 21:38:52 | 显示全部楼层
你好,Icyan大哥,你用430时,使用了文件系统吗。

出0入0汤圆

 楼主| 发表于 2010-6-11 13:06:27 | 显示全部楼层
回复【5楼】xiaohai8272
-----------------------------------------------------------------------
用了FAT16,不过感觉不太好用,可以优化的地方还有很多,不过这个优化应该和需求联系起来吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 16:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表