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.

[参考译文] CC3235MODSF:系统启动期间 FaultISR()用法故障

Guru**** 2533820 points
Other Parts Discussed in Thread: CC3235MODS, CC3235SF, UNIFLASH, CC3200, CC3235MODSF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061928/cc3235modsf-faultisr-usage-fault-during-system-startup

器件型号:CC3235MODSF
主题中讨论的其他器件:CC3235MODSCC3235SFUNIFLASHCC3200

环境

CCS 10.3.0

客户固件应用、基于 TI Amazon FreeRTOS 进行修改(移植到 CC3235)

Simplink SDK 2.10.00.04、NWP 4.1.0.29、主机2.0.1.27

硬件

LP 板载 XDS110、具有到目标的 JTAG 和 UART 连接

目标:具有 CC3235MODS 模块的定制板、由工作台电源供电。

问题

使用相同的硬件和固件时,在系统启动期间可能会/可能不会发生 FAULTISR()。 发生这种情况时,我可以跟踪到 TI I2C_open()。 但是,通过 ImageCreator 而不是 CCS 调试加载,固件始终会挂起,您将在下面看到一条更早的语句。 奇怪的是、在 LP-CC3235MOD 上加载相同的固件(通过 CCS 调试会话或 ImageCreator)没有问题。

疑难解答

当我们的定制板在启动期间 FAULTISR()挂起时的屏幕录制:

 在 RTOS 调度程序已经运行后、它总是在我们的应用程序启动时卡住。

当我们的定制电路板启动正常时(通过 CCS 调试会话)、UART 终端:

自定义电路板启动时的 UART 终端(通过 ImageCreator)

通过 ImageCreator 将我们的应用固件编程到外部闪存中。  固件持续挂起。 重置后、屏幕显示挂起。

模块电源

已检查 TI LP 板和我们的定制板上的3.3V 电源。 在~3.3V 时均保持稳定、而我们的具有更小的纹波。

FAULTISR()的软件故障诊断–TI AN01286

https://www.tij.co.jp/jp/lit/an/spma043/spma043.pdf?ts=1639391243035&ref_url=https%253A%252F%252Fwww.google.com%252F

因此、请参阅 TRM 3.3.1.21、这是使用故障、位[17] INVSTAT 为"1"

但是、我在 TI E2E 上找不到有关如何诊断 CC3235使用故障的参考。

堆栈增加

尝试从0x512增加到0x800、无帮助。

