TI中文支持网
TI专业的中文技术问题搜集分享网站

咨询TCP3D完成中断无法触发的问题

您好:
       在安装目录下pdk中TCP3dTestProject修改成所需程序,测试通过。
       然后移植到其他工程(未进行代码修改),没有中断响应,程序没有跑进这三个函数:Void revt1ChCallback(Void)、Void revt1ChCallback(Void)  和  Void tcp3dEventISR(UInt32 testEvtNum)
{
    tcp3dEventCntr++;
    tpccEvtCntr++;
    if ( sendBlockCnt >= codeBlockSet.maxNumCB )
        Semaphore_post(semSendWait);
    else
        Semaphore_post(semSendBlock);
}

以下是前提:
1.移植时没有修改过代码。
2.单步跟如下函数,没有发现问题,eventId正确。
Void registerTcp3dEvent(Void)
{
    static UInt32 cookie = 0;
    Int eventId = 0;    /* GEM event id */
    static UInt32 mapDone = 0;

    /* Disabling the global interrupts */
    cookie = Hwi_disable();
    CpIntc_dispatchPlug(testEvt[instNum], tcp3dEventISR, hostIntr[dspCoreID], TRUE);
    if (!mapDone)
        CpIntc_mapSysIntToHostInt(0, testEvt[instNum], hostIntr[dspCoreID]);
    CpIntc_enableHostInt(0, hostIntr[dspCoreID]);
    eventId = CpIntc_getEventId(hostIntr[dspCoreID]);  //instNum=0;dspcoreID=0;eventID=28
    EventCombiner_dispatchPlug (eventId,
                                CpIntc_dispatch,
                                hostIntr[dspCoreID],
                                TRUE);

    /* enable the 'global' switch */
    CpIntc_enableAllHostInts(0);

    mapDone = 1;

    /* Restore interrupts */
    Hwi_restore(cookie);
}

3.如果不进行中断响应,注掉Semaphore_pend(semSendWait, BIOS_WAIT_FOREVER);  wait一会后直接进行译码结果判断,译码结果是正确的。说明除了无法触发中断,程序译码没有问题。

4.新工程中BIOS添加如下:
/*
 * Pull in modules for EDMA3 LLD use
 */
xdc.useModule('ti.sysbios.family.c64p.Hwi');
xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc');
var ECM = xdc.useModule('ti.sysbios.family.c64p.EventCombiner');
ECM.eventGroupHwiNum[0] = 7;
ECM.eventGroupHwiNum[1] = 8;
ECM.eventGroupHwiNum[2] = 9;
ECM.eventGroupHwiNum[3] = 10;

所以咨询专家两个问题:
1.还有没有其他地方我没考虑到,导致没有配置。能帮我分析下吗?
2.Void registerTcp3dEvent(Void)这些配置流程在哪个文档里能找到对应说明?对中断这块不熟,想好好研究研究中断。

Muhua Chen:

我也遇到类似问题,不能进中断,请问您找到解决方法了吗?

leo anand:

我曾经也遇到过这样的问题,注意2个TCP3D的REVT0与REVT1的传输EDMA通道是固定的,TCP3D—A是对应0,1通道而TCP3D——B是对应34,35通道,所以配置EDMA时,要注意选择有相应通道的EDMACc和shadow region.

Muhua Chen:

回复 leo anand:

leo anand 您好,我使用的是SDK的例子pdk_C6670_1_0_0_20\packages\ti\drv\exampleProjects\TCP3D_exampleProject

硬件仿真 TCP3D不工作,也不产生中断,卡在Void sndBlockTaskFunc(Void)这个任务的 第二个while(1)的Semaphore_pend(semSendWait, BIOS_WAIT_FOREVER);(730行左右),核的状态停止在Running。

请问您遇见过类似情况吗

leo anand:

回复 Muhua Chen:

使用EVM仿真,在TCP3D POWER ON函数中要关掉相应SIMULATOR的宏定义

赞(0)
未经允许不得转载:TI中文支持网 » 咨询TCP3D完成中断无法触发的问题
分享到: 更多 (0)