This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6670BCP加速器资源冲突问题



TI工程师,您好:

在C6670板子上,我在两个核上(比如0核和1核)异步频繁使用BCP加速器,在两个核上都配置的是事件53与中断挂接,接收QUE分别为724和725,通道号是20和21,接收的FlowID也使用的不同。这样运行一小会,一个核能正常运行,另一个核的中断响应不上来(该核开始是能相应中断,大约相应几千次后不再相应),即没能进入中断服务程序中,但可以在相应的Accumulist里能看到已经处理完成的描述符。此外,以上情况运行还存在一个核BCP处理时间比正常处理时间长2ms的情况,也就是说如果仅一个核使用BCP,正常处理时间是5us,当两个核频繁使用BCP后,其中一个核BCP处理会延长到毫秒级。

 针对以上情况,我做了以下修改:将0核配置事件53,1核配置事件54;接收QUE分别为724和729;接收通道号分别为20和25。这样配置后仅1个核的中断只响应1次后不再相应,如果继续调用BCP加速器,BCP会处理,但就是不能进中断服务程序中,在接收QUE中可看见输出的描述符个数。请帮TI工程师帮忙分析一下问题在哪?另外,当两个核频繁使用加速时,可能会遇到两个核同时调用BCP,BCP就一个实例,应该要排队等候,如何配置才能把延时缩小到十几个微妙级?

  •  多个核可以同时向BCP中push packet,软件不需要做资源互斥,如果多个核同时压入的包使用的是完全相同的BCP 内部子模块,在处理上是依次处理,也就是你说的排队依次处理。从你的现象来看,感觉输入的包已经完成并输出,但是中断有问题,建议你先确认一下Accumulator 中断处理的过程是否符合navigator user guide手册要求,需要在中断服务函数中清楚系统事件、并写status count及EOI寄存器,保证下一个事件的到来处理。

  • Andy Yin1,您好:

             感谢你的回复,关于中断起不来的问题,我已经找到问题了。但是多个核同时压入包,排队处理,现在运行起来一会就挂,原因是其中一个核输出的很慢,大概使2到3毫秒才响应中断,这样实时系统总是挂,请问对于多核同时压入包处理的情况,BCP要怎样配置才可避免输出延时很大的问题?是否针对对这种应用BCP有什么方案?请指教!先在此感谢你了。

  • Andy Yin1,您好:

             不好意思,这个BCP处理延时是我们带来的,目前已解决,感谢你的答复。