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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1393547/rm57l843-cold-boot-prefetch-error

器件型号:RM57L843

工具与软件:

我有一个非常简单的单线程应用程序。  在开发期间、我的应用运行良好。  我现在有一小部分正在测试的电路板。  在其中大约40%的器件中、我在从断电冷状态启动时收到预取错误。  执行一个 POR 可使应用程序正常运行。  发生异常时、IFAR 寄存器会显示预取处理程序本身的地址。  添加调试代码会在对应用进行调试步进时更改错误的位置、因此它看起来是与一个内存位置相关的、而不是特定指令。  我怀疑电源稳定性可能是个问题、但这似乎没问题。  我正在寻找有关可能导致问题的内存/处理器配置问题的指导。

谢谢你

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

    您好、Matthew:

    我想验证您的应用程序代码、是否可以共享该代码或至少是一个有问题的最简单工程?

    如果需要、您可以通过私人消息发送。

    ——
    谢谢、此致、
    Jagadish。

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

    我已发送完整的项目代码。  专有函数已被删除、但所有启动和初始化函数都存在。 我已确认此版本存在相同的问题。

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

    您好、Matthew:

    我将您的代码运行到了我的演示板中、但我在最后看不到任何问题

    我们是否需要执行任何其他操作(如发送某些特定数据等)来触发 预取 中止?

    [quote userid="418224" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1393547/rm57l843-cold-boot-prefetch-error 通过他们中约40%的人收到预取错误

    在我看来、这也让我感到困惑、如果所有电路板的代码相同、为什么只有40%的电路板遇到此问题。

    我认为它们不会有单独的硬件。

    您是否在 CCS 中对配置有所不同?

    我希望您禁用了自动 ECC 生成选项、因为在链接器 cmd 文件中手动生成 ECC 时不需要此选项。

    ——
    谢谢、此致、
    Jagadish。

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

    感谢您浏览代码。 我还发现非常奇怪的是、问题只出现在某些电路板上。  这可能是硬件问题、但我不知道如何解决。  所有电路板在制造过程中均经过 III 类检查并经过验证。  我将再次检查电源。   

    我遇到的困难就是确切地确定出现问题时处理器正在执行的操作。  我认为、它可能具有 dabort 异常、然后在 dabort 异常处理程序期间抛出预取错误。  为了进行测试、我将以下 while (1);trap 放入 dabort 处理程序中。  这样做会导致它卡在 UNDEF 异常处理程序中、而不是预取处理程序中。

        

    ARM 判断是否实际引发异常的最佳方法是什么、或者是否出于某种原因、只是从这些异常处理程序运行代码、而不是正确的入口点。

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

    您好、Matthew:

    (+)[常见问题解答] TMS570LC4357:Hercules 器件上的中止异常故障排除-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    在上面的常见问题解答中、我的同事讨论了如何解决异常问题、您能否参阅上面的主题、您能否尝试准确找出导致异常的地址。 并验证映射文件中的相应地址、然后您可以准确找到导致问题的函数。

    ——

    谢谢、此致、
    Jagadish。

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

    谢谢您的回答。  我从应用程序中删除了中断向量映射、因此可以确认没有中断处理程序引起问题、并且处理器实际上处于中止状态。  不幸的是,我仍然很困惑。  我熟悉如何使用状态寄存器来了解中止异常发生的位置。  但是、在这种情况下、我认为这些信息毫无意义。  指令故障地址寄存器读取位于存储器最末端(且为空)的"0xFFFFFFFE"。  R14寄存器读取 作为程序入口点的0x02。 此外、SPSR_ABT 寄存器将模式显示为"中止"、这似乎表明其之前的状态为"中止"、然后进入"中止"。

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

    我现在认为这一定是硬件/电源启动问题。  通过使用以下汇编循环延迟任意2000个周期的代码执行、应用程序可以正常执行。

    MOVs r0、#1000

    循环:

    subs r0、r0、#1

    BNE  环路

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

    您好、Matthew:

    [报价用户 id="418224" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1393547/rm57l843-cold-boot-prefetch-error/5333601 #5333601"]

    我现在认为这一定是硬件/电源启动问题。  通过使用以下汇编循环延迟任意2000个周期的代码执行、应用程序可以正常执行。

    MOVs r0、#1000

    循环:

    subs r0、r0、#1

    BNE  环路

    [报价]

    这是一个伟大的发现。

    在其中约40%的人从断电冷状态启动时收到预取错误。  [报价]

    您是否在这些40%的电路板上检查了任何简单的 LED 闪烁项目、都没有解决上述延迟问题?

    根据我的理解、这是否是由硬件引起的、这个简单的工程也应该会发生这种情况。

    ——
    谢谢、此致、
    Jagadish。

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

    下面是我能做的最简单的程序。  它也出现了问题、需要采取同样的措施。  代码正在开始执行、但芯片未完全正常工作、这似乎很奇怪。  我需要查看数据表、看看我是否能找到任何东西来解释它。

    /*初始化 L2RAM 以避免上电后出现 ECC 错误*/
    _memInit_();

    /*初始化内核寄存器以避免 CCM 错误*/
    sl_Init_R5Registers ();

    /*初始化堆栈指针*/
    sl_4.54 Init_Stack inters();

    /*启用 CPU 事件导出*/
    _coreEnableEventBusExport_();

    /*初始化系统-带有电子保险丝自检的时钟、闪存设置*/
    systemInit();

    /*无法在系统之前初始化外围设备和端口*/
    gioInit ();

    /*Blink Light*/
    while (1)  

       gioSetBit (gioPORTB、6、1);
       for (i=0;i<2000000;i++){;}
       gioSetBit (gioPORTB、6、 0);
    }

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

    您好、Matthew:

    e2e.ti.com/.../LED_5F00_Blink_5F00_TEST_5F00_RM57_5F00_Launchpad.zip

    我在 RM57 Launchpad 上测试了上述最简单的代码、工作正常、没有任何问题。 您能在上检查此项目吗?您能告诉我此项目是否还需要您提到的权变措施吗?

    ——
    谢谢、此致、
    Jagadish。

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

    已确认。  同样的问题。  相同的权变措施。

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

    您好、Matthew:

    已确认。  同样的问题。  同样的解决方法。
    我现在认为这一定是硬件/电源启动问题。  [报价]

    所以、我认为是对的、这肯定是由于硬件/电源启动。

    但我以前从未在我们的控制器上看到过此类问题。 我将尝试进一步调查、并提供我的更新。

    ——
    谢谢、此致、
    Jagadish。

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

    作为参考、这是我的 启动电压曲线。  从 IO 电压处于范围内到内核电压处于范围内大约有43ms 的时间。  数据表专门说明了板载功率监控器不应启动启动启动序列、直到两个启动序列都在范围内并且顺序并不重要。

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

    您好、Matthew:

    您是对的、这可能会造成问题?

    是否有可能获得不需要延迟权变措施的其他工作板? 如果我们对两者进行比较、我们可以得到一些想法?

    此外、我们需要验证1.2V 稳压电源和控制器内核电源引脚之间的外部元件(电阻器和电容器)。 我怀疑外部组件也可能会影响电源曲线。

    ——
    谢谢、此致、
    Jagadish。

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

    对于工作和非工作单元、1.2V 的上升时间是相同的。  对于电压检测反馈电阻器、内核电压与接地以及9mA 负载之间大约有116uF 的电容。  不存在其他组件。

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

    您好、Matthew:

    工作和非工作单位1.2V 的上升时间相同。

    那么它应该不会成为问题、对吧?

    我将与我的高级同事一次核实、他是否对这一问题有任何想法。

    ——
    谢谢、此致、
    Jagadish。