首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ST32上的FATFS,设备配置为USB驱动器

ST32上的FATFS,设备配置为USB驱动器
EN

Stack Overflow用户
提问于 2013-11-14 09:55:28
回答 1查看 3.6K关注 0票数 3

目前,我正在使用Micrium开发一个ST32 (STM32F103xC)应用程序。到目前为止一切都进行得很顺利,但我现在碰到了一个街区,无法继续前进。

该板被配置为用作使用SD卡的USB存储设备,以便主机PC能够复制保存在设备上的文件。这很好,因为可以在Windows资源管理器中看到SD卡上的当前文件。

但是,当我尝试使用FATFS在我的程序中创建一个文件时,f_open()返回FR_NOT_READY。为了进一步研究,我构建了一些示例代码,将文件写入到SD,并且运行良好。因此,我在程序中移动了编写代码,我发现如果在启动OS多任务处理勾选之前调用f_open,它就能正常工作--我可以打开一个文件并写入它。在启用滴答之后(但在创建任务之前)立即将代码放到获取FR_NOT_READY上。

我不知道这意味着什么。我可以写到文件的地方有限制吗?当我写作时,我必须禁用多任务处理吗?(哎哟,肯定不是吗?)这仅仅是我不能写到SD卡,我目前正在使用的USB设备?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-15 15:36:34

实际上,您不能将SD卡作为大容量存储设备公开给外部USB主机,也不能同时将它作为文件系统在本地挂载。

进一步澄清一下--实际上,您可以尝试通过简单的硬件访问仲裁来实现这一点,但如果不是数据损坏,很快就会引起不一致,因为每个文件系统代码都假定它可以自由地修改文件系统,不需要立即以一致的方式提交更改--安全性--假设它在内存中缓存的任何文件系统数据仍然有效,因为没有其他人可以在不通知的情况下更改存储块。

如果您希望两个主机两个访问存储卷,则需要实现具有网络文件系统常见的多客户端一致性保护的东西-- FAT绝对不是这样的例子。

列举您的选项时,应该可以做到以下几点:

( A)接口SD卡和USB接口,将SD卡公开为无本地访问的海量存储设备。

( B)接口SD卡,并与本地文件系统代码一起使用;还有一个用于其他用途的接口,而不需要大量存储模式的

C)接口SD卡和USB,将SD卡作为本地文件系统管理,并通过管理一致性的网络文件共享类型机制授予PC访问权限。

( D)支持不止一个以上的模式,但作为独立的模式,不能同时活跃,需要大量的努力才能在两者之间切换。

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

https://stackoverflow.com/questions/19974503

复制
相关文章

相似问题

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