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.

[参考译文] CC3200MOD:CC3200在用户应用程序运行一次后不再引导

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/659814/cc3200mod-cc3200-no-longer-boots-after-user-application-runs-once

器件型号:CC3200MOD
主题中讨论的其他器件: UNIFLASHCC3200

您好!

我昨天在我的板上遇到了这个非常奇怪的东西。 CC3200MOD 在我首次下载并运行应用程序后似乎已死。

 我的应用程序使用 SDK 建议的两级引导加载程序:将 application_bootloader 用作 /sys/mcuimg.bin、将我自己的应用用作/sys/mcuimg2.bin. 第一批原型(v1)上的一切都很好。 昨天、我收到了十几个第二个原型(v2)、 这几乎是同一个 PCB、除了 LDO - LM1117-3.3 被 TL1963A-3.3取代、因为我们可能使用高达20Vdc 的电源。 Uniflash 可成功对所有 v2板进行编程。 但是、7个电路板中有5个 在加电后没有响应。 现在我很害怕继续使用其余的 v2板、因此 我对它们进行了格式化 、并将/sys/mcuimg2.bin 替换为 SDK 示例 PROVISIONING_ap。 所有  操作都可以通过按钮重置或电源回收来正常运行(我可以成功连接到他们的 AP 并访问嵌入式网页)。

因此、我的应用程序似乎已损坏硬件、我强烈怀疑看门狗代码是造成这种情况的原因。 以下代码片段从 SDK 示例 watchdog_system_demo 复制并应用于我的应用:

 //
 //获取复位原因
 //
 RC = PRCMSysResetCauseGet ();

 //
 //如果看门狗触发了复位请求休眠
 //清理引导系统
 //
 如果(RC = PRCM_WDT_RESET){
   HWREG (0x400F70B8)= 1;
   UtilsDelay (800000/5);
   HWREG (0x400F70B0)= 1;
   UtilsDelay (800000/5);

   HWREG (0x440E16C)|= 0x2;
   UtilsDelay (800);
   HWREG (0x4402F024)&= 0xF7FFFFFF;

   MAP_PRCMOCRRegisterWrite (0、1);
   MAP_PRCMHibernateWakeupSourceEnable (PRCM_HIB_SLOW_CLK_CTR);
   MAP_PRCMHibernateIntervalSet (330*3);
   MAP_PRCMHibernateEnter();
 }

在写这个帖子时、我禁用了看门狗并删除了上面的代码、然后对其余 v2板的3个进行了编程。 根据我现在观察到的情况、这些电路板应该正常、因为它们都响应复位按钮。

下面是我的问题:

1)硬件(CC3200MOD)应该正常(否则、我 将无法首先对其进行编程)、但不知怎么说、它不再引导。 我如何将它们带回去?

我尝试以下方法来检查"死板"板是否根本无法启动:

 -使用示波器捕获 SOP2引脚上的扫描脉冲。 良好的电路板具有~1600ms 的上电脉冲、而"死板"没有。

 -启用4线制 JTAG 以查看调试器是否可以识别 CC3200。 Good 开发板在下载和调试过程中工作正常、而"死板"甚至无法返回正确的 IDCODE (始终返回0x0)。

2) 2)我在应用程序上启用看门狗的原因是、我发现 SPI (GSPI) 传输有时会挂起 CPU、主要是在加电/复位的开始。 由于我正在使用 FreeRTOS、为什么 SPI 传输会使整个 CPU 挂起?

第一个确实使我死亡。 请帮助。

谢谢、此致、

Yervant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    忘记提到电路板没有响应、因为执行了上面的看门狗代码(以清理系统启动)。 我通过 LED 和 UART 输出观察了执行情况(由于 CPU 挂起而不馈送看门狗、因此看门狗复位系统)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    关于 由于 SPI 传输而导致的 CPU 挂起问题、事实证明我的原因是错误的。 故障发生在 NetApp 上。 我猜系统会挂起、因为按下复位按钮时它不是"干净启动"、MCU 在某种程度上与 NWP 不一致。

    正如我之前提到的、如果我删除"干净启动"代码、我的板永远不会损坏。 根据有关 CPU 挂起问题的调查结果、我删除了从 httpserver 示例移植的任务。 现在、系统的工作方式就像一种没有网络功能的魅力。

    现在、我真的想知道为什么"干净启动"代码可能会损坏 CC3200。 就像器件进入休眠模式、永远不会被唤醒。

    @TI 工程师、有人能帮忙吗?

    谢谢、

    Yervant

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

    您所谈论的"干净启动"代码是否与 TRM "MCU 看门狗控制器使用注意事项"第10.4节中讨论的代码相同?

    http://www.ti.com/lit/swru367

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

    是的。 除了在进入休眠之前写入 OCR 寄存器(我使用的代码来自 Watchdog_system_demo 示例)之外、它们几乎相同:

    >> MAP_PRCMOCRRegisterWrite (0、1); <<除了这个
    MAP_PRCMHibernateWakeupSourceEnable (PRCM_HIB_SLOW_CLK_CTR);
    MAP_PRCMHibernateIntervalSet (330*3); <<休眠时间为~1秒、而不是示例(SDK v1.2)中的330ms
    MAP_PRCMHibernateEnter();

    这肯定是看门狗复位导致的损坏。 我将看门狗设置为1000ms 超时、如果 CPU 挂起超过2000ms、将重置系统。 板上有一个闪烁的 LED (一个任务控制它)。 当 CPU 挂起时、该 LED 停止闪烁、然后它永远变暗。 此时 CC3200不再引导。

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

    尊敬的 Kevin:

    TRM 中的图16.1和16.2显示 CC3200引脚50和53 (分别 为模块的 GPIO0和 GPIO30)可用于 某种 PM 测试功能。 这些引脚是否有助于恢复我的模块? 或者、它们仅用于"PM 测试"、前提是某些特殊应用程序运行以供内部使用?

    我的原型板有一半 被浪费了、我需要知道发生了什么。

    谢谢、此致、

    Yervant

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

    我认为您应该完成硬件调试维客中的步骤:

    processors.wiki.ti.com/.../CC3100_&_CC3200_HW_Debugging_AppNote

    希望这将帮助您隔离电路板的问题。 您是否出于好奇而使用 TIRTOS 或 FreeRTOS?

    最棒的
    Kevin