TI论坛
直播中

李悠冉

7年用户 252经验值
私信 关注

请问c6670中多核怎样同时正确使用bcp加速器?

本帖最后由 一只耳朵怪 于 2018-6-19 14:25 编辑

在C6670中,因只有一个bcp硬件加速器,不同核所来数据怎样同时运行起来而不发生一个核经常抢占BCP加速器,导致其它核数据不能送入到BCP加速器中进行处理?请问是否有什么好的办法或者机制来处理这种情况?(比如说以core 0和core 1都在给bcp加速器持续送数据为例(它们送数据的时间可以是同时的,也可以是非同时的),请老师给我的回答稍微详细点,谢谢。)

回帖(7)

杨娟

2018-6-19 00:56:19
BCP是navigator device,进出的数据包都由QMSS进行队列管理,所以只需要将数据包压送到队列,BCP会根据优先级的配置进行队列的处理。简单来说应用程序需要做的是根据应用分配好BCP的TX及RX资源,配置相应的优先级,而不需要由应用程序完成更多的资源调度管理。具体请参考BCP手册3.2.3关于queue mapping and prioritization一节。
                                                                          

举报

李悠冉

2018-6-19 01:06:52
引用: zbb9612 发表于 2018-6-19 00:56
BCP是navigator device,进出的数据包都由QMSS进行队列管理,所以只需要将数据包压送到队列,BCP会根据优先级的配置进行队列的处理。简单来说应用程序需要做的是根据应用分配好BCP的TX及RX资源,配置相应的优先级,而不需要由应用程序完成更多的资源调度管理。具体请参考BCP手册3.2.3关于queue mapping and prioritization ...

感谢Andy Yin 的解答,在EVM板上,仅在core0上运行bcp例程没问题,如果在core0和core1上同时运行,仅core0能正常通过,core1未通过,发现core1已经把输入数据送给了BCP,中断没有起来。bcp的TX和RX分别有8个channel,修改后core0和core1的TX和RX分别用了不同的channel和Queue,但是core1还是没能正常运行,请问是否还有什么细节地方没有注意到?请给予帮助。(单核到双核测试,主要修改如下:1、MultiProc.setConfig(null, ["CORE0", "CORE1"]);     2、txCfg.txQNum += CSL_chipReadReg (CSL_CHIP_DNUM)。)
测试的的提示信息如下:
[C66xx_0] **************************************************
[C66xx_0] *************** BCP Testing Start ***************
[C66xx_0] **************************************************
[C66xx_0] Using BCP Driver version: 0x1000007 Version Info: BCP Driver Revision: 01.00.00.07:Oct  9 2012:10:11:03
[C66xx_0] [Core 0]: L1D cache size 0. L2 cache size 0.
[C66xx_1] **************************************************
[C66xx_1] *************** BCP Testing Start ***************
[C66xx_1] **************************************************
[C66xx_1] Using BCP Driver version: 0x1000007 Version Info: BCP Driver Revision: 01.00.00.07:Oct  9 2012:10:11:03
[C66xx_1] [Core 1]: L1D cache size 0. L2 cache size 0.
[C66xx_1] Waiting for Sys Init to be completed ...
[C66xx_0] [Core 0]: BCP instance 0 successfully initialized
[C66xx_0] [Core 0]: BCP driver successfully opened
[C66xx_0] Global FDQ 877 successfully setup with 64 descriptors
[C66xx_0]
[C66xx_0] -------------- LTE DL Test Start --------------
[C66xx_0] Rx FDQ 736 successfully setup with 62 descriptors
[C66xx_0] Flow 0 opened to send data to RxQ: 900
[C66xx_0] Tx FDQ 737 successfully setup with 2 descriptors
[C66xx_0] LTE DL Test:    PASS
[C66xx_0]
[C66xx_0] -------------- BCP Testing Complete --------------
[C66xx_0] Num Test Failures = 0
[C66xx_0] Waiting for other cores to finish ...
[C66xx_1] [Core 1]: BCP driver successfully opened
[C66xx_1] Global FDQ 878 successfully setup with 64 descriptors
[C66xx_1]
[C66xx_1] -------------- LTE DL Test Start --------------
[C66xx_1] Rx FDQ 737 successfully setup with 62 descriptors
[C66xx_1] Flow 1 opened to send data to RxQ: 901
[C66xx_1] Tx FDQ 738 successfully setup with 2 descriptors
举报

杨娟

2018-6-19 01:20:34
引用: fu6845463651 发表于 2018-6-19 01:06
感谢Andy Yin 的解答,在EVM板上,仅在core0上运行bcp例程没问题,如果在core0和core1上同时运行,仅core0能正常通过,core1未通过,发现core1已经把输入数据送给了BCP,中断没有起来。bcp的TX和RX分别有8个channel,修改后core0和core1的TX和RX分别用了不同的channel和Queue,但是core1还是没能正常运行,请问是否还有什么 ...

看了一下程序,可能有两点原因造成:
1. 在register_rx_interrupts中修改如下代码
eventId     =   49 + CSL_chipReadReg (CSL_CHIP_DNUM);为
eventId     =   49; 即不需要加上coreID,这个事件对每个核是一样的;
2. 从上述打印信息来看,Core1的RxFDQ与core0的TxFDQ复用,建议修改代码避开使用不同的queue。
先修改第1点试试看,实际应用中请避免问题2的出现。
                                                                          

举报

李悠冉

2018-6-19 01:31:17
引用: zbb9612 发表于 2018-6-19 01:20
看了一下程序,可能有两点原因造成:
1. 在register_rx_interrupts中修改如下代码
eventId     =   49 + CSL_chipReadReg (CSL_CHIP_DNUM);为

谢谢,主要是原因1造成的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分