Andy,
您好!感谢您在这个帖子为我重新推荐这个K-1的例程。
www.deyisupport.com/.../67635.aspx
但是目前这个例程并没像您说的那样重新申请两次TCP的handle就可以运行两片TCP3d,目前遇到的问题如下:
1. 这个例程中如下代码:
tTcp3dResInfo.ucTCPId = ucUsedTcpId; tTcp3dResInfo.ucInEdmaTpcc = gtTcp3dInstInfo[ucUsedTcpId].ucEdmaCCInst; /* set the same EDMACC with the TCP3D output channel */ tTcp3dResInfo.ucInEdmaTc[0] = 0; /* TC for input channel, set different TC for ping-pong channel */ tTcp3dResInfo.ucInEdmaTc[1] = 0; tTcp3dResInfo.ucOutEdmaTc[0] = 0; /* set the same TC for the in/out channel pair */ tTcp3dResInfo.ucOutEdmaTc[1] = 0;
为什么输入也要用和输出一样的isntance,为什么注释写的pingpong要不同实际上却给了相同的值,为什么用TC=3就会错?我看了代码确实不能理解,但是我感觉是6670没有tc=3,但是cslr_device.h文件里说有啊。
2. 如下代码:
/*****************************************************************************
Prototype : Keystone_TCP3D_PollFree
Description : Poll the input EDMA channel IPR bit to check whether the TCP3D is free or busy
Input : pTcp3dHdl
ucLastProcBlockNum:
Output : None
Return Value : return the free TcpID
History :
1.Date : 2013/10/17
Author : Andy
Modification : Created function
*****************************************************************************/
Int16 Keystone_TCP3D_PollFree(void * restrict pTcp3dHdl,
Uint8 ucLastProcBlockNum)
为什么是检查input channel而不是output channel,这里我理解为link的原因对么?
如果一个core控制一个tcp3d,两个一起运行的时候:
在core1上跑的时候输出的第六个block会全为0,core0工作正常;
在core 1我修改了input的channel号过后,中断置位bit仍然是10 和11,除了下述代码还需修改其他地方么?
tTcp3dResInfo.ucInEdmaCh[0] = 10;
tTcp3dResInfo.ucInEdmaCh[1] = 11; (core 0 工作正常)
3. 也就是我最希望能够解决的一个core控制多片TCP3d,使用这个例程多次初始化申请handle依然无法正常工作。
希望TI的工程师团队能帮忙重新检查一下这个代码是不是有上述我的问题,还是我哪里没做对?希望得到帮助。
谢谢Andy!
Xie Chen
八月十二日