TI中文支持网
TI专业的中文技术问题搜集分享网站

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

参考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工程师帮忙分析下!

盼复!

Viki Shi:

具体的报错信息是什么?卡在哪条语句?

user5318699:

回复 Viki Shi:

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寄存器保存的是这条函数的入口地址。

Viki Shi:

回复 user5318699:

是否再最新版的SDK上进行的测试?

赞(0)
未经允许不得转载:TI中文支持网 » CC2640在peripheral基础上添加了Observer功能后,运行一段时间进入HARDWARE
分享到: 更多 (0)