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:ESM 组2通道3在_TI_auto_init ()之后立即触发

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/621309/rm57l843-esm-group-2-channel-3-triggered-right-after-__ti_auto_init

器件型号:RM57L843
主题中讨论的其他器件:LAUNCHXL2-RM57LHALCOGEN

一些背景信息和问题详细信息:

  • 硬件平台:LAUNCHXL2-RM57L
  • HALCoGen:4.06.01。
  • 问题:每次处理器完成执行__TI_auto_init()时,寄存器 ESMSR2都会更改为0x8。 这个问题可以在我的硬件平台上完全重现。
  • 已检查此主题 但这里的情况不同:我根本不使用 EMIF。
  • 在 CCS 调试配置中、我选择了 ECC 生成。

一些测试结果:

  • 我使用了 HALCoGen 生成的启动代码、其中调用了_memInit_()。
  • 我在启用或未启用 MPU 的情况下进行了测试。 在这两种情况下都会出现问题。 因此它不应是 MPU 问题。
  • 我在 "Memory"视图中检查了 SRAM 的一些地址、它们的值全为零。 此外、 L2RAMW 中的 RAMERRSTATUS 值为0 (通过寄存器视图)。 我想 SRAM 运行良好。
  • 我尝试启用 PMU 及其事件计数器来对这3个事件进行计数:
    • 事件参考0x6f -所有致命事件
    • 事件参考0x70 -所有可纠正的总线故障
    • 事件参考0x71 -所有致命总线故障
    • 在__TI_auto_init()之后发现这3个计数器的值分别为1/2/1。
  • 有时我让 CPU 自由运行一段时间(主程序执行这些操作: 使用 GPIO 调节开/关 LED、读取 RTI 自由运行计数器的值以及读取 PMU 事件计数器)、我发现3个计数器值都递增、在一次测试中分别更改为3/5/3。

问题:

  1. 这个问题是如何发生的? 以及如何解决?
  2. 我想、PMU 事件计数器计数的致命事件甚至可纠正事件的概率有点过高。 在正常情况下、所有这些是否都为0?

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

    很抱歉、您迟迟未能回复您的帖子。 由于飓风 Harvey 的影响、我们几乎处于离线状态后、正在逐步恢复。 感谢您耐心等待我们处理积压的支持工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没关系、无需道歉、因为飓风 Harvey 很可怕。

    我已经有一段时间没有研究这个问题了、现在有没有建议?

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

    在该器件上始终启用 ECC。 如果您已正确初始化 SRAM、则问题可能是当您启用缓存时、您从闪存中获得 ECC 错误。 每个缓存行从闪存加载32个字节。 有时、段不会以32字节边界结束、并且可能不会为丢失的字节生成 ECC。 可以通过使用 palign (这意味着填充和对齐)更改链接命令文件的段部分中的 align 关键字来解决该问题。 为了避免 HALCoGen 覆盖对 HL_SYS_LINK_cmd 文件的更改、我使用#if/#endif、如下所示:

    /*------------------ */
    /*段配置 */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5)*/
    .intvecs:{}>向量
    .text palign (32):{}> FLASH0
    .const palign (32):{}> FLASH0
    .cinit palign (32):{}> FLASH0
    .pinit palign (32):{}> FLASH0
    .bss :{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM
    #if 0/*
    用户代码结束*/
    .intvecs:{}>向量
    .text align (32):{}> FLASH0 | FLASH1
    .const align (32):{}> FLASH0 | FLASH1
    .cinit align (32):{}> FLASH0| FLASH1
    .pinit align (32):{}> FLASH0 | FLASH1
    .bss :{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM
    
    
    /*用户代码开始(6)*/
    #endif
    /*用户代码结束*/
    }
    
    

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