问题

  • 如何诊断使用故障?
  • 是否有适用于 CC3235的软件/FreeRTOS 故障排除 TI 培训/资源?
  • 您是否认为问题可能是 由硬件问题或固件引起的?
  • 您是否有任何 建议、为什么相同的固件在 CCS 调试会话中运行正常、但在 ImageCreator 刷写后挂起?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、

    我本周将在这里跟进。

    谢谢、
    Jacob

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

    谢谢你。 我们目前也在尝试一些事情。 我将发布任何更新。

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

    您好、Jacob、

    我完成了更多的故障排除。 我认为我可以将其缩小到(可能)不可靠的上电复位/器件复位。  

    我发现、在外部闪存中使用相同的固件时、 在上电后、在按下复位按钮(将 CC3235MOD 上的引脚35拉至低电平)后、有时它启动正常、有时它在几次打印输出后挂起 (在 RTOS 调度程序启动后、但在 sl_start()之前)。 我用于测试的 XDS110移除了复位线路上的上拉电阻器。 (删除了 LP-CC3220 R17)。

    在模块引脚35上、 除了低电平有效按钮外、我们还有一个100K 上拉至3.3V 的电压、以及一个连接到 GND 的小电容。 根据 CC3235SF 数据表、可使用 RC 来确保1ms 启动复位延迟。 数据表显示复位 Vil 为0.6V。  

    因此、我尝试了几个不同的电容值。 0.01uF 在大多数电路板上没有帮助、0.22uF 使三个 DUT 中的两个在上电时正常工作、但即使1uF 时、第三个 DUT 也无法启动。 下面是0.22uF 的捕获结果、显示了0.6V 阈值。 您可以看到、复位上升至0.6V 之前存在~5ms 的延迟。  

    那么、您认为这里有什么问题呢? 我真的觉得加电/复位/启动过程有问题、否则、我无法解释为什么相同的固件二进制文件在某些 DUT 上工作、而不是在其他 DUT 上工作。 此外、同一 DUT 有时可能无法正常工作。  

    此外、如果首次上电复位延迟 不是1ms、 稍后手动复位器件应始终确保干净上电(因为电源轨已经稳定)。 这为什么不起作用? 对复位信号有任何其他未记录的要求(例如斜升速率?)

    谢谢、

    将会

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

    你好、

    很抱歉我的回复延迟了。 使用 Uniflash 对定制板进行编程时、您是否使用开发或生产模式?  

    要回答您的问题:

    [引用 userid="443940" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061928/cc3235modsf-faultisr-usage-fault-during-system-startup "]如何诊断用法故障?[/quot]

    是否确定这是使用故障? 您能否共享为 I2C_open 执行的跟踪图片以查找 HFAULT_STAT?  

    [引用 userid="443940" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061928/cc3235modsf-faultisr-usage-fault-during-system-startup ]任何用于 CC3235的软件/FreeRTOS 故障排除 TI 培训/资源?[/quot]

    TI 在 此处提供了一些有关 FreeRTOS 使用入门的文档。 此外、Code Composer Studio 还具有 运行时对象查看器 、您可以在调试时查看应用程序中的线程。

    [引用 userid="443940" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061928/cc3235modsf-faultisr-usage-fault-during-system-startup "]您是否认为问题可能是 由硬件问题或固件引起的?

    我不确定、但我倾向于解决硬件问题、因为固件偶尔会在 DUT 上成功运行。

    [引用 userid="443940" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061928/cc3235modsf-faultisr-usage-fault-during-system-startup 是否有任何 建议?您是否有任何建议、为什么相同的固件在 CCS 调试会话中运行正常、但在 ImageCreator 刷写后挂起?[/quot]

    我猜他们可能使用不同的机制对器件进行编程。 我相信 CCS 调试使用 UART 对器件进行编程、 而 ImageCreator 可以使用 UART 或串行闪存 SPI。  

    谢谢、
    Jacob

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

    你好、

    快速附加注释:

    • 我同意 Jacob 的说法、它看起来像是硬件问题、因为您可以在 LaunchPad 上运行代码而不会出现任何问题。 您可能应该在此处要求 TI 审核您的硬件
    • 几年前、CC3200器件在 e2e 论坛上讨论了通过 JTAG 调试运行代码以及通过 ROM 引导加载程序从闪存运行代码的问题。 我想对于 CC3235、这是相同的。 问题与为 I2C 外设启用时钟有关。 当您通过 JTAG 从 CCS 加载代码时、可能需要从之前的调试会话中启用外设时钟。 因此、即使没有为 I2C 启用时钟、I2C 外设也可能工作。 但是、当您通过 ROM 引导加载程序从 SPI 闪存启动代码时、您将从"干净工作表"开始。 如果没有正确的 I2C 初始化、您的代码将陷入硬故障。 但在您的硬件和 LaunchPad 上、这种行为应该相同。
    • 您使用什么硬件? 在您的硬件上是 CC3235MODS 还是 CC3235MODSF? 您使用什么 LaunchPad? 是 S 还是 SF?

    BTW... 您使用的是非常旧的 SDK 版本和 ServicePack。 也许您应该更新您的 SDK。 我不确定这是否会影响您的问题、但使用此类旧 SDK、您的应用程序会受到多个安全漏洞的影响-请参阅TI 安全报告

    1月