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.

Conflict between IPC and GIGE

Other Parts Discussed in Thread: SYSBIOS

Am running a Multicore project, which does the following functionality :

Core0 : - Recieves the packet from GIGE port, writes into the buffer in the shared region <MSCMCRAM> .

             - Generates CSL_IPC_genGEMInterrupt interrupt to core1 .

Core1: - On reception of interrupt <CSL_IPC_isGEMInterruptSourceSet> reads the data from buffer . 

This is my GiGe intialization: 

CORE0:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
void MultiCoreApp (Void)
{
    Int32      i;
    UInt32     coreNum;
    volatile UInt32     testComplete=FALSE;
    /* Get the core number. */
    coreNum = CSL_chipReadReg(CSL_CHIP_DNUM);
    System_printf ("************************************************\n");
    System_printf ("*** GiGE Intialization Started on Core %d ***\n",coreNum);
    System_printf ("************************************************\n");
    /* Init internal cycle counter */
    TSCL = 1;
    
    /* Disable L1 and L2 Cache */
    //CACHE_wbAllL1d (CACHE_WAIT);
    //CACHE_setL1DSize(CACHE_L1_0KCACHE);
    //CACHE_setL1PSize(CACHE_L1_0KCACHE);
    #ifndef L2_CACHE
    CACHE_setL2Size(CACHE_0KCACHE);
    #endif
    /* Core 0 does the global initialization */
    if(!coreNum)
    {
        /* Enable PASS power domain */
        passPowerUp();       
        
        /* Initialize the components required to run the example:
         *  (1) QMSS
         *  (2) CPPI
         *  (3) Ethernet switch subsystem + MDIO + SGMII
         */
        /* Initialize QMSS */
        if (Init_Qmss () != 0)
        {
            System_printf ("QMSS Global init failed \n");
            BIOS_exit (-1);
        }
        else
        {
            System_printf ("QMSS successfully initialized \n");           
        }
        /* Initialize CPPI */
        if (Init_Cppi () != 0)
        {
            System_printf ("CPPI init failed \n");
            BIOS_exit (-1);
        }
        else
        {
            System_printf ("CPPI successfully initialized \n");           
        }
//int i ;
//        for(i = 0 ; i <1000 ; i++);
        /* Init PA LLD */
        if (Init_PASS () != 0)
        {
            System_printf ("PASS init failed \n");
            BIOS_exit (-1);
        }
        else
        {
            System_printf ("PASS successfully initialized \n");           
        }
        /* Initialize the CPSW switch */
        if (Init_Cpsw () != 0)
        {
            System_printf ("Ethernet subsystem init failed \n");
            BIOS_exit (-1);
        }
        else
        {
            System_printf ("Ethernet subsystem successfully initialized \n");           
        }
        /* Setup Tx */
        if (Setup_Tx () != 0)
        {
            System_printf ("Tx setup failed \n");
            BIOS_exit (-1);
        }
        else
        {
            System_printf ("Tx setup successfully done \n");
        }
    /* Setup Rx */
    if (Setup_Rx () != 0)
    {
        System_printf ("Rx setup failed \n");
        BIOS_exit (-1);
    }
    else
    {
        System_printf ("Rx setup successfully done \n");           
    }
    /* Setup PA */
    if (Setup_PASS () != 0)
    {
        System_printf ("PASS setup failed \n");
        BIOS_exit (-1);
        
    }
    else
    {
        System_printf ("PASS setup successfully done \n");           
    }
    
    globalCfgDone=TRUE;
  }
    System_printf ("Global Config_Done..Waiting for attached cores...\n");
    while(globalCfgDone == TRUE)
        SYS_CACHE_INV ((void *) &globalCfgDone, 128, CACHE_WAIT);
}

My question is :

# When i run the code without GIGE initialization interrupt flow between cores is happening successfully , but if i run with GIGE interrupt flow between core is disrupted , (i,e) core 0(Master core) is not receiving any interrupt ??

Does GIGE uses any interrupt registers ?

Can anyone help me on this ? 

MCSDK version : 2.2.1.03

IPC : ipc_1_25_03_15

CCS : V5.5

Compiler : c6000_7.4.4

  • Hi Vinodh,

     

    Would you please give us the details like name of the IPC package you use and its version; So that we will try to reproduce from our end ?

     

    Regards,

    Shankari

     

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    --------------------------------------------------------------------------------------------------------

  • Hi Shankari ,

    Thanks for the response .

    CCS Version : 5.5

    MCSDK version : 2.2.1.03

    SYSBIOS version : 6.35.4.50

    IPC version : 1.25.03.15

    Compiler : c6000_7.4.4

    regrads ,
    vinodh
  • HI Vinodh,

    Sorry for the delayed response.

    I just ran the Image processing IPC demo for C6678 with IPC version 1.24. Able to run it successfully. Please refer to this thread for detailed note. Please observe all the output projected in the screenshot.

    I have few questions here.

    Is this GIGE initialization code done by you or it is part of TI software package? If it is part of TI software package, please provide the name of the package as well.

    Regards,

    Shankari

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    --------------------------------------------------------------------------------------------------------