开发环境:
DM6446 EVM
DVSDK: dvsdk_1_30_01_41
两个算法:其中一个算法是是TI 提供的jpegenc,另外一个算法是用于识别算法,两个算法单独运行都没有问题。打算测试下两个算法同时运行的效果,
操作流程如下:
在ARM端的测试程序中创建两个不同优先级的线程,两个线程分别运行不同的算法。高优先级的线程运行jpegenc算法,低优先级的线程运行识别算法。
高优先级的线程先起,低优先级的算法后起。内核线程抢占是没有问题的
得到的结果是:
1.高优先级线程被低优先级线程打断. 个人觉得是因为高优先级线程中有非阻塞函数,所以可以被打断
2. 两个算法顺序执行。高优先级线程中的算法会等待低优先级中的算法运行结束后在执行,没有想到是什么原因导致的?
希望各位大神帮忙解答下,多谢!
Chris Meng:
你好,
一般来说,task只能被比自己优先级高的tsk或者SWI/HWI中断。tsk的优先级是数字越大越高,你是否确认?
Roc Wen:
回复 Chris Meng:
您好,您说的task指的线程吗?如果是的话那指的是dsp 端的线程,还是arm端的线程?
Chris Meng:
回复 Roc Wen:
你好,
我说的是dsp bios下的tsk。你说的不是?
Roc Wen:
回复 Chris Meng:
您好,不好意思我没说清楚,我指是ARM端的两线程 。 测试程序是ARM端的,测试程序通过调用CE的API,使算法在DSP上正常运行