您好、TI gurus
在上一篇文章之后、我能够在我的传统 C64x DSP 应用中使用 SWI_inc ()而不是 SWI_POST ()。
由于我无法使用 CCS 或其他工具、我添加了调试代码、我看到在执行第一个 SWI 队列之前有多个 SWI 被布置到 SWI 队列中的确切情况。
在这些情况下、C6000 DSP BIOS 用户指南(软件中断-线程调度)建议使用以下代码段。
myswiFxn()
{. 。 。
重复= SWI_getmbox ();
while (重复--){
‘运行 SWI 例程‘
}
。 。 。
}
我正在监视 SWI_getbox 值并计算重复次数=0、1或2
虽然我确实看到一个问题、即非常偶尔(在繁忙时段)重复返回值2、95%的时间该值为1。 但是、真正让我感到困惑的是、实际上导致上述代码失败的原因是重复值等于零的时间的另外5%。 这意味着上面的 while 循环根本不会执行。
我无法解释为什么会发生这种情况、因为要执行 SWI、mbox 值必须至少为零。
我缺少什么吗?
谢谢
Jim