gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:40:50 25 4
gpt4 key购买 nike

我目前正在使用 Micrium OS-II 为 ST32 (STM32F103xC) 开发应用程序。到目前为止,一切都很顺利,但我现在遇到了障碍,无法继续。

开发板配置为使用 SD 卡作为 USB 存储设备,以便主机 PC 可以复制保存在设备上的文件。这工作正常,因为可以在 Windows 资源管理器中查看 SD 卡上当前的文件。

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

我不确定我知道这意味着什么。我可以写入文件的位置有限制吗?写作时是否必须禁用多任务处理? (哎呀,当然不是?)仅仅是因为我无法写入当前用作 USB 设备的 SD 卡吗?

最佳答案

事实上,您不能将 SD 卡作为大容量存储设备暴露给外部 USB 主机,同时将其作为文件系统挂载到本地。

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

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

列举您的选项,以下应该是可能的:

A) 接口(interface) SD 卡和 USB,将 SD 卡作为大容量存储设备无需本地访问

B) 接口(interface) SD 卡并将其与本地文件系统代码一起使用;还有一个 USB 接口(interface)用于其他目的 没有大容量存储模式

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

D) 支持以上一种以上,但作为独立模式不能同时激活并且需要大量努力才能在它们之间切换。

关于embedded - ST32 上的 FATFS,设备配置为 USB 驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19974503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com