微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640与TI-RTOS的异常问题

CC2640与TI-RTOS的异常问题

时间:10-02 整理:3721RD 点击:

之前在E2E发过一个帖,是在2640中新创建任务遇到的问题

https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/633320/2337081#2337081

英文不好,所以把问题简单地描述了一下,现在说具体一些

在自己创建的任务中,往任务发送队列消息、信号量,任务都能收到,收到以后,执行一些如UART发送数据、IO操作,都很正常。

但是只要在任务中调用了GATT_Notification、GAPRole_TerminateConnection()这些涉及到BLE底层的函数,程序就出现异常了,而这些函数在SimpleBLEPeripheral_taskFxn任务中调用是一点问题都没有的。

我仔细检查过出现问题的原因,排除了以下可能性:

1)、已经修改了ICALL_MAX_NUM_TASKS值,否则连新创建的任务都运行不了,所以这个可能性排除;

2)、任务堆栈不够大?任务本身执行的东西非常少,在加大堆栈以后,问题仍然存在,所以这个可能性也排除;

3)、任务优先级问题?修改过优先级,问题仍然如此;

目前我唯一怀疑的可能性,是注册消息的接收的函数,是在SimpleBLEPeripheral_taskFxn里面执行的,

GAP_RegisterForMsgs(selfEntity);

GATT_RegisterForMsgs(selfEntity);

所以在别的任务里去调用涉及到这个层次的函数,就会出错!

请问TI的工程师,是否真有可能如我分析,问题出现在这里呢,如此的话,该如何解决,谢谢!

这个问题出在任务注册上。一个任务如果要调用GAP的东西需要通过ICALL注册,具体请参考例程里面的几个任务,在任务循环的外边是有这个注册过程的

请参考https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/616474?tisearch=e2e-sitesearch&keymatch=%20user%3A319007

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top