Other Parts Discussed in Thread: SYSBIOS
Our CC2640 BLE application has been up and running for some time, and we're ready to ship except that we occasionally get into a condition where things freeze and the only wait out is to cycle power by pulling batteries. Our (peripheral) app continuously streams simple messages over BLE at a rate of about 40/sec, and can stay up for quite some time before getting hit with the freeze.
I've spent much time with the CCS debugger and when we hang all our tasks show up as blocked, including ICall, so I'm wondering if the BLE stack is blocked for some unfortunate reason. CCS doesn't give me a good stack trace, so I can't see where the BLE stack might be waiting for. I tried following the frame pointer and it led to a region of RAM with all "20 20 20..." instructions, which didn't make sense to me.
I've also looked at stack sizes, the BIOS scan for errors, heap memory, Hwi, etc., and nothing jumps out at me as being problematic. I've tried disabling power saving, adding various asserts to check whether we're calling the BLE stack incorrectly, added error checking, etc., but nothing absolutely appears as troublesome. Looked at BIOS "Scan for errors..." and I get some messages "Error fetching Hwi stack info!", but the same message is there when things are running normally.
I tried setting BIOS.assertsEnabled, Task.initStackFlag, and Task.checkStackFlag, but can't do it since the RTOS is running in the PROM.
I'm starting to run out of ideas. Does anyone have any suggestions for troubleshooting this problem? Thanks!