在调试BCP的过程中,由于时间上的考虑,没有选择accumulator产生中断,而是选择更加快速的qpendq中断方式。
设置RX_Q_NUM为662,对应绑定的event是134
整个工程是建立在SYS/BIOS下的,利用task调度,BCP的主程序bcp_func()放在一个task中,现在问题是,
只有bcp_func()所在的任务全部运行结束并退出,才会进入配置的qpendq中断。
有以下几个疑惑:
1. 配置BCP的Rx queue为触发中断queue,中断产生的条件应该是该queue的数据被取完,还是其他条件?
2. task和qpendqueue中断的优先级关系,task会不会对中断有屏蔽处理?
3. 在需要不断从已知数组取payload数据的情况下,BCP如何能够脱离DSP core独立运行?
还是只能每次都调用BCP主函数,将BCP当做一个独占任务来运行?
Andy Yin1:
使用QpendQ产生中断时,只要QpendQ中有一个描述符就会产生中断事件,在中断中需要把描述符取走,并清系统事件保证下一个中断事件的触发。
QpendQ中断是硬中断,优先级高于task;组包后将描述符push到BCP TxQ既可,之后都是BCP硬件处理。
TI中文支持网