TI工程师你好!
bcp模块在上行链路中包括ENC、RM和TM三个子模块,假如我连续调用bcp模块11次,在11次调用中组一样的包(除了挂的数据buffer内容不一样外,其他配置都一样)。这11个包的包头配置都一样,且分别对应的描述符以及压入的TX Queue都正确,可是在BCP的输出端,前10个包都能正确输出,但最后一个却不能起中断,具体现象为:从FDQ中拿了一个Free descriptor,但是未放到接收完成Queue中,所以中断没有正常启动(看本次Packet DMA 的TX FDQ,TX Queue ,RX FDQ以及RX destQueue队列中描述符个数都正常)。经过进一步问题跟踪,通过Data_logger_status_Register看出有两点错误:1、ENC和RM模块对应的偏移地址0xf4 显示都正确,值为0002000B,但对应的偏移地址0xf8 的值显示不正确(在global header中设置的值为DEAD),为DE8D。2、TM模块对应的偏移地址0xf4 显示不正确,值为0002001A(正常时为0002000B)。
对于上面出现的问题我暂时没有找到下手解决的办法,麻烦TI工程师尽快帮忙解决,对此先表示感谢了。
Xiaoning Ma:
朋友,方便的话,可以来到我们的研讨会现场,面对面地与我们的工程师交流。围绕 C66x 系列,2013 TI 多核 DSP 技术研讨会即将在如下城市启动: 深圳 (5月21日)、杭州 (5月23日)、成都 (6月20日)。详情见:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/21990.aspx
Andy Yin1:
从你的测试来看正常下各个module中的偏移地址0xF4处的内容均应为0x2000B,但是为0x2001A时,对应bit16=0说明没有记录错误,你可以在看看偏移地址为0x100处的记录下的ERR_CONDITIONS看是否存在错误(参考BCP手册Data logger RAM format)。
你上面说RxFDQ及RX destQueue中的描述符个数都正常,怎么会有“从FDQ中拿了一个Free descriptor,但是未放到接收完成Queue中”?你是使用什么方式产生中断的?有可能是你的中断配置有问题,你可以配置在完成一个包后产生中断看是否正常。
wenzheng liu:
回复 Andy Yin1:
Andy Yin1,你好!
上面所述的现象一般情况下是正常运行的,只是偶尔情况下才出现的现象(一般是在系统正常运行起来前出现,一旦系统正常运行后未看到出现),所以我觉得中断配置应该没什么问题。从0x100处的记录没有看到ERR_CONDITIONS的相关错误,对于RX destQueue中的描述符,正常情况下应是会被拿去一个描述符,通过它的处理填上相应的输出数据,会被放入到destQueue中,然后被Accumulator监控,然后会把该描述符放入到Accumulist中启动中断,从现象看好像是在BCP内部某个模块出了问题,所以没有放入到destQueue中。不知能否从上面的DATA_LOGGER_STATUS Register和GLOBAL_HDR Register信息看出什么问题不? 以上问题目前还在复现中,如果再此复现,我截图出来请帮助分析,谢谢!
ole:
回复 wenzheng liu:
麻烦问一下,主函数里面怎么调用LTE上行BCP处理函数。能给个联系方式交流一下吗?