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.

[参考译文] RTOS/CC2630:看门狗复位 CAN#39;t 运行至 main ()

Guru**** 2939240 points

Other Parts Discussed in Thread: TIMAC, CC2630, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/716833/rtos-cc2630-watchdog-reset-can-t-run-to-main

器件型号:CC2630
主题中讨论的其他部件:TIMACCC2650

工具/软件:TI-RTOS

平台:2630

SDK:TIMAC 1.5.2

问题:在看门狗超时后无法运行到 main()。

测试代码如下:

看门狗复位时调用栈 如下:

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

    如果连接了调试器、ICEPick 将在看门狗复位后停止 CPU 以允许调试。 如果在没有调试器连接的情况下运行器件、是否能够在看门狗超时后正确启动?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否、无法正确启动。如果我使用 while (1) not iCall_Wait()、它可以在看门狗超时后正确启动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您在上面给出的调用栈应该在 iCall 启动之前很长时间。 这意味着它不能通过此 iCall_Wait 正确启动、这意味着这会提供与上述相同的调用堆栈吗? 如果是、如何在未连接调试器的情况下读出该内容?

    此外、您能否分享一些有关此"epdWatchdogStart"函数如何工作以及它是什么功能的见解?

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

    M-W、

    调试器未连接时、CC2630也无法成功复位。  

    2.该函数从随附的演示代码复制。  

    在调试过程中、我们会看到如果移除 ICALL_WAIT、芯片可以成功复位。

    e2e.ti.com/.../watchdogp.c

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

    您能否将一个简单的示例项目组合在一起并与我共享、以便我可以在本地调试它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于大小限制、示例代码放置在链接下方
    pan.baidu.com/.../1O6dG6KGcJDnswRpMjO6LPA
    密码:uqi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    无论如何、都要在连接调试器的情况下运行该器件。 在看门狗超时后正确启动、无需 I CALL 等待。 它不会在我调用等待时正确启动。

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

    您如何检查?

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

    您好、Morris、

    我通过采用非触控堆栈示例( /Projects/mac/Sample/cc26xx_RTOS/IAR projects/Application/CC2650)并添加更改、而不是调用最初完成的"msa_task()"。 我还添加了在启用看门狗后立即打开 LED、以查看我们是否能够按预期复位(理论上、如果我们从看门狗获得正确的复位、它应该闪烁)。

    这导致了以下任务函数:

    void taskFxn (UARg a0、UARg A1)
    {
    #if defined (use_FPGA)
    SysCtrlPowerEverything();
    Power_setConstraint (Power_SB_Disallow);
    Power_setDependency (Periph_RFCORE、Power_global);
    #endif
    
    // Disallow disallow down JTAG、VIMS,
    因为在 SYSBUS 空闲状态期间需要关闭 SYSBUS *。 //
    Power_setConstraint (Power_IDLE_PD_Disallow);
    
    //初始化 ICall 模块*/
    iCall_init ();
    //
    #ifdef feature_MAC_security
    CryptoCC26XX_Parinit CryptoCC26XX_Params;
    extern CryptoCC26XX_Handle CryptoCC26XHOT
    
    
    
    (CC26XX_CC26XX_CryptoCC26XX_open_CC26XX_CC26XX_CryptoC26XX_CryptoC26XX_CryptoC26XX_CryptoC26XX_CC26XX_CryptoC26XX_open_CC26XX_CC26XX_CC26XX_CC26XX_CryptoC false、CryptoCC26XXParams);
    if (!CryptoCC26XHxHandle)
    {
    Task_exit();
    }
    Crypto_init();
    
    /*
    *从 CCFG 区域复制扩展地址
    *假设:CCFG_IEEE_MAC_0和 CCFG_IEEE_MAC_1中的存储器
    *是连续的、LSB 在前。
    *
    memcpy (msa_ExtAddr、
    (uint8_t *)&(__ccfg.CCFG_IEEE_MAC_0)、EXTADDR_LEN);
    
    /*检查 CCFG IEEE 是否有效*/
    if (memcmp (msa_ExtAddr、dummyExtAddr、EXTADDR_LEN)=0)
    {
    /*否,它无效。 获取主要 IEEE 地址*/
    memcpy (msa_ExtAddr、
    (uint8_t *)(FCFG1_base + EXTADDR_OFFSET)、EXTADDR_LEN);
    }
    #endif
    //
    #ifdef NV_RESTORE
    //设置 NV 驱动程序*/
    NVOCTP_loadIPPtrs (&user1Cfg.nvFps);
    
    if (user1Cfg.nvFps.initNV)
    {
    user1Cfg.nvFps.initNV (NULL);
    }
    
    pfnMacCfgNvFps =&user1Cfg.nvFps;
    
    #endif
    //
    /*启动外部映像的任务*/
    iCall_createRemoteTasks();
    
    /*启动应用程序*/
    PRCMPowerDomainOn (PRCM_DOMAIN_PERIPh);
    PRCMPeripheralRunEnable (PRCM_Periph_GPIO);
    PRCMLoadSet();
    while (!PRCMLoadGet ()){
    ;
    }
    Task_sleep (100000);
    epdWatchdogStart();
    IOCPinTypeGpioOutput (IOID_6);
    while (1)
    {
    GPIOPinWrite (GPIO_PIN_6、1);
    iCall_Wait (ICALL_TIMEOUT_FOREVAL);
    }
    } 

    我在 CC2650 Launchpad 上对此进行了测试、但我没有看到您描述的问题、因为器件能够按预期复位。 我假设您在自己的定制硬件上看到此问题、在这种情况下、您是否可以在 LaunchPad 上重现此问题?

    我在使用主文件运行它时遇到了一些问题、这与在应用程序和堆栈项目中定义的"feature_MAC_security"相关、删除此定义让我运行测试。 由于您未在提供的示例中初始化加密、您是否在两个项目中都禁用了此功能?

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

    您好、M-W、

     

    您告诉我您在 CC2650上进行了测试、但未发现问题。

    我们在 CC2650上进行了测试、未发现我们描述的问题。 结果与您相同!

    仅当我们在 CC2630上进行测试时才会看到问题。 请在 CC2630上进行测试吗?

     

    谢谢、

    Morris.Yang

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

    您好、Morris、

    CC2630和 CC2650之间不应有任何区别、后者的开发平台较新。 当从 CC2630 -> CC2650进入时、代码应在两个器件之间实现二进制兼容。

    在您的测试中、我假设 CC2650是一个开发平台、CC2630位于定制硬件上、两者之间的区别是什么?

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

    我们在 CC2630上测试时遇到的问题。 但您在 CC2650上进行了测试。
    我们在 CC2630 Launchpad 和客户硬件上进行了测试。 并查看我们描述的问题。
    我们仅在 CC2630上进行测试时发现问题。 请在 CC2630上进行测试。

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

    没有 CC2630 LaunchPad、只有 CC2650 LaunchPad。 我被告知、在 CC2650上进行测试时没有看到这个问题、我想这就是 LaunchPad。 我会检查硬件和后门启动代码、看看那里是否存在冲突。

    在 startup_IAR.c 中、您可以找到"BackdoorCheck"、这是您的调用堆栈提示您在测试定制硬件时卡在其中的位置。 此功能设置为在按下"按钮"时捕获器件。 在原始示例文件中、这是 IOID11。
    如果我进行有效的 CC2650示例测试并将 IOID11接地、我还将在复位后的相同位置停止。 如果是这种情况、您能否在您的定制硬件上进行验证?