首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >microSD卡FAT模块

microSD卡FAT模块
EN

Stack Overflow用户
提问于 2011-04-29 05:00:05
回答 3查看 1.3K关注 0票数 2

我最近一直在使用GHI Electronics的uALFAT microSD板进行数据记录,但我一直对它的可靠性有问题;它的一些函数调用有时花费的时间远远超过我所能处理的时间。我目前正在使用MSP430微控制器与uALFAT进行通信。

有什么类似的主板,我可以使用,而不是uALFAT,希望更可靠?

如果我需要设计自己的接口板来使用MSP430,那么最好的原始设备制造商解决方案是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-29 19:45:43

我会以不同的方式来思考这个问题。任何基于闪存的存储设备都可能具有可变的写入时序。尤其是具有文件系统和损耗平衡等功能的系统。这往往是闪存的本质,因为你必须擦除整个区块并移动东西。如果你不能忍受可变时间,我在过去所做的就是把这段代码移出时间关键部分。

通常,我会添加一个队列,然后在后台从队列中拉出并写入SD卡。在RTOS中,这将是一个较低优先级的任务。在轮询循环中,它是在系统空闲时调用的函数。

这将约束从函数调用的最坏情况时间更改为能够满足日志记录的平均吞吐量要求。最坏情况下的延迟和吞吐量决定了队列必须有多大;通常情况下,队列可以很小。

票数 7
EN

Stack Overflow用户

发布于 2011-04-30 16:31:26

它可能比这更复杂,正如@sbass所建议的那样,最好的解决方案是,即使您选择更改文件系统。在指责uALFAT之前,您需要确定延迟发生的确切位置和原因。

不过,根据记录,我已经成功地使用了ELM FatFs及其简化的ELM Petit FatFs,还有EFSL

在延迟方面,虽然例如使用ELM,我已经使用SPI实现了高达300千比特每秒的写入速度(速度在很大程度上取决于卡,速度的范围从30千比特/秒到1千兆比特/秒),但我无法成功地使用它来记录任何持续时间长度的96千比特/秒的数据流,即使使用优化的缓冲区大小(扇区大小的倍数)和512千字节扇区的50千比特队列。这不是库的问题,而是SD卡的性质,显然是在1兆位边界上,它将停滞长达128兆毫秒,这足以耗尽队列提供的缓冲。解决方案当然是像@sbas所说的那样增加缓冲,但在这种情况下,总的系统RAM只有64千比特,所以这是不可能的。

如果您可以使用内存和RTOS任务(在您的情况下,可能是TI自己的SYS/BIOS )来解决问题,那么您应该能够让它与您拥有的库一起工作。所需的RAM大小取决于数据速率以及它是突发性的还是连续性的。

票数 4
EN

Stack Overflow用户

发布于 2011-05-10 04:23:50

感谢各位,我最终实现了一个带有额外内存的循环缓冲区,这似乎已经完成了这项工作。感谢您的良好投入!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5824957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档