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.

[参考译文] RM57L843:时钟监控器测试

Guru**** 2468460 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/666751/rm57l843-clock-monitor-test

器件型号:RM57L843
主题中讨论的其他器件:TMS570LC4357

您好!

我尝试在 RM57/TMS570LC4357上从 TI 安全库执行时钟监控测试、但未获得预期结果。

它永远不会在 GBLSTAT 寄存器或 ESM 中获得振荡器故障标志。 根据 CSDISSET 和 CSTATUS、振荡器被禁用。 该测试是否需要在初始化任何外设之前运行、因为技术参考指出、在没有活动耗电元件之前、不会禁用时钟。

代码:

void checkClockMonitor (void)
{
uint32_t ghvsrc_bk;

/*启用时钟监控器范围检测电路*/
systemREG1->CLKTEST |= 0x03000000U;

/*备份寄存器 GHVSRC */
ghvsrc_Bk = systemREG1->GHVSRC;

/*将所有时钟域切换为 HF LPO */
systemREG1->GHVSRC = 0x05050005U;

/*禁用振荡器导致振荡器失败*/
systemREG1->CSDISSET = 0x1U;

/*等待振荡器失败标志被设定*/
while ((systemREG1->GBLSTAT 和0x1U)== 0U)
{
} /*等待,永远不会通过这个点*/

if ((esmREG->SR1[0U]& 0x800U)!= 0x800U)
{
health 策略(platform_error、test_error_clock_monitor);
}
其他
{
/*清除 ESM 标志*/
esmREG->SR1[0U]= 0x800U;

/*禁用时钟监控器范围检测电路*/
systemREG1->CLKTEST &=~(0x03000000U);

/*启用振荡器*/
systemREG1->CSDISCLR = 0x1U;

/*等待振荡器被启用*/
/*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
while ((systemREG1->CSVSTAT & 0x3U)== 0U)
{
} /*等待*/

/*清除振荡器故障标志和 PLL 转差标志(如果有)*/
systemREG1->GBLSTAT = 0x301U;

/*切换回所有时钟域*/
systemREG1->GHVSRC = ghvsrc_Bk;
}
} 

