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.

CC2640在peripheral基础上添加了Observer功能后,运行一段时间进入HARDWARE

Other Parts Discussed in Thread: CC2640

参考TI工程师给的例子,在CC2640上实现了peripheral + Observer功能,运行一段时间后进入HARDWARE死循环。

个人严格按照github的例程写的,这里也做了几个试验发现了一个规律:

1、屏蔽 Observer 的初始化,关闭Observer功能,不会死机

2、打开Observer功能后,修改 DEFAULT_MAX_SCAN_RES 单次扫描最大数量,设置为20时,一般运行30s左右就挂了。 设置为1时,能够运行5分钟。

感觉和缓存有什么关系,但是这边回调函数发送的消息队列每一个用完我都调用了 ICall_freeMsg(pEvent)。

毕竟添加Observer功能没几行代码,已经找了2天问题,没有解决,项目进度卡住了,请ti工程师帮忙分析下!

盼复!

  • 具体的报错信息是什么?卡在哪条语句?
  • void AssertHandler(uint8 assertCause, uint8 assertSubcause)
    {
    // check the assert cause
    switch (assertCause)
    {
    case HAL_ASSERT_CAUSE_OUT_OF_MEMORY:
    break;

    case HAL_ASSERT_CAUSE_INTERNAL_ERROR:
    // check the subcause
    if (assertSubcause == HAL_ASSERT_SUBCAUSE_FW_INERNAL_ERROR)
    {
    ;
    }
    else
    {
    ;
    }
    break;

    case HAL_ASSERT_CAUSE_ICALL_ABORT:
    HAL_ASSERT_SPINLOCK;
    break;

    default:
    HAL_ASSERT_SPINLOCK;
    }

    return;
    }

    条件 assertCause = 8,对应的错误信息,如下:

    // Common Assert Causes (0x00 .. 0x1F)
    #define HAL_ASSERT_CAUSE_FALSE 0x00
    #define HAL_ASSERT_CAUSE_TRUE 0x01
    #define HAL_ASSERT_CAUSE_INTERNAL_ERROR 0x02
    #define HAL_ASSERT_CAUSE_HW_ERROR 0x03
    #define HAL_ASSERT_CAUSE_OUT_OF_MEMORY 0x04
    #define HAL_ASSERT_CAUSE_ICALL_ABORT 0x05
    #define HAL_ASSERT_CAUSE_ICALL_TIMEOUT 0x06
    #define HAL_ASSERT_CAUSE_WRONG_API_CALL 0x07
    #define HAL_ASSERT_CAUSE_HARDWARE_ERROR 0x08
    #define HAL_ASSERT_CAUSE_RF_DRIVER_ERROR 0x09
    #define HAL_ASSERT_CAUSE_UNEXPECTED_ERROR 0x0A

    卡在 HAL_ASSERT_SPINLOCK;    具体什么原因导致的,个人并没有找到,LR寄存器保存的是这条函数的入口地址。

  • 是否再最新版的SDK上进行的测试?
  • 我也遇到同样的问题,请教是什么原因,怎么解决的?