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.

[参考译文] TMS570LS1114:ERROR_TwoCopyVS FEE 错误

Guru**** 2524550 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN, UNIFLASH, TMS570LS1114, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1172470/tms570ls1114-error_twocopyvs-fee-error

器件型号:TMS570LS1114
主题中讨论的其他器件:HALCOGENUNIFLASHTMS570LC4357、TMS570LS3137

  初始化 FEE 时、我在 TI_FEE_GlobalVariables[0].FEE_Error 中获取 Error_TwoCopyVS 错误。 我正在尝试将 TI_FEE_ErrorRecovery ()添加到我们的初始化函数来处理此问题。 请参阅下面的代码片段。

我对如何发送 TI_FEE_ErrorRecovery ()进行了最好的猜测-我应该发送其他消息吗?

发生的情况是 do-while 循环永远不会在 FEE_Init ()中退出。

空 FEE_Init (空)

UINT16 STS;

//初始化费用。 这将创建虚拟扇区、初始化全局变量等
TI_FEE_Init ();
操作

TI_FEE_MainFunction ();
FEE_DELAY ();
如果(TI_FEE_GlobalVariables[0].FEE_Error!= Error_Nil)

TI_FEE_ErrorRecovery (TI_FEE_GlobalVariables[0].FEE_Error、TI_FEE_GlobalVariables[0].FEE_u8ActiveVirtualSector);
}
STS = TI_FEE_GetStatus (0);
}
while (STS!= IDLE);
}//--end void fee_Init (void)

/*费用公布信息*/
#define TI_FEE_MAJOR_VERSION 3U.
#define TI_FEE_MINOR_VERSION 0u
#define TI_FEE_PATCH_VERSION 2U
#define TI_FEE_SW_MAJOR_VERSION 1U
#define TI_FEE_SW_MINOR_VERSION 19U
#define TI_FEE_SW_PATCH_VERSION 4U

