min wang1:
Andy Yin ,您好:
我想问一个wenzheng liu之前问过的有关BCP例程调试不通的问题,我们也遇到了信号量pend等不到中断响应去post它。您之前的回答是“不要加上SIMULATOR_SUPPORT”,而我们并没有定义SIMULATOR_SUPPORT,但程序还是调不通,同样是上述问题,想请问一下还可能是什么原因,非常感谢!
min wang1:
回复 min wang1:
原帖在:www.deyisupport.com/…/14024.aspx
min wang1:
http://www.deyisupport.com/question_answer/f/53/t/14024.aspx
Andy Yin1:
回复 min wang1:
您好,
将Bcp_main.c中的#define SIMULATOR_SUPPORT注释掉,在core0上跑。给出你的测试过程及运行的PDK版本。
min wang1:
回复 Andy Yin1:
Andy Yin:
您好,非常感谢您的回复,#define SIMULATOR_SUPPORT是注释掉的,我在PDK_17、_19、_21上都跑过,结果都一样,下面这些是pdk _21版本的测试结果:
[C66xx_0] **************************************************
[C66xx_0] *************** BCP Example Start ****************
[C66xx_0] **************************************************
[C66xx_0] Using BCP Driver version: 0x1000009 Version Info: BCP Driver Revision: 01.00.00.09:May 25 2012:13:13:45
[C66xx_0] [Core 0]: L1D cache size 0. L2 cache size 0.
[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 256 descriptors
[C66xx_0]
[C66xx_0] ————– LTE UL 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 UL Test: PASS
[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
程序到这就halt住了,而且四个core显示的都是running状态,感觉bcp_send的数据并没有收到,中断没有启动,所以信号量hRxSem并没有post,因此程序停在了Semaphore_pend (hRxSem, BIOS_WAIT_FOREVER)的地方。
麻烦您给看看,谢谢啦。
Andy Yin1:
回复 min wang1:
您好,
在C6670 Errata中提到对于PG1.0版本的芯片,CRC可能存在异常,所以很有可能是由于CRC模块异常导致,所以建议修改代码,不经过BCP CRC模块,看看BCP能否输出数据,如果可以的话就是CRC模块异常导致。在实际应用中建议使用软件实现CRC,具体可参考C6670 Errata关于CRC相应的规避方式。
同时可以加上SIMULATOR_SUPPORT宏定义,在simulator环境测试看看,如果可以通过的话也大致可以证明是CRC模块的原因。
min wang1:
回复 Andy Yin1:
Andy Yin:
您好,非常感谢您的解答,问题的确是由CRC模块导致,不经过CRC模块程序就可以一直跑下去。我仔细阅读了您上面提到的C6670 Errata文档,但文档中只是概括的说用软件方法实现,有一些细节的东西我还不是很了解,想再请教一下。我现在是自己编程给输入信息比特加CRC校验,并直接注释掉bcp_lte_dl.c中下面部分:
/* Header 2: CRC Header */
prepare_crchdr_cfg (&crcHdrCfg, radioStd, tbSize, codeBlkParams.numFillerBits, 0, 0, 0, 0, 0, 0, 0, NULL);
if (Bcp_addCRCHeader (&crcHdrCfg, pDataBuffer, &tmpLen) < 0)
{
#ifdef BCP_EXAMPLE_DEBUG
System_printf ("Failed to add CRC Header to packet \n");
#endif
return -1;
}
pDataBuffer += tmpLen;
dataBufferLen += tmpLen;
tmpLen = 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] Reading test configuration …
[C66xx_0] Sending a packet of len 432 to BCP …
[C66xx_0] Waiting on output from BCP …
[C66xx_0] Got 1 packet(s) from BCP
[C66xx_0] [Pkt 0]: Total Len: 50416 DestnTag: 0x0 SrcId: 0x0
[C66xx_0] LTE DL Test: FAILED
[C66xx_0]
[C66xx_0] ————– BCP Testing Complete ————–
[C66xx_0] Num Test Failures = 1
[C66xx_0] **************************************************
[C66xx_0] ****************** BCP Example End ***************
[C66xx_0] **************************************************
[C66xx_0] [Core 0]: BCP Example Unloaded successfully
[C66xx_0] BcpAlloc Cnt:135 BcpFree Cnt: 135
[C66xx_0] CppiMalloc Cnt:1 CppiFree Cnt: 0
[C66xx_0] QmssAlloc Cnt:0 QmssFree Cnt: 0
自己改来改去还是不对,所以想问一下您还需要配置哪些东西,非常感谢!
min wang1:
回复 Andy Yin1:
Andy Yin:
您好,问题已经解决,非常感谢您的指导!