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.

[参考译文] TMS320F280025C:在 PBIST 程序中找到故障状态-端口0/端口1、但不知道它的确切含义以及为什么使用两个端口。

Guru**** 2398695 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1331106/tms320f280025c-found-fail-status---port-0-port-1-in-the-pbist-program-but-don-t-know-what-it-means-exactly-and-why-two-ports-are-used

器件型号:TMS320F280025C
主题中讨论的其他器件:C2000WARE

大家好、

客户有问题需要您的帮助:

文件路径为 C:\ti\c2000\C2000Ware_5_01_00_00\libraries\boot_rom\f28002x\rev0\rom_sources\F28002x_rom\bootROM\include\cpu1brom_pbist.h

如下图所示、定义了两个寄存器

因此、我们需要查明、

1.为什么使用 port0和 port1,它是否与 PBIST 需要测试的存储体有关?

2.在什么情况下 port0 port1会失败?

此致、

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

    您好!

    有任何更新吗?

    此致、

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

    Ben、

    很抱歉耽误你的时间、今天这个帖子被重新分配给我。  我需要多花一天时间来了解这一点。  将回复至正常时间。

    此致!

    马修

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

    Matthew、您好!

    有任何更新吗?

    此致、

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

    Ben、

    我认为这一功能从整个 TI 的 PBIST 全局库中延续而来、并且在 F28002x 器件上未使用 Port1、即它绝不会触发故障。  

    有些器件具有双端口 SRAM、这意味着支持一次连接2个数据总线。  C2000在 SRAM 外部具有仲裁控制器(如 CPU 和 DMA、或 CPU 和 CLA)、因此我们在器件中只有单端口 SRAM。

    PORT0/1故障是整体存储器故障的子集、可在出现故障时提供更高的粒度。  从客户 POV 来看、无关紧要、将记录故障、PBIST 错误代码将仅指示出现故障。  我认为该 PORT0/1更适合在出现故障时进行调试、它既是端口也是端口之一。  但在任何情况下、C2000都不会使用它。

    此致!

    马修

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

    Matthew、您好!

    路径 C:\ti\c2000\C2000Ware_5_01_00_00\libraries\boot_rom\f28002x\rev0\rom_sources\F28002x_rom\bootROM\source 中有一个 cpu1brom_pbist.c 文件。 这个文件是 PBIST 测试的主程序、其中有一个 PBIST_PORMemoryTest。 函数时、该函数的条目在0x3f5485处。  我们通过 PC 指针直接跳转到该位置、然后通过它进行单步执行。  他有一个在早期阶段未能执行的用例。 4x 器件的 mPOST 文档(第一张图片)中提到了这一点。 2个器件也存在此过程。  该用例是测试 ROM、但最终端口0和端口1都失败。  我们理解工程师 Matthew 所说的  RAM 具有双端口和单端口的情况、但 ROM 理论上应该是单端口、但失败的用例结果表明测试 ROM 的端口0和端口1同时出现故障。  另外一点是在2x 器件中定义了单端口 RAM 和双端口 RAM (第三张图片)、但在测试过程中、发现端口0和端口1在单端口 RAM 中都出现故障、但在双端口 RAM 中仅端口0出现故障。 IC 的故障造成。  这种现象可能与 您所描述的不同。

    此致、

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

    Ben、

    我将需要跟踪我们的测试团队设计、了解这一点。  客户是否尝试过按照建议的方式运行 PBIST、即在 OTP 中的 GPREG2中启用并对器件启动 POR (上电复位)?  PBIST 状态应该在 M0 RAM 内被捕捉。

    还有提到第一/第二/第三图片,但我只看到一个附件。  与客户发送的电子邮件中是否有更多图片?

    特别是第三张图片、其中提到了2x 器件中定义的双端口 RAM。  我想看看这张图片及其来源。

    此致!
    马修

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

    Matthew、您好!

    对于 MPOST 测试配置、使用 Z1、模式为 SCI 引导模式。 下面的五个屏幕截图均来自第六幅图像的文件。 图7和图8是我们测试的结果和配置。 至于"第三个"映像来自文件路径的位置、为 C:\ti\c2000\C2000Ware_5_01_00_00\libraries\boot_rom\f28002x\f28002x\rom_sources\F28002x_rom\bootROM\include\cpu1brom_ pbist.h、其中包含有关存储体的分组。 最后一个映像来自上面路径中的文件。

    此致、

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

    Matthew、您好!

    现在只需要 PC 跳转到0x3f5485、这是 PBIST_PORMemoryTest 函数的入口、向下执行以查看端口0和端口1失败。 现在我的问题是我不明白为什么在测试 ROM 时端口0和端口1有两个故障、端口0和端口1有两个故障用于单端口 RAM、和端口1有一个故障用于双端口 RAM。 如果团队正在重现情况,希望尽快让我回到我,谢谢。

    e2e.ti.com/.../tms320f280025-how-to-correctly-start-mpost-and-view-its-running-results

    此致、

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

    Ben、

    感谢附加存储器映像;如 TRM 提到的、PBIST 的通过/失败位于存储器地址0x0006;我们看到0xFAABDEED、即 PBIST 通过。

    下面相同的.h 文件是唯一可以从 PBIST 返回的通过失败签名:

    define PBIST_ALWAYSFAIL_TIMEOUT_ERROR       0xFF00FF00U        // Expected fail test did not complete
    #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       0xFFAAFF0AU
    #define PBIST_MEMORY_GX_INITDONE_ERROR       0xFFBBFF0BU
    #define PBIST_MEMORY_M0M1_INITDONE_ERROR     0xFFCCFF0CU
    #define ISOLATE_MEM_INIT_ERROR               16
    
    #define PBIST_MASK_KEEP_ERROR_CODE_UPPER     0xFFFF0000U
    
    #define PBIST_MEMORY_TEST_IN_PROGRESS        0xFAAB1234UL       // Return status while memory testing is in progress
    #define PBIST_MEMORY_TEST_PASS               0xFAABDEEDUL       // Marker for successful completion of mem test

    让我再看一下设计、我认为我们不支持从正常应用免费调用 PBIST。

    此致!
    马修

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

    Matthew、您好!

    您只需要找到 PBIST_PORMemoryTest 函数条目、使用 PC 寄存器跳转到该条目、 然后汇编步骤执行、程序将首先执行错误测试、这个错误测试是要测试 ROM、测试结果显示 PORT0和端口1同时存在两个故障、然后重新测试以消除故障、 最后测试所有存储体(bootrom 除外)、结果返回到0x6寄存器中。

    其中一个故障测试是使用一个使用 RAM 的算法来测试 ROM、这最终导致了两个故障、PORT0和端口1。 存在一个问题、即为什么测试 ROM 会导致两个端口都失败。 另外一点是、我们后来用于汇编单步测试、在分配 ALGO 和 RINOL 寄存器后、通过"Memory Browser"窗口直接修改寄存器、例如使用 ROM 算法测试 RAM、 我们发现 PBIST_INFOL_M13N_SINGLE_PORT_SRAM 有两个故障、而 PBIST_INFOL_M13N_WII_PORT_SRAM 则只有 PORT0故障。

    还有一个事实、工程师 Matthew 表示0x6寄存器的返回值为0xFAABDED。这是我在前一个链接中询问的。 我们现在所关注的不是他返回的结果、而是两个端口故障的确切定义。 根据之前的回复、RAM 是单端口还是双端口分配 PORT0和端口1显然与测试结果不一致。

    此致、

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

    Matthew、您好!

    有任何更新吗?

    此致、

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

    Ben、

    与设计团队交谈后、我知道我们不支持从应用程序中调用 MPOST/PBIST 运行时。  它仅在启动时受支持、即从 Brom 调用以运行。

    我们不提供从应用程序运行的任何文档、我认为从先前的帖子中、客户已经浏览了 Brom 源代码并自行完成了此操作。  如果是这种情况、我们将无法提供支持。

    您能否确保我正确理解上述内容?  或者、当 Brom 通过上电复位运行 MPOST 时是否存在问题?

    此致!
    马修

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

    Matthew、您好!

    首先、在上面链接的帖子中给出了源代码在 Brom 中的位置。

    其次、我们不在应用中调用它、我们只是在 PC 上进行跨接、然后进入 PC。 同时、我们刚刚将电路板连接到 CCS、因为只有这样我们才能看到上电执行后 mPost 的结果(0x6寄存器)、官员不提供任何 CCS 项目供我们调试、也没有.out 文件可用于加载。

    此致、

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

    Ben、

    为了澄清、不管是使用函数调用还是使用 PC 跳转、PBIST/MPOST 都无法在 BROM 外部进行可靠调用、因此我不会使用这些运行的状态作为故障指示器。

    我们的软件示例中未使用 M0 RAM 区域中的 BROM/PBIST 状态、以避免在将控制权传递给客户代码时过度写入此数据。  如果客户在连接时看到这条消息不会出现、我想这是由于 GEL 文件在 CCS 连接时执行内存初始化。

    如果他们打开 GEL 文件、则可以注释这行代码 out:

    OnTargetConnect()
    {
    
    /*    *(int *)(MEMCFG_BASE + MEMCFG_O_DXINIT)  = 0x0003;      /* RAM INIT FOR M0/M1 Memory        */
        *(int *)(MEMCFG_BASE + MEMCFG_O_LSXINIT) =0x00F0;      /* RAM INIT FOR LS4..LS7  Memory    */
        *(int *)(MEMCFG_BASE + MEMCFG_O_GSXINIT) =0x0001;      /* RAM INIT FOR GS0.Memory     */
        
        while(!(*(int *) (MEMCFG_BASE + MEMCFG_O_GSXINITDONE) == 0x1)); //Wait for InitDone Status
        
        GEL_TextOut("\n\nRAM initialization done\n\n");

    这应保留 M0和状态字段。

    此致!

    马修