#define TI_FEE_virtual_sector_version 1U

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

    您好、James:

    根据设计器信息、最新 TI_FEE 时不应发生这个错误

    (+)使用 FEE 纠错-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    那么、您正在使用哪个版本的 HALCoGen?

    如果你在使用旧的,你是否有可能升级到最新的?

    --
    谢谢。此致、
    Jagadish。

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

    我们遇到了在 运行 FEE_Init ()时出现 TI_FEE_GlobalVariables[0].FEE_Error UP 错误、并且其中的 do-while 循环不会退出的情况。 我能够在闪存中捕获 FEE 映像来重现问题和调试。 我们不确定 FEE 是如何进入这种腐败状态的。 上述代码出现这种情况的前几次起作用。 第三个 例子没有。 我做了一些实验并将传递给 TI_FEE_ErrorRecovery ()的第二个变量更改为 TI_FEE_GlobalVariables[0].FEE_u8CopyVirtualSector、这似乎为我捕获的任何损坏的 FEE 图像提供了技巧。 已禁用 HALCoGen 04.07.01。 上述代码片段中列出的 FEE 代码版本。  

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

    您好、James:

    很抱歉 我的答复出现拖延。

    您能分享您的代码吗? 我们最终很容易调试问题、因为您提到的问题最终不会触发

    --

    谢谢。此致、
    Jagadish

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

    请参阅随附的 zip 文件。 其中包括从 BANK7捕获的三个二进制文件,它们将在 FEE_Init ()期间生成 Error_TwoCopyVS 错误代码。 如果 if (TI_FEE_GlobalVariables[0].FEE_Error!= Error_Nil)语句中包含的行被注释掉,则从 main ()调用 TI_FEE_Init ()时将不会退出。 此外,还包括所有 ti_fee 代码和 FEE 代码以及 FEE_Init ()。 为了进行调试、我使用 Uniflash 将其中一个 exported-image.bin 文件编程到 BANK7中、并在 调试会话中确保在使用调试器加载代码时未触及调试闪存设置中的组7。  

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

    您好、James:

    感谢您分享代码、我开始了调试。 我很快就会为您提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    您好、James:

    要进行调试,我使用 Uniflash 将其中一个 exported-image.bin 文件编程到 BANK7,并且在 调试会话中,请确保在使用调试器加载代码时未在调试闪存设置中触及组7。

    我真的对你在这里要做的事情感到困惑、我不明白你为什么要在运行费用之前将二进制文件编程到闪存的 BANK7。

    银行7仅用于收费

    FEE 主要用途是将少量的配置数据存储在非易失性存储器中。 和 FEE 例程用于存储和获取这些小数据块、因此我不明白您为什么要通过 uniflash 来编程二进制文件、而不是使用闪存组7中的 FEE 例程在运行时写入数据。

    --

    谢谢。此致、
    Jagadish。

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

    费用在我们的应用程序中的某一点损坏,导致我包括的图像。 一旦损坏, Error_TwoCopyVS 错误代码 将出现,代码将在下一次运行代码时卡在 FEE_Init ()中。 唯一的方法是使用 Uniflash 对我们的董事会进行重新编程、从而清除 BANK7中的费用。 if (TI_FEE_GlobalVariables[0].FEE_Error!= Error_Nil) 语句中添加的代码我能够检测到 Error_TwoCopyVS 错误代码并尝试运行 TI 的 TI_FEE_ErrorRecovery ()函数以从此损坏的费用中恢复。 没有有关如何使用 TI_FEE_ErrorRecovery ()的文档,我希望通过在此处发帖获得更多见解。 如注释中所述,我对 FEE_Init ()输入 TI_FEE_ErrorRecovery ()的某些全局变量的效果似乎要比其他变量更好,以便从损坏的费用中恢复。 很高兴知道我发送的 TI_FEE_ErrorRecovery ()的全局变量 对 TI 是否有意义,这样我就可以确信我能够正确处理 FEE 腐败问题。 我知道 TI 已经说 不应该出现 Error_TwoCopyVS、但我已经看过三次。 我不知道费用是如何腐败的,这是另一件事。 但现在我想说的是如何正确处理 FEE 腐败,正如前面所说的,文档没有明确如何使用 TI_FEE_ErrorRecovery () .

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

    您好、James:

    这需要与内部团队讨论、请预计会有延迟。

    --

    谢谢。此致、
    Jagadish。

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

    您好、James:

    很抱歉耽误我的时间、我已经在长假了、现在我可以访问费用来源代码了。

    我来验证一下、然后再给您回电话。

    --

    谢谢。此致、
    Jagadish。

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

    您好、James:

    问题似乎是由旧的 LDRA 引起的、您正在使用哪个版本的 LDRA?

    请将其升级到最新的 LDRA。

    --

    谢谢。此致、
    Jagadish。

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

    我们不使用 LRDA。 您指出的 ti_fee.ini.c 只是从 Halcogen 生成的。 Halcogen 是否需要解决某些问题?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Halcogen 中是否有需要解决的问题?  [/报价]

    让我和专家来讨论这个问题。

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

    您好、James:

    您能提供费用转储来分析数据吗?

    --
    谢谢。此致、
    Jagadish。

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

    下面是一个附加的费用转储。

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

    您好、James:

    感谢您分享数据、让我来分析并回复您。

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

    您好、James:

    我 成功地将您的数据转储到费用中

    Unknown 说:
    在 FEE_Init ()中, do-while 循环永远不会退出,这会发生什么情况。

    我可以看到您提到的这种行为。

    我想进行调试、为什么会发生这种情况。

    在我的测试中、我没有收到任何"Error_TwoCopyVS"错误。

    我只能看到 Error_Nil。 您能否最终确认同样的事情?

    ——

    谢谢。此致、
    Jagadish。

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

    程序卡在 FEE_Init ()和 TI_FEE_GlobalVariables[0].FEE_Error 为 Error_TwoCopyVS。  

    我无法使用内存浏览器查看 FEE 内存、但这里是我使用 Uniflash 加载 exported-image1.bin 时的情况。

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

    您好、James:

    您能否像我一样在 HALCoGen 中提供您的费用配置?

    --

    谢谢。此致、
    Jagadish。

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

    我们不会配置使用 halcogen、因为我们使用的 FEE 块比 halcogen 可以配置的多。 我们从 halcogen 修改了内部配置文件以供使用。 这又是 ti_fee 配置文件。

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

    您好、James:

    我根据您的配置修改了代码、仍然看不到 Error_TwoCopyVS、而不是看到 Error_CopyButNoActiveVS。

    还有一点、如果您确实擦除了整个闪存并新鲜重新使用了费用、会发生什么情况? 您是否遇到了任何问题、或者它是否运行良好?

    --

    谢谢。此致、
    Jagadish。

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

    如果擦除整个闪存、则所有内容再次工作(无错误、因此不会再卡在 do-while 循环中)。 由于出现错误,相应的  TI_FEE_ErrorRecovery ()调用将会如何处理,以便 do-while 循环可以退出? 如前所述,我尝试了几次尝试,猜测在 TI_FEE_ErrorRecovery ()中传递什么结果,结果好坏参半。  

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

    您好、James:

    在遇到错误时,正确的  TI_FEE_ErrorRecovery ()调用将会如何处理此问题,以便 do-while 循环可以退出?

    所以、我修改了下面的代码、它对我很有效。

    --

    谢谢。此致、
    Jagadish。

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

    您在 TI_FEE_Recovery ()中参考了什么文档? 对于我收到 Error_TwoCopyVS 的错误,应该将错误信息发送至 TI_FEE_Recovery ()来处理该错误?

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

    您好、James:

    它是"TI FEE 用户指南"

    --

    谢谢。此致、
    Jagadish。

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

    好的,该文档没有说明应该在 TI_FEE_Recovery ()调用 Error_TwoCopyVS 中为 VirtualSector 参数使用什么。 应该使用什么?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    TI_FEE_Recovery ()调用 Error_TwoCopyVS。 应该使用什么?  [/报价]

    这是因为、

    根据设计人员信息,最新的 TI_fee
    不会发生此错误

    我尝试进行复制  Error_TwoCopyVS 在我结束时你的费用转储数据出错,但我没有得到这个错误,而不是我得到的  Error_CopyButNoActiveVS。

    --

    谢谢。此致、
    Jagadish。

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

    好的,我已经创建了一个简单的通用项目,就像 main ()中的 fee 初始化例程一样,而 ti fee 配置文件更新为我们使用的文件。 我会将先前使用 Uniflash 发布的其中一个已导出的二进制 FEE 图像加载到0xF0200000中。 我调试程序、并收到 Error_TwoCopyVS。 请尝试此操作。

      

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

    谢谢 James、让我试试这个。

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

    您好、James:

    我不明白您为什么在您的项目中包括了以下库

    实际上、在一个示例项目中、 包含"F021_API_CortexR4_BE_V3D16"

    下面是我针对 LC4357项目的 Filer 搜索路径设置。

    您能否尝试从以下路径下载最新的闪存 API 驱动程序并重新进行配置?

    F021FLASHAPI 驱动程序或库| TI.com

    --

    谢谢。此致、
    Jagadish。

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

    实际上、项目中的文件夹是 F021 flashapi 驱动程序最新版本。  添加库的方法要简单得多。 我已经按照您的建议更新了我的示例项目。 无论是   使用 F021_API_CortexR4_Be_V3D16 (电路板上使用的 TMS570LS1114的 Halcogen 默认加载)还是 F021_API_CortexR4_BE_L2FMC_V3D16_NDS.lib (可能是 LC4357的默认值) 、结果都是相同的 Error_TwoCopyVS。 请参阅随附的项目和屏幕截图。 当您尝试这个项目时、如果把我之前发布的导出图像中的一个加载到处理器费用内容上、会得到什么?  

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

    您好、James:

    我按照您的建议更新了我的示例项目。

    您能尝试创建一个新项目并按照我提到的方式进行更新吗?

    之后、尝试转储您提供的 FEE 数据、从而查看问题。

    实际上、我怀疑还有另外一个问题、我现在在 TMS570LC4357上测试您的数据、因为我没有任何 TMS570LS1114器件板、这可能是因为我无法在最后触发此问题

     如果我未能触发这个问题、我将再次在我的 TMS570LC4357板上进行尝试、然后我们会考虑寻找替代方案来触发这个问题。

    --

    谢谢。此致、
    Jagadish。

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

    好的, 我创建了另一个准系统项目,并使用了 example_TI_FEE_Write_Read.c 作为 main ()的源代码。  我还再次转储了 FEE 数据、请参阅 exported_fe_example-image.bin。 以附加的 FEE_example.zip 中的方式对图像进行工程和导出。 还提供了显示调试会话的屏幕截图、其中显示 观察到的 Error_TwoCopyVS。

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

    感谢 James 提供的项目、我将详细介绍、并很快提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    您好、James:

    在使用 TMS570LS3137电路板测试转储数据后、我最终能够触发您的问题。 实际上、TMS570LC 和 TMS570LS 器件存在扇区大小差异、这就是我未能在最后触发您的问题的原因

    让我进一步调试您的问题、以便提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    您好、James:

    在"TI_FEE_Init"函数之后使用以下恢复代码:

        do
        {
            if((TI_Fee_GlobalVariables[0].Fee_oStatus == TI_FEE_ERROR) && (TI_Fee_GlobalVariables[0].Fee_Error == Error_TwoCopyVS))
            {
                TI_Fee_ErrorRecovery(Error_TwoCopyVS,TI_Fee_GlobalVariables[0].Fee_u8CopyVirtualSector);
            }
            TI_Fee_MainFunction();
            delay();
            Status=TI_Fee_GetStatus(0 );
        }
        while(Status!= IDLE);

    --

    谢谢。此致、
    Jagadish。

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

    谢谢。 您是否有关于 FEE 内存如何进入状态以生成 Error_TwoCopyVS 错误的见解?

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

    您好、James:

    FEE 内存如何进入状态以生成 Error_TwoCopyVS 错误?

    是的、这个部分对我来说也很令人困惑、因为在给定的时间内、只有一个活跃扇区、如果这个扇区被填满、那么它将被标记为复制扇区、并且有效数据将被复制到新的活跃扇区中。 因此、在任何给定时刻、应该只有一个复制扇区、就像活动扇区一样。

    不明白您最终如何产生此错误、您是否进行了配置更改并下载了代码而没有擦除先前的费用?
    可能是这种用户错误应该会导致  Error_TwoCopyVS 错误。

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

    我们的任何软件缺陷从未改变过 FEE 配置。 您所描述的行业板块填充/标记过程需要多长时间? 电源干扰是否可以通过这种方式中断该过程以导致此错误? 不确定这种可能性、只是在这里展开头脑风暴。  

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

    您好、James:

    我将与内部团队讨论一次、然后再与您联系。

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

    您好、James:

    很抱歉延迟、仍在尝试联系内部团队讨论此问题。 我很快就会提供更新。

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

    您好、James:

    因为我们 已经有权变措施、所以我希望延迟不会产生太大影响。

    --

    谢谢。此致、
    Jagadish。

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

    您提到的权变措施是什么?  

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

    您好、James:

    很抱歉耽误你的时间、我上周在度假。

    您提到的权变措施是什么?  [/报价]

    我的意思是错误恢复函数、可以对应"Error_TwoCopyVS"。

    --

    谢谢。
    Jagadish。

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

    是的,每当 Error_TwoCopyVS 发生时,错误恢复函数似乎在做什么,我很高兴我现在知道如何使用该函数,如果该错误发生。 我只询问了另外一个问题、即 TI 认为导致出现错误情况的原因可能是什么。 您询问我们是否要在我们的软件更新中更改费用配置、我说不 我集思广益、询问在您提到的部门填充/标记过程中电源干扰是否会导致此错误、但没有得到响应。  

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

    您好、James:

    内部团队分析您的数据,我们将尽快提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    您好、James:

    我将您的数据转发给内部设计团队、我收到了以下反馈

    我正在考虑以下情况:
    FEE 开始从扇区3复制到扇区0。
    在这期间,电源关闭了。 扇区标头位的编程松散。
    -在下一次电源循环后,扇区0标头被读取为无效,FEE 开始将数据复制到扇区1 ,但电源再次关闭。
    -在下一次电源循环中,FEE 将两个扇区读取为副本,并抛出错误。

    --

    谢谢。此致、
    Jagadish。