谢谢!

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

    您好、Dimtri、

    另请将 VCLKASRC (外设异步时钟)切换为 HF LPO (时钟源5)、并将 RTI 时钟源(RCLKSRC)切换为 HP LPO。

    systemREG1->CLKTEST |= 0x03000000U;

    systemREG1->GHVSRC =(UINT32)((UINT32) SYS_LPO_HIGH << 24U)

               |(UINT32)(((UINT32) SYS_LPO_HIGH << 16U)

               |(UINT32)(((UINT32) SYS_LPO_HIGH << 0U);

    systemREG1->VCLKASRC =(uint32)((uint32) SYS_LPO_HIGH << 0U);

    systemREG1->RCLKSRC &=~0x0F;

    systemREG1->RCLKSRC |= SYS_LPO_HIGH;

    systemREG1->CSDISSET = 0x00000001U;

    while ((systemREG1->CSDIS & 0x01U)!= 0x01U){

     

    刚刚经过测试的 ion RM46 Launchpad、systemREG1->GBLSTAT 的位0已设置。

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

    仍然是相同的结果。 GBLSTAT 位0从不变为高电平。 在 RM57上运行时、我也试图更改 VCLKASRC VCLKA2S 和 VCLKACON1、但运气不好。 RCLKSRC 有一些看起来像时钟源的保留位、我也试图改变这些保留位。

    代码:
    void checkClockMonitor (void)(空)

    uint32_t ghvsrc_bk;

    /*启用时钟监控器范围检测电路*/
    systemREG1->CLKTEST |= 0x03000000U;

    /*备份寄存器 GHVSRC */
    ghvsrc_Bk = systemREG1->GHVSRC;

    /*将所有时钟域切换为 HF LPO */
    systemREG1->GHVSRC =(uint32_t)((uint32_t) SYS_LPO_HIGH << 24U)

    |(uint32_t)(((uint32_t) SYS_LPO_HIGH << 16U)

    |(uint32_t)(((uint32_t) SYS_LPO_HIGH << 0U);

    /*将 RTI 和外设异步时钟源切换为 LPO 至 HP LPO */
    systemREG1->VCLKASRC =(uint32_t)((uint32_t) SYS_LPO_HIGH << 8U)
    |(uint32_t)(((uint32_t) SYS_LPO_HIGH << 0U);

    systemREG2->VCLKACON1 &=~0xF000F;
    systemREG2->VCLKACON1 |=(uint32_t)((uint32_t) SYS_LPO_HIGH << 16U)
    |(uint32_t)(((uint32_t) SYS_LPO_HIGH << 0U);

    systemREG1->RCLKSRC &=~0xF000F;
    systemREG1->RCLKSRC ||(uint32_t)((uint32_t) SYS_LPO_HIGH << 16U)
    |(uint32_t)(((uint32_t) SYS_LPO_HIGH << 0U);


    /*禁用振荡器导致振荡器失败*/
    systemREG1->CSDISSET = 0x1U;

    /*等待振荡器失败标志被设定*/
    while ((systemREG1->GBLSTAT 和0x1U)== 0U)

    }/*等待*/

    if ((esmREG->SR1[0U]& 0x800U)!= 0x800U)

    health 策略(platform_error、test_error_clock_monitor);

    其他

    /*清除 ESM 标志*/
    esmREG->SR1[0U]= 0x800U;

    /*禁用时钟监控器范围检测电路*/
    systemREG1->CLKTEST &=~(0x03000000U);

    /*启用振荡器*/
    systemREG1->CSDISCLR = 0x1U;

    /*等待振荡器被启用*/
    /*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
    while ((systemREG1->CSVSTAT & 0x3U)== 0U)

    }/*等待*/

    /*清除振荡器故障标志和 PLL 转差标志(如果有)*/
    systemREG1->GBLSTAT = 0x301U;

    /*切换回所有时钟域*/
    systemREG1->GHVSRC = ghvsrc_Bk;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对此进行了任何更新? 此测试在 rm57/tms570lc4357上是否可用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dmitri、

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

    您好 Dmitri、

    在 RM57 Launchpad 上进行了测试、GlbStat 寄存器的位0被置位。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法重现结果、以下是我卡在 GBLSTAT 时的寄存器状态:

    *0xffffff00*systemREG1*0xffffff00
    0x0SYSPC10x0
    0x4SYSPC20x1
    0x8SYSPC30x0
    0xCSYSPC40x0
    0x10SYSPC50x0
    0x14SYSPC60x0
    0x18SYSPC70x0
    0x1cSYSPC80x0
    0x20SYSPC90x1
    0x24rsvd10x20
    0x28rsvd20x0
    0x2Crsvd30x0
    0x30CSDIS0x8d
    0x34CSDISSET0x8d
    0x38CSDISCLR0x8d
    0x3cCDDIS0x20
    0x40CDDISSET0x20
    0x44CDDISCLR0x20
    0x48GHVSRC0x5050005
    0x4cVCLKASRC0x505
    0x50RCLKSRC0x1050105
    0x54CSVSTAT0xb8
    0x58MSTGCR0x205
    0x5cMINITGCR0x5
    0x60MSINENA0x0
    0x64MSTFAIL0x0
    0x68MSTCGSTAT0x0
    0x6cMINISTAT0x0
    0x70PLLCTL10x40079500
    0x74PLLCTL20x3fc0703d
    0x78SYSPC100x0
    0x7cDIEIDL0x1501f00c
    0x80DIEIDH0x802a83c
    0x84rsvd40x0
    0x88LPOMONCTL0x100120e
    0x8cCLKTEST0x30a0000
    0x90DFTCTRLREG10x1105
    0x94DFTCTRLREG20x5
    0x98rsvd50x0
    0x9Crsvd60x0
    0xA0GPREG10x0
    0xa4rsvd70xdefa0005
    0xa8rsvd80x0
    0xacrsvd90x0
    0xb0SSIR10x0
    0xb4SSIR20x0
    0xb8SSIR30x0
    0xbbSSIR40x0
    0xC0RAMGCR0x50000
    0xc4BMMCR10xA
    0xc8rsvd100x0
    0xccCPUSTCR0x0
    0xD0CLKCNTL0x1010100
    0xD4ECPCNTL0x7
    0xd8rsvd110x0
    0xDCDEVCR10xA
    0xe0SYSECR0x4000
    0xe4SYSESR0x0
    0xe8SYSTASR0x0
    0xECGBLSTAT0x0
    0xf0DevID0x8044add0d
    0xf4SSIVEC0x0
    0xf8SSIF0x0

    *0xffe100*systemREG2*0xffe100
    0x0PLLCTL30x79500
    0x4rsvd10x0
    0x8STCCLKDIV0x0
    0xcrsvd2{0x5、0x505、0x0、0x0、0x0、0xb}
    0x24ECPCNTL0x7
    0x28ECCNTL10x50000000
    0x2Crsvd3{0x0、0x0、0x0、0x0}
    0x3cCLK2CNTRL0x101
    0x40VCLKACON10x50005
    0x44rsvd4{0x1、0x1090109、0x0、0x1090109}
    0x54HCLKCNTL0x1
    0x58rsvd5{0x0、0x0、0x0、0x0、0x0、0x0、0x0}
    0x70CLKSLIP0x5
    0x74rsvd60x5
    0x78IP1ECCERREN0x50505
    0x7crsvd7{0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x0、0x
    0xECEFC_CTLEN0x5
    0xf0DIEIDL_REG00x1501f00c
    0xf4DIEIDH_REG10x802a83c
    0xf8DIEIDL_REG20x0
    0xFCDIEIDH_REG30x39aa0002
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我能够在 XRM57 HDK 上运行该程序、但相同的二进制文件在生产 RM57板上不起作用。

    就 sysREG1和 sysREG2而言、唯一的区别似乎是器件 ID 寄存器。

    我应该检查的任何其他寄存器、还是这是芯片勘误表/硬件问题?

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

    您好 Dmitri、

    我认为这不是硬件问题。 您使用的是什么板?

    是否可以禁用高速缓存? 如果启用缓存、内存浏览器可能不会立即更新?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RM57 HDK ASSY 419782 REV-E 上的测试通过该芯片标记为 XRM57 L843ZWTT YFA-49ASEXW
    在基于 HDK 的定制 PCB 上、测试失败(在 GBLSTAT 上卡住等待)。Chip 标记为 RM57 LB843BZWTT TFB-64C38HW。

    都运行相同的二进制文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也尝试在 PRM57 L843ZWTT YFB-55AV86W 上运行。 卡在 GBLSTAT。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为它与 PCB 硬件设计有关。 已在 HDK 板(具有可更换芯片的插座)上运行此操作、该 HDK 板安装了相同的 TMS570LC4357BZWTQQ1模型芯片、HDK 硬件通过测试、定制 PCB 未通过测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是由于未按照数据表 www.ti.com/.../rm57l843.pdf 第6.6.1.1节主振荡器中的建议对引脚 L2 (Kelvin_GND)和 L1 (OSCOUT)接线造成的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dmitri、

    如果您使用外部晶体作为时钟源、则外部晶体负载电容器应连接回 Kelvin_GND.Kelvin_GND、不应在外部短接至其他 GND 线。

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

    QJ、那么、如果我们使用外部 MEMS 振荡器、应该将 Kelvin_GND 保持悬空、还是应该将其连接到与器件上 VSS 相同的电路板接地?  该手册对于该做什么非常不清楚。  如果连接了非晶振 MEMS 振荡器、建议将 Kelvin_GND 保持悬空。  推荐的解决方案是什么?

    最棒的

    Josh Karch

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

    QJ 另请注意、当使用外部时钟源(具有3.3V 信号的 AKA MEMS 振荡器)时、Chuck Davenport 提供有关将 Kelvin_GND 接地到公共接地的不同指导。  问题是、当 Kelvin_GND 未与外部 MEMS 振荡器连接时、振荡器故障检测现在无法正常工作。

    最好

    Josh Karch

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

    是的、如果您使用连接到 OSCIN 的外部时钟源、请将开尔文_GND 连接到 PCB 的公共接地。