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.

[参考译文] TMS320F280023:存储器上电自检(MPOST)配置/结果错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1167573/tms320f280023-memory-power-on-self-test-mpost-configuration-result-error

器件型号:TMS320F280023

我认为我已将 MPOST 配置为运行、但我继续在结果存储器位置看到0x00000000 (未测试)。  使用 launch_ex1_f280025c_demo.c 作为起点、我修改了源文件和链接器文件、如下所示、使用0x5AFFFF3F 对 OTP GPREG2 (0x7800E)进行编程。

#pragma DATA_SECTION (Z1_GPREG_VALUE、"OTP_Z1_GPRG")
const uint64_t Z1_GPREG_VALUE = 0x5AFFFF3FFFFFFFFF;
#pragma RETAIN (Z1_GPREG_VALUE)

存储器

OTP_Z1_GPREG:origin = 0x0007800C,length = 0x00000004

部分

OTP_Z1_GPREG:> OTP_Z1_GPREG

加载调试器后、OTP GPREG2似乎已在存储器浏览器中成功编程。  

该程序还需要几秒钟才能开始、我知道这是 MPOST 的预期。

但是、当我查看存储器位置0x00000006以获得测试结果时、我看到0x00000000、表示未启用 MPOST。

您能帮我解决可能出现的问题吗?

谢谢、

Don

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

    其他信息...

    在 F28002x TRM 第4.7.10.2节"引导模式和 MPOST 状态"中、可以看到"C2000存储器上电自检(M-POST)应用报告"、其中提供了表 A-2 M-POST 状态、返回值为0xFFFFFFFF 以便成功进行测试。

    但是、在浏览 F28002x_ROM 源文件时、我发现 cpu1brom_pbist.h 中具有不同返回值且状态为0xFAABDEED 的以下内容是成功测试的返回值。

    //错误代码-用作返回值
    #define PBIST_ALWAYSFAIL_TIMEOUT_ERROR 0xFF00FF00U //预期失败测试未完成
    #define PBIST_ALWAYSFAIL_INCORRECT_OPERATION 0xFF11FF01U
    #define PBIST_DOUBLEINT_TIMEOUT_ERROR 0xFF22FF02U
    #define PBIST_MEMORYTEST_TIMEOUT_ERROR 0xFF33FF03U

    #define PBIST_MEMORY_TEST_FAIL_ERROR 0xFF44FF04U

    #define PBIST_MEMORY_LS_INITDONE_ERROR 0xFFAFF0AU
    #define PBIST_MEMORY_GX_INITDONE_ERROR 0xFFBBFF0BU
    #define PBIST_MEMORY_M0M1_INITDONE_ERROR 0xFFCCFF0CU
    #define Isarate_MEM_INIT_ERROR 16.

    #define PBIST_MASK_KET_ERROR_CODE_UPPER 0xFFFFFF0000U

    #define PBIST_MEMORY_TEST_IN_PROGRESS 0xFAAB123UL //在内存测试进行过程中返回状态
    #define PBIST_MEMORY_TEST_PASS 0xFAABDEEDUL //成功完成 MEM 测试的标记

    虽然我无法在调试中使 MPOST 在 LaunchXL 板上运行、但按照原始帖子中的指定对 OTP 进行编程、 然后在没有仿真器的情况下对电路板进行下电上电、内存测试似乎会运行、导致大约5秒、而对0x00000006的检查确实提供 了0xFAABDEED 值。   在没有对 GPREG2进行编程 的第二个板上运行相同的程序不具有延迟、并且在0x00000006处没有0xFAABDEED 值。   您能否确认 TRM 中引用的表不正确、 以及 cpu1brom_pbist.h 是否正确?

    此外、是否有方法让 MPST 在调试中运行?  我已经按照如下方式对 EMU_Boot 位置进行了编程:

    0xD00 = 0xFFFFFFFF

    0xD02 = 0x5AFFFF3F

    0xD04 = 0xFFFFFFFF

    0xD06 = 0xFFFFFFFF

    设置上述值后、我选择了"CPU Reset"和"Resume"、但它在引导 ROM 中命中了 ESTOP0。

    谢谢、

    Don

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

    您好!

    主题专家将在今天晚些时候再次与您交流。

    谢谢、此致、

    桑托什

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

    您好、Don、

    MPOST 测试仅在 PORSn 路径上运行。 TRM 中的器件引导流程图(图4-1)将在此处提供更清晰的说明。 只有在到达仿真引导路径后、EMU 引导模式才会被设定。

    谢谢、此致、

    Pawan

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

    您好、Don、

    应用报告显示了 F28004x 器件的错误代码。 对于 F28002x、您可以从头文件中引用错误代码。 我将了解如何改进文档以提供更清晰的信息。

    关于状态为0x00000000 -用于启用 Pbist 的 OTP 配置已正确配置、并且引导需要一些时间来确认这一点。 因此、我们可以得出这样的结论:pbist 已经执行。

    状态可能已被 GEL 文件或其他一些代码覆盖。 要消除 GEL 文件的作用,您能否在启动目标配置并连接到 CPU 之前将其删除?

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

    感谢对文档的澄清、它在调试之外似乎正常工作。  有没有关于为何无法使其在调试模式下运行的想法?  根据我的理解、在调试模式下重新启动时、它会查看仿真位置、而不是 OTP 存储器。  我已按如下方式设置仿真位置、但继续运行到引导 ROM 中位置0x3F4751的 ESTOP0中。  是否知道为什么设置0xD02后它是 Estop?

    0xD00 = 0xFFFFFFFF

    0xD02 = 0x5AFFFF3F

    0xD04 = 0xFFFFFFFF

    0xD06 = 0xFFFFFFFF

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

    谢谢、这也是我的理解。  但是、我认为在进入调试和设置位置0xD02后、您可以执行 CPU 复位、这将模拟 POR?  如果情况不是这样、是否有任何方法可以在 Debug 中测试和查看 MPOST 结果?

    谢谢、

    Don

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

    由于 MPOST 测试在 POR 复位时进行、因此无法直接调试。

    不过、您可以在连接 CCS 的情况下通过移动程序计数器并运行测试来绕过调试模式下的检查。

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

    谢谢你。