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.

CC2640R2F仿真时进入ICall_abort死循环

Other Parts Discussed in Thread: CC2640R2F

使用XDS110仿真时,第一次进入仿真可以正常通过

然后resetCPU后,再次仿真就会在

进入GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL, DEFAULT_CONN_PAUSE_PERIPHERAL);中时

VOID osal_snv_read(BLE_NVID_IRK, KEYLEN, gapRole_IRK);
VOID osal_snv_read(BLE_NVID_CSRK, KEYLEN, gapRole_SRK);
VOID osal_snv_read(BLE_NVID_SIGNCOUNTER, sizeof(uint32_t),
&gapRole_signCounter);

这3条语句中都会进入ICall_abort死循环,卡死

使用的CC2640R2F的simplelink_cc2640r2_sdk_1_40_00_45协议栈中blestack目录下的simple_peripheral项目的RCOSC的workspace

修改的点有注释xPOWER_SAVING

注释掉xCC2640R2_LAUNCHXL
添加CC2640R2DK_4XS

代码优化选择了none

请问下一下,这个是什么情况

  • 没有遇到过
    1、是否可以用最新版的例程测试一下?1.40非常老了
    2、保持原例程不变,仿真正常吗
  • 我再下载测试一下simplelink_cc2640r2_sdk_3_30_00_20这个版本
  • 已经测试simplelink_cc2640r2_sdk_3_30_00_20这个版本,还是一样的现象
    直接用的官方例程还是simplelink_cc2640r2_sdk_3_30_00_20协议栈中blestack目录下的simple_peripheral项目的RCOSC的workspace
    使用的是IAR,未做其他修改,只是将代码优化选择为None,这样方便打断点
    编译通过后,点击download and debug进入仿真
    第一次全速可以正常通过GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL, DEFAULT_CONN_PAUSE_PERIPHERAL);
    然后点击reset CPU
    再次全速进行就卡死在如下位置
    uint8_t abortLoop=1;
    ICall_Errno
    ICall_abort(void)
    {
    #ifdef HALNODEBUG
    #elif defined(EXT_HAL_ASSERT)
    HAL_ASSERT(HAL_ASSERT_CAUSE_ICALL_ABORT);
    #else
    if (abortLoop)
    {
    while(abortLoop); //就卡死在这个死循环这里了
    }
    // add the else in order to have full call stack on abort
    else
    {
    return(ICALL_ERRNO_SUCCESS);
    }
    #endif /* EXT_HAL_ASSERT */
    ICALL_HOOK_ABORT_FUNC();
    return(ICALL_ERRNO_SUCCESS);
    }
    请帮我分析一下,谢谢了