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.
最近有个项目要用6670的TCP3E&D加速器,于是参考了一下PDK自带的例子,先将TCP3E的有关问题请教如下:
(1) 初始化一开始就用了一个HeapMem_Handle_upCast( ), 不懂这个函数是干什么用的?SYS/BIOS下对该函数的解释就一句话,不是太明白。还有C66X下面的heap到底是个什么概念?如何使用?哪个文档有介绍?
(2) 在发送任务SendBlockTaskFunc( )中为何将destQueue强制在0x02A20000到0x02AC0000之间?我看pushAddrUsed的注释说EDMA2_TC无法连接到QMSS的data space ,所以强制到QMSS的config space,是这样的么?还有为什么要加个偏移0xC?
(3) TCP3e是不是根据输入的参数自动配置link EDMA的?为什么需要84个link EDMA 通道?为什么最多只能有86个link EDMA通道?计算max link EDMA的表达式
2*(magazineSize*numPerCb+5+4)+2+2是什么意思?
(4) 在EDMA3初始化中的注册中断函数中,有个EventCombiner_dispatchPlug( )函数到底是做什么用的?该函数的参数CpIntc_dispatch做为一个函数入口何时被调用?调用该函数做什么用?
(5) MagazineSwitch_CallBack( ) 函数是在何时被调用的?debug下似乎未见调用。
以上是关于编码的一些问题,可能有看文档时没有注意到的,谢谢!
1. heap与传统的没有差异,关于heap的理解需要百度一下;关于sysBios中的heap如何分配可以阅读sysBios手册;HeapMem_Handle_upCast应该是用于堆的申请,可以参考sysBios手册的方法进行堆的申请创建;
2. 限制的这段地址是Queue management region的地址区间,加0xC是得到对应queue的D寄存器地址,具体查看Navigator的手册;
3. TCP3E的输入EDMA主要是用来完成编码块参数及数据的输入,具体需要多少EDMA channel没有限制,可以根据具体的应用编程确定;
问题4,5可以查看相应的LLD理解。TCP3E的例子写的太过复杂,不好理解,建议首先通过TCP3E的手册理解相应的编程指南,同时参考PDK写一个简化的TCP3E例子。