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:SysCtrlResetSourceGet 似乎返回错误的复位源

Guru**** 2539500 points
Other Parts Discussed in Thread: Z-STACK, CC2630

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/569916/rtos-cc2630-sysctrlresetsourceget-seems-to-return-wrong-reset-source

器件型号:CC2630
Thread 中讨论的其他器件: Z-stack

工具/软件:TI-RTOS

您好!

我在 CC2630器件上运行的 TI-RTOS 之上安装了 Z-Stack 1.2.2a。 在 BIOS_start()之后;我执行以下代码段。 此时不执行 ZigBee 任务、仅执行以下 tirtos 函数。

/*获取重置的原因*/
uint32_t rsrc = SysCtrlResetSourceGet ();

if (rsrc = RSTSRC_WAKEUP_FITH_SHUTDOWN){

board_led_control (board_led_type_LEDDGREEN、board_led_state_BLINK);

ZStack_sysResetReq_t pReq;
pReq.type = ZStack_ResetTypes_device;
pREQ.newNWKSTATE = false;
Zstackapi_sysResetReq (zswEntity、&pReq);
}
否则{
PIN_setConfig (keyPinHandleSOS、PINCC26XX_BM_WAKEUP、Board_key_select | PINCC26XX_WAKEUP_NEGEDGE);
POWER_SHUTDOWN (NULL);
} 

上电后、器件将正确进入 ELSE 路径并进入关断状态。 按下按钮后、LED 闪烁并复位、很明显再次(无限)进入 IF 路径。

我假设 sysReset 会发出软复位、如下 API 函数所示:

静态 bool processSysResetReq (iCall_EntityID srcEntityID、void *pMsg)
{zstackmsg_sysResetReq_t
*pReq =(zstackmsg_sysResetReq_t *)pMsg;

if (pReq ->pReq)
{
if (pREQ->pREQ->newNWKState)
{
zgWriteStartupOptions (ZG_STARTUP_SET、
ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE);

}
-->SystemResetSoft();
pReq->HDR.status = ZStack_ZStatusValues_ZSuccessess;
}
否则
{
pREQ->HDR.STATUS = ZStack_ZStatusValues_ZInvalidParameter;
}

返回(真);
} 

以下 SystemResetSoft()最终会导致以下宏:

*(((uint32 *) 0x40082270)= 1; 

基于这一点,我假设下次使用 SysCtrlResetSourceGet ()时,调用 reset 会返回 anthing,但 RSTSRC_WAKEUP_FLOW_FLOUT_SHUTDOWN 会输入 else 路径并再次进入 SHUTDOWN。

在我复位器件以清除复位源之前、我是否需要清除任何寄存器?

此致、

Stephanie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    深入了解《技术参考手册》、我了解到、一旦发生从关断状态唤醒的情况、相应的寄存器为只读且设置为 true、并且仅在断电/复位时擦除。 我假设"reset"是指外部硬复位或其他任何内容。 软件复位并不起作用。
    最后、我解决了这个问题、因此感谢大家的帮助