您好,我使用的软件版本如下:bios_6_33_06_50;ndk_2_21_01_38;pdk_C6678_1_1_2_5;ccs5.2.
我的工程是基于NDK的,在定时器中断ISR中,发起软中断,在软中断ISR中处理数据,发送信号给task1,task1将处理好的数据通过网络发送至上位机。中断的实现参考的是SPRUEX3K Bios_User_Guide.pdf中的Hardware Interrupts和 software 模块,但是现在SWI的中断ISR可以进去,但是运行后提示错误:
ti.sysbios.gates.GateMutex: line 97: assertion failure: A_badContext: bad calling context. See GateMutex API doc for details.
[C66xx_0] xdc.runtime.Error.raise: terminating execution
这个问题是什么原因,应该如何解决?或者应该具体参考哪方面的指导手册来解决?
Andy Yin1:
参考E2E论坛相关帖子答复https://e2e.ti.com/support/embedded/tirtos/f/355/t/238059
Xiao Han:
回复 Andy Yin1:
您好,上面的问题已经解决了,出错的原因是我 在SWI 中调用了printf函数。去掉之后就没有问题了。但是现在又出现了一个新的问题:在我的工程中除了timer HWI、SWI之外,还有一个网络NDK task1,SWI向task1 发送semphore,然后task1将数据发送至PC机。现在的情形是:如果task1中的accept()函数不运行,即task1处于block状态,则HWI和SWI运行正常,一但PC机上的测试程序(客户端socket)运行,工程就提示如下:
00009.822 mmAlloc: PIT Used Sync[C66xx_0] 00009.823 RtNew: OOM[C66xx_0] 00009.824 NodeTreeFree: Didn't find right
这个问题怎么解决?SPRU523H.pdf中说这类问题可能跟cache有关,具体怎么解决呢?