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.

TCP3E C6670



Hi TI team 

please I have two questions .. i would be grateful if you answer them

1) when i begin debuging  the tcp3e example this sentence appears up and repeated 16 times 

[C66xx_0] WORKAROUND: Forced queue push address from (0x3402000c) to (0x2a2000c)

and stop showing any action on console window ... beside that in debug window the c6670 still running 

and didn't show any error in console window ... so what is it mean ?? and how can i handle this ??

2) If we agree that the cfg , the info and the coded bits are in the test example folder in the form of files and the example code call them  and compare with the coded bits ... so how can i change the cfg and info bits in the absence of declaration of the parameters in these files and off course by changing the info and cfg bits the coded bits will change so how the example TCP3E will handle with this  ...

thx alot

  • Hi,

    Moved this thread to correct forum.

    Thanks.

  • ok thx alot .... but please tell me which form ??

  • I mean which form to post in ??? 

  • Keystone Multicore Forum (C66, 66A, AM5).

    Thanks.

  • I have posted it in Keystone Multicore Forum (C66, 66A, AM5) today but it is removed .. I dont know why ??

    Sorry for that but its urgent ...

  • Hi Eng man,

    I watch this thread for response.

    Thanks.

  • Hi,

    Here are my responses:

    1. It probably means that 16 blocks are enqeued and sent to the encoder in the send block task function. It might be waiting for the Qmss_getQueueEntryCount to be equal to the code blocks sent. Did you enable the power domain for the TCP3e? Can you check whether you can read any register value in the TCP3e memory space in CCS?

    2. You should be able to point the CB pointer to a data array that you can define instead of a file read from the cfg files. You will have to add your custom data for this though.  

    Regards,

    Arun

  • Hi, auppu6547

    I'am using C6670 custom board and started to study the TCP3E. But I have a few questions:

    1) In my case the problem reproduced as in the case of the author. After the 16 times printing the line:

    System_printf("WORKAROUND: Forced queue push address from (0x%x) to (0x%x)\n",pktPushAddr,quePkt->destQueue);

    the DSP just wait in the idle loop after this line: 

    Semaphore_pend(semFreeDesc, BIOS_WAIT_FOREVER);

    As I can judge the semaphore just never comes up and bios wait forever.

    I have noticed that only 16 of 36 CB are passed since sendBlockCnt is equal to 16 before hanging.

    I also checked the TCP3d example the problem remain the same but after the lines:

    /* Wait for the Receive task to complete */
    Semaphore_pend(semRcvDone, BIOS_WAIT_FOREVER);

    There I have found in the enable_tcp3d routine some info: 

    /* TCP3D power domain is turned OFF by default.
    * It needs to be turned on before doing any TCP3D device register access.
    * This is not required for the simulator. */

    But the thing is that for TCP3e there are no such function at all. 

    I have checked the TCP3e MOD register (0x021E0C04) and it's 0 as all other register in the TCP3E memory region starting from 0x021E0000.  Data in the example is given for LTE mode so the MOD register value should be equal to 2.

     So to my opinion your suggestion about power enabling maybe right. But how to enable it? Because in the cslr_device.h header there are no specific power domain for TCP3e.

    So I tried to look at the PSC registers. In Data manual said that Module Status Register 3 (TCP3e) is responsible for that. I have looked at it (0x0235080c) and found that its value is 0xA00. Which meant that clock for that module is on, but the module itself in SwRstDisable state. To compare the values for Module Status Register 14 (MSMC RAM) the value is 0x1F03 which correspond to the enable state.

    2) The TCP3E driver uses EDMA3 driver for data transfers, but we in our project using a CSL EDMA 3 functions for VCP2. Is there a possibility of conflicts between the CSL and LLD EDMA3 functions? If so, maybe there is an example how to use a CLS EDMA3 functions with TCP3E?

    Best regards,

    Pavlo!

    UPD: I have managed to solve the problem with this tests. As I mentioned in this post the TCP3e module power was in the SwRstDisable state. So we need to turn it on before the running the test. To do that there are two ways one is to specify the evmc6670l.gel file that located in {MSDK_INSTALL_PATH}\tools\program_evm\gel in your target configuration file for the core 0. Or copy from that file the Set_PSC_State(PD0, LPSC_TCP3E, PSC_ENABLE); function to your main and perform all necessary steps to build the project.