用CC2640R2F自己做的板子,主要用途是向主机发送sensor的数据,在TI的simple_peripheral 实例的基础上加了三个non-ICALL task。但是现在不能和电脑配对,总显示配对失败,不知道是哪里的问题,每次运行都会abort。我是使用XDS110连接的,用了ROV看task 发现优先级低的task根本进不去,如下图:
程序就停留在iCall_taskentry这里,BIOS显示的错误也很不具体。
我猜测可能是因为task的优先级冲突了,就把iCall_taskentry的优先级改为了6,但是改了之后就根本不能被主机发现了,ROV如下图:
一旦把优先级改了,程序就会直接running到task0,BIOS给了两个错误,地址是在Timer和Semaphore里,但是我怎么样才能找到具体的错误呢?有没有什么更好的办法debug?
(我没法用sniffer抓包,因为不是TI的开发板,是我自己做的板子用了CC2640R2F,board的文件信息都已经配置好了,应该不是板子的问题)
我用的是
TI SimpleLink CC2640R2 Software Development Kit (Version 1.50.00.58)
TI Code Composer Studio: CCS-9
TI Code Generation Tools for ARM: 16.09.03.LTS
XDCTools: 3.50.03.33
Alvin Chen:
simple_peripheral的你的task不能高于BLE stack的优先级。如果你的sensor 建议你用Util_constructClock定时器。
Shuang Ni:
回复 Alvin Chen:
谢谢您的回复.
Icall_taskEntry是最高优先级6,gapRole_taskFxn是5,SimpleBLEPeripheral_taskFxn是4,我自己加的non-icall task放在优先级3及以下,对于pheripheral设备来说,这种task优先级的安排是否合理?
我用的是Util_constructClock。
BIOS里能看到的这些错误,看起来是memory或者pointer的问题,该怎样排查到底是哪一块出了问题呢?
Alvin Chen:
回复 Shuang Ni:
你的sensor任务是否开辟了大的数组或者内存没有释放,建议你增大应用heap size试试。