Fatfs 关于sd卡初始化问题请教?

greatriver007 2011-05-22 11:22:41
Fatfs 关于sd卡初始化问题请教,小弟最近在学习fatfs 这个据说很优秀的文件系统,用的是最新的0.08版本。
现在已经能够知道如何调用和运用fatfs来做一些简要的操作。
但是我有个问题,关于系统如何调用sd卡初始化的,我通过仔细看了后发现调用sd卡初始化的函数是
1、chk_mounted 没有任何条件直接 调用stat = disk_initialize(fs->drv);
2、f_mkfs 调用 stat = disk_initialize(drv);

关于f_mkfs 我不是很了解,但是 关于chk_mounted 这个函数是检查
/* Check if the file system object is valid or not */
关于它的调用就很多了...
....................................................................................................
f_open mode &= FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW;
res = chk_mounted(&path, &dj.fs, (BYTE)(mode & ~FA_READ));
...................................................................................................
f_chdir
res = chk_mounted(&path, &dj.fs, 0);
...................................................................................................
f_getcwd
res = chk_mounted((const TCHAR**)&path, &dj.fs, 0); /* Get current volume */
...................................................................................................
FRESULT f_opendir
res = chk_mounted(&path, &dj->fs, 0);
...................................................................................................
FRESULT f_stat
res = chk_mounted(&path, &dj.fs, 0);
...................................................................................................
FRESULT f_getfree
res = chk_mounted(&path, fatfs, 0);
...................................................................................................
FRESULT f_unlink
res = chk_mounted(&path, &dj.fs, 1);
................................................................................................
FRESULT f_mkdir
res = chk_mounted(&path, &dj.fs, 1);
.................................................................................................
FRESULT f_chmod
res = chk_mounted(&path, &dj.fs, 1);
...............................................................................................
FRESULT f_utime
res = chk_mounted(&path, &dj.fs, 1);
...............................................................................................
FRESULT f_rename
res = chk_mounted(&path_old, &djo.fs, 1);

以上是我一一罗列出来 关于最终调用sd卡初始化的相关函数,我有一个很大的疑问?为什么每次操作这些函数都要初始化一次sd卡呢?为什么不是开始的时候初始化一次就完成了呢?
在我印象中sd卡重要初始化一次,后面的都可以直接操作读写了

还有一点要说明的是这个fatfs 文件系统在网上评价很高,而且我也亲自测试了,这个确实是很优秀的。

望各位熟悉的能够给我指点,关于这个sd初始化为什么要操作这么多次,我印象中初始化每次都要等待比较长的时间的。
...全文
910 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
q45213212 2012-11-05
  • 打赏
  • 举报
回复
的确 有答案了 f_mount函数在FatFs模块上注册/注销一个工作区。在使用任何其它文件函数之前,必须使用该函数为每个卷注册一个工作区。要注销一个工作区,只要指定FileSystemObject为NULL即可,然后该工作区可以被丢弃。   该函数只初始化给定的工作区,以及将该工作区的地址注册到内部表中,不访问磁盘I/O层。卷装入过程是在f_mount函数后或存储介质改变后的第一次文件访问时完成的。
q45213212 2012-11-05
  • 打赏
  • 举报
回复
对于这个问题我也有疑问,但是我理解,可能你列举的那些调用disk_initialize的函数目的主要在于检查sd卡是否初始化,而这些函数相对于读取sd卡上的数据次数相比,调用的次数还是很少的 我发现这个问题是看别人的例程在main里都没有调用disk_initialize,而应该是在f_open的时候直接初始化sd卡,那是不是在sd卡初始化之前就可以f_mount呢?
greatriver007 2011-05-22
  • 打赏
  • 举报
回复
好像没人回答啊
内容概要:本报告基于寻汇与万事达卡在2026年联合发布的《超越自动化:定义智能体驱动的全球支付》白皮书,系统分析了AI智能体在B2B跨境支付领域的应用与发展。报告指出,传统跨境支付存在效率低、人工干预多、合规风险高等问题,当前正从数字化、数据化迈向“自主化”新阶段。AI智能体可在授权下自主完成支付、换汇、合规审核、对账等全流程操作,核心技术包括深度强化学习、自然语言处理和图神经网络,用于路径优化、合规解析与异常检测。报告揭示了决策可解释性不足、跨系统协同标准缺失、安全审计机制缺位三大研究空白,并探讨了法律责任归属、监管碎片化、数据主权与技术可靠性四大现实挑战。寻汇与万事达卡的合作构建了“智能体编排引擎”与全球合规决策网络,首次提出L0-L5的智能体自主化等级框架,推动行业标准化。预计2026至2027年将实现首批大规模商业部署,提升支付效率超30%。; 适合人群:金融科技研究人员、AI技术开发者、跨境支付行业从业者、企业财资管理人员及政策监管机构相关人员。; 使用场景及目标:①理解AI智能体在跨境支付中的技术架构与应用场景;②把握自主化支付的演进趋势与商业化前景;③为金融机构和技术公司布局AI驱动型支付系统提供战略参考;④助力监管机构制定适应智能体时代的合规框架。; 阅读建议:本报告兼具技术深度与产业视野,建议结合白皮书原文及相关技术文献对照研读,重点关注智能体决策逻辑、合规实现机制与跨系统集成方案,并关注后续试点项目的实际成效与监管反馈。

27,522

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