This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:为什么 Fatfs 在复制和重命名文件时在 SD 卡中创建未知/奇怪的文件??

Guru**** 2298450 points
Other Parts Discussed in Thread: TM4C1294NCPDT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/667174/tm4c1294ncpdt-why-fatfs-is-creating-unknown-weird-file-in-the-sd-card-while-copying-and-renaming-the-files

器件型号:TM4C1294NCPDT

你(们)好  

我正在使用 fatfs 文件系统和 Tm4c1294ncpdt 微控制器。 我们板上有两个 SD 卡、另一个是辅助卡。连接 到主 SD 卡和 MC 的外部摄像头具有辅助 SD 卡。Mc do 图像处理输出文件将其保存在另一个目录中、并将原始文件移动到另一个目录中并重命名此文件 时间戳的文件。 现在、在完成图像处理后、Mc 将 切换到另一个 SD 卡作为主存储卡、将摄像头切换到次存储卡、这是一个持续的过程。

现在我的问题是、在运行2-3天后、文件系统开始创建一些奇怪的文件、有时还会损坏 SD 卡扇区/群集。 我不知道为什么会发生这种情况。 请允许我提出一些建议,以缩小问题范围。

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Dev、

    您能否提供有关将此应用程序整合在一起时使用的示例固件的详细信息? 您是否使用了[Install Path]\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\sd_card 中的示例作为基础? 我提出这一问题、因为我不知道在没有某种起点的情况下、如何尽可能提出问题的建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    您是否使用了[Install Path]\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\sd_card 中的示例作为基础?

    是的,我使用这作为参考,但使用 R0.13a 更新了文件系统。在上面的示例中,文件系统为 R0.09b。根据它,我更改了一些函数和 ffconf.h 设置。

    我有一个疑问,如果摄像机有不同的文件系统,那么在 SD 卡上写入映像时,它可能会损坏文件系统或扇区/cluster。因为它不是每一次发生,而是在2-3天内发生。 因此、我无法调试问题、也无法找到发生问题的具体功能/区域。

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Dev、

    感谢您提供更多详细信息、问题本身现在变得更清楚、但遗憾的是、我们对 FATFS 或 SD 卡格式不了解、因此我不确定我能提供多大帮助。

    我有一个相当自信的事情是摄像机上的旧文件系统不应影响您使用 MCU 上的最新文件。 声称它们向后兼容较旧版本: http://elm-chan.org/docs/fat_e.html

    现在、就如何调试问题本身而言、一种方法是提出某种形式的应力测试。 您提到该问题很少发生、因此我将研究在发生之间处理了多少个图像、然后查看您是否可以将该过程加快到您可以实际观察和调试的程度(可能需要使用摄像头以外的硬件?)。

    此外、他们似乎还拥有 R0.09b 至 R0.13a 更新表的完整版本说明: http://elm-chan.org/fsw/ff/updates.txt -您可能希望查看这些说明、看看您是否使用了任何函数、并且这些更新可能会受到影响。 可能是由于错过了 API 更新而导致出现此问题。

    另一个调试思路是尽可能利用 UART 在软件中添加调试消息。 只有在器件插入 PC 时出现问题时、这才会起作用、但如果是、您可以打印过程中每个步骤的 UART 调试日志、然后查看是否可以确定问题发生时错过/失败的步骤。 如果您怀疑您将从它们获得大量 UART 数据、我建议您也添加时间戳、以便您可以将 UART 输出日志与 SD 卡上的文件创建进行比较。

    我希望其中一个想法对您有所帮助、很抱歉、我们在这个主题上没有更多的专业知识。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    除了(非常)健全的指导供应商的 Ralph 提供的产品外、请考虑:

    • 不清楚(至少对我而言) SD 卡是否损坏。   改用其他(已知良好) SD 卡并重复您的观察是否明智?
    • "SD 卡"的拆卸和重新插入状态是什么?   这种情况发生的频率如何?   我们已经看到过这样的情况、即在错误的时间执行的拆卸/插入可能会导致此类问题。
    • 您的电路板电源的状态是什么-在整个"2-3天损坏"事件中、是否存在"贯穿"?    或者-电路板是否自由(或定期)供电/断电?   电源(真正)是否足够?   您是否在所有工作条件下(以及最近)进行了测量 -尤其是在"写入 SD 卡"时?
    • 电路板"附近"是否有高电流或高噪声(继电器、传动器)或高频开关源?
    • 使用(附近)手机或其他射频源可能会使 SD 卡陷入困境?
    • 您是否曾尝试过"复制但不重命名文件?"   (实际上-几乎无用-除了我对您的"重命名"过程提出挑战/进行探究。)
    • 并且-如果您在 每个 SD 卡中创建了"数量合理的"已知良好"文件-并且"不尝试"进行"复制和重命名"-那该怎么办?   (此类测试用于确认(您)问题原因的识别。)

    事实证明、采用"波 efy PCB 走线为 SD 卡供电并缩短其长度是明智的。   信号线路布线也应直接连接-避免剧烈弯曲。

    通常、将示波器探头连接到电路板的电源(特别是此处的 SD 卡电源)并触发 "If and Only if " the voltage "wander"(outside) low or high bounds (如果并且仅限于)。   (即创建一个"窗口式模拟比较器")

    当您对许多潜在原因"开放"时- kiss (一次一个可衡量的系统步骤)被证明是"您发现和解决问题的指南..."

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、

    *喜欢*! 感谢您分享有关需要考虑的进一步故障的出色见解、感谢您的整个系统视图输入(包括此处和昨天的电机/推进螺纹)!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    收到您的好评价(尤其是"喜欢") -谢谢-感谢。

    正如 Crack Millennial 员工(经常)指出的那样-"我们的工厂中已排放了足够多的烟味!"    似乎(几乎)合理-我们"学到了一些东西"。   (可能)

    我们的外部人员可以(很少)与您所在团队的"智慧和内在知识"竞争。   然而、通常情况下、"整体系统视图"(由"避免进一步冒烟/起火"的愿望所建议)可能适用于"海报优势"。

    或许可以指出、"不同的观点"-有时会这样做-提供真正的优势... 再次感谢...   (感谢您提供"建议的答案:Hi-Lights -我绝不会"自我奖励!")

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../moul_5F00_26feb.txthi、

    感谢您的建议。

    我 已经完成了所有更新文档和更新自述文件。 根据这一点、我进行了所有更改、但我将再次对此进行研究。

    是的、我使用 UART 来调试问题、并且我正在保存调试日志。 在这种情况下、不会出现这样的故障情况、只是6-7天后出现一些挂起问题。为此、我将启用看门狗计时器。

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 CB1_MOBILE

    * SD 损坏不是静态的,两个 SD 均已损坏或其中任何一个。两个 SD 卡的类型相同(10 8Gb SD 卡)。

    *当 MCU 空闲时,MCU 进入休眠模式。这也会切断 SD 卡连接器的电源。

    *但多路复用器根据 摄像机电源引脚切换 SD 卡,如果摄像机关闭,我们将切换 SD 卡。 在卸下电源后插入/卸下 SD 卡。

    *没有高频开关源。

    *但有 CDMA 模块,但目前它没有使用。

    *这是我复制和重命名的方式。

    void EPROM _image (void)
    {
    uint8_t Folder[200]={"/sed/"};//将文件保存
    到已发送的文件夹
    中// iFResult = f_mkdir ("/sent);//创建新目录
    sprintf ((char *) Folder、"/sed/%s"、dest_name);
    if ("/udebug_t_t
    
    
    
    
    )("0xt_debug_t_t_t_t_t_debug_t)(*);if ("0xt_debug_t_debug_t_t_t_t_t_t_t_debug_t_t_t_t_trug_t_t)(*)("_t_debug_print_t_t)("_t_t_
    Debug_print (((uint8_t *)"更改为");
    debug_print ((uint8_t *)文件夹);
    debug_print ((uint8_t *)"\r\n");
    iFResult = f_rename (char *)、FIL_name、(char *);
    
    if (iFint8_rt_debug_t
    
    
    
    
    
    
    
    )(
    *!(uint8_t_debug_t)(*)!(uint8_rt_debug_t)!(uint8_t_rt_rt_rt_rt_rt_rtf)!(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    
    
    
    
    iFResult = f_unlink ((char *)(FIL_name));
    }
    }
    
    }否则
    {
    iFResult = f_unlink ((char *)(FIL_name)));
    debug_print_time ();
    Debug_print (((uint8_t *)"\t\t");
    debug_print ((uint8_t *)"重命名");
    debug_print ((uint8_t *) original);
    debug_print ((uint8_t *))(uint8_t_debug_print
    
    
    )
    
    
    
    
    (*)(uint8_t_t_t_rt_debug_t
    
    
    )(*)(uint8_t_t_rt_rt_print (uint8_t_rt_rt_debug_t))(*)(uint8_rt_rt_rt_rt_rt_rt_print (*)(uint8_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_print)())(*)(uint8_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_rt_print (*))()())
    
    
    
    
    
    Debug_print (((uint8_t *)"失败!!因此删除");
    debug_print ((uint8_t *) original);
    debug_print ((uint8_t *)"\r\n");
    f_unlink (char *)(original);
    }
    
    
    }ClearBuffer (((char *) temp_f_f_flu_name)(
    
    如果需要覆盖)、
    则需要0x20_memory_unchar (char *)、则需要)/unlink)(如果需要覆盖)、则需要覆盖)、则需要覆盖)/pruelegotrul_misl"(0x20_f_memory/f_pruel/f_misl"(如果需要)、则需要)、则需要)
    
    //如果内存已满,则根据设置
    ClearBuffer((char*)FIL_NAME);
    sprintf(((char *)FIL_NAME,"%s",temp_FIL_NAME);
    }进行处理
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢您-您提供的"新详情"始终能帮助我们"推动解决方案发展"。

    这是我们第一次注意到"休眠"正在发挥作用。    您的操作中有(许多)个变量-有些是" SD 卡干扰的候选项"-在这种情况下很难知道"从哪里开始"。   我建议您(暂时)从混合模式中删除"休眠"、并像以前一样运行系统、看看 "休眠"是否证明了"因果关系"。   (这是我最主要的怀疑——我认为!)

    您已"自行诊断"由 "复制和重命名文件"触发的问题-而这些文件驻留在两个(附加的) SD 卡上。   我可以问:"你是如何得出这样的结论的?"   在合理地"扫描"这个建筑线程之后-我找不到您的解释和理由-得出这样的结论。   我想很多人会同意-(正如您的主题行注释中的讽刺)-如此简单(复制和重命名文件)-导致 SD 卡损坏-是一个(很多)意外的事件!

    我现在从您的初始帖子中引用、"现在我的问题是、在运行2-3天后、文件系统开始创建一些奇怪的文件有时它还会破坏 SD 卡扇区/群集。"

    "细节"(在某种程度上)对您来说是否有用?"细节"(在这段时间内、" 2-3天间隔"期间发生了什么)-在"检测(或)怪异或损坏"之前?    您的报价中有一条包含的条款会产生 不确定性、即"在运行文件系统2-3天后"、这表明您已经"运行系统-可能会更新 SD 卡"。    但是-如果 添加标点符号、"在2-3天后、-(然后)运行文件系统!"   这是对您的第二个解释,表明您的系统“闲置2-3天”-并且您的问题仅在2-3天之后出现(或被注意到)。”     请您澄清一下-我们认为这很重要。

     首先注意到问题的"方式和时间"仍然不清楚?   我已要求您创建(仅限于) "已知良好文件"、并将这些文件存储在两张 SD 卡的每张卡上、然后"让系统在类似的2-3天期限内自行运行"。   然后-测试"奇怪/损坏!"    由于"没有文件被"复制或重命名"-如果(现在)发生损坏-您的诊断可能被证明是"不完整"。   (可能仍会出现-但其他问题刚刚证明存在!)

    最终建议-在我之前代表您创建的"诊断列表"中-显示(不)已被采纳。   但这些是我认为"远远"的那些(在这里重报)、"确认"不太可能的诊断"。

    由于公司和我都没有使用您的 MCU、 因此如果供应商代理能够很好地审查您的代码并判断其有效性、这将非常有帮助。   我会注意到、"复制和重命名"代码的关键方面之间的"添加延迟"可能会有所帮助...   (甚至"求解!")

    最后一点-您提到添加了"摄像头和 SD 卡"-您(绝对)是否确定您的电路板电源-证明是足够的-尤其是在"如此多的外部器件正在消耗电流时?"   (公司/我发现此类问题-由功率不足(在特殊情况下)引起-通常足以警告您"测试和验证"。   (希望/猜测证明是不可接受的...)

    建议您遵循先前诊断列表中的后续建议。   需要将变量最小 化(实际上是丢弃的)-这些建议 朝着这个方向发展...

    如果-在真正"关注并明确报告您的发现"之后-未能实现预期结果- 我的公司已将 "独特且高度先进的方法"发展为 "加快并提高此类故障/问题的出现速度"-这肯定 有助于/推动诊断。   (我被禁止在这里演示这些内容-您可以通过 PM (通过 PM)本论坛与我们私下联系-如果有人寻求这样的信息...)

    您目前的情况是 :"强烈反对亲吻"-而且"过多的"角落/缝隙"(尤其是先前确定的"休眠")可能会(继续)过度挑战!