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.

problem - not run my app in evm6678

Other Parts Discussed in Thread: SYSBIOS

Hi,

i´ve developed my app in 4 core. I´m using ddr3 (32M/core) to store my data.

when I using the simulator all program in running 100% each core send message to another core and all data ok.

Now when I try to use the evm my app does not initialize and still stopped.

When I try to use program that not use DDR3 all program is working.

In the EVM I´m using no boot mode. I believe that I have some mistake. Can anyone help me?

Regards, Nivaldo

  • Hi,

    Have you validated the DDR initialization on your EVM? Have you using TI provide *.gel file for initializing the DDR or implement the DDR init code on your application?

    Please share your test application and provide the steps followed in EVM. I will try to resolve your issue.

    Thanks,
  • Hi Ganapathi

    I validated DDR3 in simulator and checked the all address.
    I´m not using the gel file. What I did is to create my cfg.

    my cfg file:

    //*********************************************************************************************************
    // configuração do CFG
    //*********************************************************************************************************


    // cria variavel MultiProc
    var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');


    var nameList = ["CORE0","CORE1","CORE2","CORE3"];

    MultiProc.setConfig(null, nameList);


    var System = xdc.useModule('xdc.runtime.System');
    var SysStd = xdc.useModule('xdc.runtime.SysStd');
    System.SupportProxy = SysStd;

    /* Modules explicitly used in the application */
    var MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ');
    var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
    var HeapBufMP = xdc.useModule('ti.sdo.ipc.heaps.HeapBufMP');
    var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');



    /* BIOS/XDC modules */
    var BIOS = xdc.useModule('ti.sysbios.BIOS');


    var Task = xdc.useModule('ti.sysbios.knl.Task');
    var Cache = xdc.useModule('ti.sysbios.hal.Cache');
    var tsk0 = Task.create('&tsk0_func');
    tsk0.instance.name = "tsk0";

    /* Synchronize all processors (this will be done in Ipc_start) */
    Ipc.procSync = Ipc.ProcSync_ALL;

    /* Shared Memory base address and length */
    //var SHAREDMEM = 0x80000000; // when i use this add is not working
    //var SHAREDMEMSIZE = 0x00200000;


    var SHAREDMEM = 0x0C000000;
    var SHAREDMEMSIZE = 0x00200000;


    var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
    SharedRegion.setEntryMeta(0,
    { base: SHAREDMEM,
    len: SHAREDMEMSIZE,
    ownerProcId: 0,
    isValid: true,

    name: "DDR2",
    });


    /* Lines added to use DDR3 as defaut heap */

    var Memory = xdc.useModule('xdc.runtime.Memory');


    var SYSTEM_HEAPSIZE = 0x2000000; // Vary based on your requirement
    // 0x2000000; // 32 M

    var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');

    var heapMemParams = new HeapMem.Params();

    heapMemParams.size = SYSTEM_HEAPSIZE; // Set previously

    heapMemParams.sectionName = "HeapDDR3_0";
    Program.sectMap["HeapDDR3_0"] = "DDR3"; // This maps it to DDR3
    Program.global.heap0 = HeapMem.create(heapMemParams);
    Memory.defaultHeapInstance = Program.global.heap0; // Set the new heap as the default heap
    // in this case this cfg file is to first app

    heapMemParams.sectionName = "HeapDDR3_1";
    Program.sectMap["HeapDDR3_1"] = "DDR3";
    Program.global.heap1 = HeapMem.create(heapMemParams);

    heapMemParams.sectionName = "HeapDDR3_2";
    Program.sectMap["HeapDDR3_2"] = "DDR3";
    Program.global.heap2 = HeapMem.create(heapMemParams);

    heapMemParams.sectionName = "HeapDDR3_3";
    Program.sectMap["HeapDDR3_3"] = "DDR3";
    Program.global.heap3 = HeapMem.create(heapMemParams);

    Program.stack = 0x2000;




    I follow this steps:
    1 - launch config to XDS560
    2 - Connect 4 cores the same time
    3 - load each core with app
    4 - load data in 0x80200b20 this add
    5 - run all program

    Regards,

    Ganapathi
  • Hi,

    As per your .cfg file, you have allocate the DDR memory. If you accessing the DDR memory means you need to initialize the DDR configuration registers. TI provide .gel file do the DDR3 initialization.

    Better to add the TI provide c6678 EVM .gel file to your target configuration file, it will help to resolve your issue. Refer keystone lab manual document, it should help you for add gel file to your target configuration file.
    www.ti.com.cn/.../sprp820.pdf

    Thanks,
  • Hi Ganapathi

    thanks to help me.

    it works in part

    i have this results and some problems has appeared.



    [C66xx_3] core 3

    [C66xx_2] core 2

    [C66xx_1] core 1

    [C66xx_0] core 0

    *************************************************************************
    ************** init ***********************
    *************************************************************************


    Call core 1

    [C66xx_2] A0=0x840012f0 A1=0x2c
    A2=0x0 A3=0xfffffffa
    A4=0x84000008 A5=0x0
    A6=0x835d14 A7=0x0
    A8=0xa0000 A9=0x2
    A10=0x840012f0 A11=0x835d14
    A12=0x8346e8 A13=0x82f93c
    A14=0x840012f0 A15=0x0
    A16=0x84001314 A17=0x0
    A18=0x840012e8 A19=0x20
    A20=0x0 A21=0x0
    A22=0xad94eff6 A23=0x41108910
    A24=0xc328832a A25=0x5c880800
    A26=0xdda8acf7 A27=0x80960620
    A28=0x94000e02 A29=0x831b0c
    A30=0x20 A31=0x0
    B0=0x0 B1=0x0
    B2=0x0 B3=0x811c00
    B4=0x82f93c B5=0x0
    B6=0x835d78 B7=0xc
    B8=0x1c B9=0x0
    B10=0x8313d0 B11=0x835d78
    B12=0x0 B13=0x0
    B14=0x836f20 B15=0x835cc8
    B16=0x831744 B17=0x0
    B18=0xa B19=0x78
    B20=0x8 B21=0x69
    B22=0xf B23=0x0
    B24=0x2120104 B25=0xb4008005
    B26=0xd8802002 B27=0x7afb2b33
    B28=0x44958234 B29=0xce11dc70
    B30=0xc10c680 B31=0x0
    NTSR=0x1020f
    ITSR=0xf
    IRP=0x828420
    SSR=0x0
    AMR=0x0
    RILC=0x0
    ILC=0x0
    Exception at 0x84000300
    EFR=0x2 NRP=0x84000300
    Internal exception: IERR=0x18
    Opcode exception
    Resource conflict exception
    ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x84000300, sp = 0x00835cc8.
    To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
    xdc.runtime.Error.raise: terminating execution
    [C66xx_1] A0=0x820012f0 A1=0x2c
    [C66xx_3] A0=0x860012f0 A1=0x2c
    [C66xx_1] A2=0x0 A3=0xfffffffa
    [C66xx_3] A2=0x0 A3=0xfffffffa
    [C66xx_1] A4=0xa0008 A5=0x0
    [C66xx_3] A4=0x86000008 A5=0x0
    [C66xx_1] A6=0x834794 A7=0x0
    [C66xx_3] A6=0x83410c A7=0x0
    [C66xx_1] A8=0x0 A9=0x2
    [C66xx_3] A8=0x0 A9=0x2
    [C66xx_1] A10=0x820012f0 A11=0x834794
    [C66xx_3] A10=0x860012f0 A11=0x83410c
    [C66xx_1] A12=0x833180 A13=0x82f160
    [C66xx_3] A12=0xa2ae8 A13=0x82e680
    [C66xx_1] A14=0x820012f0 A15=0x0
    [C66xx_3] A14=0x860012f0 A15=0x0
    [C66xx_1] A16=0x82001314 A17=0x0
    [C66xx_3] A16=0x86001314 A17=0x0
    [C66xx_1] A18=0x820012e8 A19=0x20
    [C66xx_3] A18=0x860012e8 A19=0x20
    [C66xx_1] A20=0x0 A21=0x0
    [C66xx_3] A20=0x0 A21=0x0
    [C66xx_1] A22=0x3b9fbe77 A23=0xc27eb792
    [C66xx_3] A22=0x8c030264 A23=0x64231284
    [C66xx_1] A24=0x80 A25=0x66
    [C66xx_3] A24=0x800712 A25=0x10201276
    [C66xx_1] A26=0xebae9733 A27=0xe0374dbd
    [C66xx_3] A26=0x82203014 A27=0x6a01050
    [C66xx_1] A28=0x0 A29=0x8305a0
    [C66xx_3] A28=0x2208120 A29=0x82ff0c
    [C66xx_1] A30=0x10 A31=0x0
    [C66xx_3] A30=0x30 A31=0x0
    [C66xx_1] B0=0x0 B1=0x0
    [C66xx_3] B0=0x0 B1=0x0
    [C66xx_1] B2=0x0 B3=0x810e80
    [C66xx_3] B2=0x0 B3=0x8109a0
    [C66xx_1] B4=0x82f160 B5=0x0
    [C66xx_3] B4=0x82e680 B5=0x0
    [C66xx_1] B6=0x8347f8 B7=0xc
    [C66xx_3] B6=0x834170 B7=0xc
    [C66xx_1] B8=0x1c B9=0x0
    [C66xx_3] B8=0x1c B9=0x0
    [C66xx_1] B10=0x82fe68 B11=0x8347f8
    [C66xx_3] B10=0x82f7d8 B11=0x834170
    [C66xx_1] B12=0x0 B13=0x0
    [C66xx_3] B12=0x0 B13=0x0
    [C66xx_1] B14=0x835350 B15=0x834748
    [C66xx_3] B14=0x834b98 B15=0x8340c0
    [C66xx_1] B16=0x8301dc B17=0x0
    [C66xx_3] B16=0x82fb4c B17=0x0
    [C66xx_1] B18=0xa B19=0x78
    [C66xx_3] B18=0xa B19=0x78
    [C66xx_1] B20=0x8 B21=0x69
    [C66xx_3] B20=0x8 B21=0x69
    [C66xx_1] B22=0xf B23=0x0
    [C66xx_3] B22=0xf B23=0x0
    [C66xx_1] B24=0xbb7edffd B25=0x198bbff9
    [C66xx_3] B24=0x660404 B25=0xa240241
    [C66xx_1] B26=0xa5d23129 B27=0x65ff53fd
    [C66xx_3] B26=0x800041 B27=0x47244663
    [C66xx_1] B28=0xfddfedff B29=0x5a00e118
    [C66xx_3] B28=0x40b20024 B29=0x846a0c08
    [C66xx_1] B30=0xc009f80 B31=0x0
    [C66xx_3] B30=0xc10c680 B31=0x0
    [C66xx_1] NTSR=0x1020f
    [C66xx_3] NTSR=0x1020f
    [C66xx_1] ITSR=0xf
    [C66xx_3] ITSR=0xf
    [C66xx_1] IRP=0x827fa0
    [C66xx_3] IRP=0x826b92
    [C66xx_1] SSR=0x0
    [C66xx_3] SSR=0x0
    [C66xx_1] AMR=0x0
    [C66xx_3] AMR=0x0
    [C66xx_1] RILC=0x0
    [C66xx_3] RILC=0x0
    [C66xx_1] ILC=0x0
    [C66xx_3] ILC=0x0
    [C66xx_1] Exception at 0x82000300
    [C66xx_3] Exception at 0x86000300
    [C66xx_1] EFR=0x2 NRP=0x82000300
    [C66xx_3] EFR=0x2 NRP=0x86000300
    [C66xx_1] Internal exception: IERR=0x8
    [C66xx_3] Internal exception: IERR=0x18
    [C66xx_1] Opcode exception
    [C66xx_3] Opcode exception
    [C66xx_1] ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x82000300, sp = 0x00834748.
    [C66xx_3] Resource conflict exception
    [C66xx_1] To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
    [C66xx_3] ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x86000300, sp = 0x008340c0.
    [C66xx_1] xdc.runtime.Error.raise: terminating execution
    [C66xx_3] To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
    xdc.runtime.Error.raise: terminating execution

    What i need to check in ROV?

    regards,

    Nivaldo
  • Hi,

    It is a exception error. I think your test application try to access invalid/uninitialized memory section. Please debug your test code step by step to find out the issue.

    Thanks,
  • Hi,
    Ganapathi

    just one question. I have a notebook i7 with 8G

    but i need to wait a long time to load program and of course long long time to debug.

    Do you have this problem?
  • No. Usually it take few seconds only(less then 5sec).
  • Hi,

    i delete de metatada folder and now i going more faster
  • hi,
    I was looking for and found one way to see the problem.
    I have the print screen and you can see. But can you help me?what i need to do and solve this bug?

  • I did not see and code on you screen shot, I am not able to help you with out your test code.
  • sorry

    now the source code

    /************************************************************************************************************************
                                         Programa para core 1
    
     **********************************************************************************************************************/
    #include <stdio.h>
    #include <xdc/std.h>
    #include <string.h>
    #include <math.h>
    
    /*  -----------------------------------XDC.RUNTIME module Headers    */
    #include <xdc/runtime/System.h>
    #include <xdc/runtime/IHeap.h>
    
    /*  ----------------------------------- IPC module Headers           */
    #include <ti/ipc/Ipc.h>
    #include <ti/ipc/MessageQ.h>
    #include <ti/ipc/HeapBufMP.h>
    #include <ti/ipc/MultiProc.h>
    
    /*  ----------------------------------- BIOS6 module Headers         */
    #include <ti/sysbios/BIOS.h>
    #include <ti/sysbios/knl/Task.h>
    
    /*  ----------------------------------- To get globals from .cfg Header */
    #include <xdc/cfg/global.h>
    //****************************************************************************************************************
    //                                         Cache
    #include <csl/csl_types.h>
    
    #include <csl/csl.h>
    
    #include <csl/csl_cache.h>
    #include <ti/sysbios/hal/Cache.h>
    //****************************************************************************************************************
    #define tamanho_linha 2046
    #define tamanho_coluna 128
    
    #define HEAP_NAME   "myHeapBuf"
    #define HEAPID      0
    
    //****************************************************************************************************************
    
    typedef struct DataMsg_vetor_core_0
           {
             MessageQ_MsgHeader header;
             double  *vetor_data_0;
           } DataMsg_vetor_core_0;
    
    //****************************************************************************************************************
    typedef struct DataMsg_vetor_core_1
          {
             MessageQ_MsgHeader header;
             double  *vetor_data_1;
          } DataMsg_vetor_core_1;
    //****************************************************************************************************************
    Char localQueueName[10];
    Char nextQueueName[10];
    UInt16 nextProcId;
    //****************************************************************************************************************
    //                                  Vari�veis
    //****************************************************************************************************************
    int passo = 10;
    int decimacao = 10;
    int cont,linha,coluna,tamanho_linha_coluna, cont_teste;
    double maximo;
    double valor_16,media_16;
    //****************************************************************************************************************
    
    Void tsk0_func(UArg arg0, UArg arg1)
    {
        MessageQ_Msg     msg;    
        MessageQ_Handle  messageQ;
        MessageQ_QueueId remoteQueueId;
        Int              status;
    //    UInt16           msgId = 0;
        HeapBufMP_Handle              heapHandle;
        HeapBufMP_Params              heapBufParams;
        DataMsg_vetor_core_1          *dataMsg_vetor_core_1;
        DataMsg_vetor_core_0          *dataMsg_vetor_core_0;
    
    //****************************************************************************************************************
    //   Cria heap para alocar a mensagem
    //****************************************************************************************************************
        if (MultiProc_self() == 0)
          {
            /* 
             *  Create the heap that will be used to allocate messages.
             */
    
            HeapBufMP_Params_init(&heapBufParams);
            heapBufParams.regionId       = 0;
            heapBufParams.name           = HEAP_NAME;
            heapBufParams.align          = 128;//1024;
            heapBufParams.numBlocks      = 1024;
            heapBufParams.blockSize      = 1024;//sizeof(DataMsg_vetor_core_1);//(DataMsg_1_int);;
        //    heapBufParams.blockSize      = sizeof(DataMsg_vetor_core_1);
            heapHandle = HeapBufMP_create(&heapBufParams);
             if (heapHandle == NULL)
              {
                System_abort("HeapBufMP_create failed\n" );
              }
    
          }
        else
          {
            /* Open the heap created by the other processor. Loop until opened. */
            do {
                status = HeapBufMP_open(HEAP_NAME, &heapHandle);
                /* 
                 *  Sleep for 1 clock tick to avoid inundating remote processor
                 *  with interrupts if open failed
                 */
                if (status < 0)
                   {
                    Task_sleep(1);
                   }
               } while (status < 0);
          }
        
        /* Register this heap with MessageQ */
        MessageQ_registerHeap((IHeap_Handle)heapHandle, HEAPID);
    
     //*********************************************************************************************************
     //            Conectando ao core 0
     //*********************************************************************************************************
            messageQ = MessageQ_create("CORE0", NULL);
            if (messageQ == NULL)
              {
                System_abort("MessageQ_create failed\n" );
              }
    //*********************************************************************************************************
            status = MessageQ_get(messageQ, &msg, MessageQ_FOREVER);
              if (status < 0)
               {
                System_abort("This should not happen since timeout is forever\n");
               }
    //*********************************************************************************************************
    //                                  Rotina core 1 - recebendo dados do core 0
    //*********************************************************************************************************
    
              tamanho_linha_coluna = tamanho_linha*tamanho_coluna;
              System_printf("Recebendo dados do core 0 \n\n");
    
              dataMsg_vetor_core_0 = (DataMsg_vetor_core_0*)MessageQ_alloc(HEAPID,sizeof(DataMsg_vetor_core_0));
    
              MessageQ_get(messageQ, (MessageQ_Msg*)&dataMsg_vetor_core_0, MessageQ_FOREVER);
    
              Cache_inv(dataMsg_vetor_core_0->vetor_data_0,tamanho_linha_coluna*sizeof(double),Cache_Type_ALL, heapBufParams.align);
    
              printf("\n endere�o data_0 %x\n",dataMsg_vetor_core_0->vetor_data_0);
    
              System_printf("\nRotina core 1 \n\n");
    
    
    //*********************************************************************************************************
    //                  Calcula valor m�ximo antes do envelope
    //*********************************************************************************************************
                  maximo = 1.0e-100;
                  for(linha = 0; linha < tamanho_linha_coluna; linha++)
                         {
                           if (dataMsg_vetor_core_0->vetor_data_0[linha] > maximo)
                            	  maximo = dataMsg_vetor_core_0->vetor_data_0[linha];
                         }
                  printf("\n\n O valor m�ximo antes do envelope � = %e\n\n",maximo);
    
    //*********************************************************************************************************
             MessageQ_free(msg);
             MessageQ_delete(&messageQ);
    //*********************************************************************************************************
    //                                 Chamando core 2
    //*********************************************************************************************************
                    System_printf("chamando o core 2 \n\n");
    //*********************************************************************************************************
    //                                 Enviando para o core 2
    //*********************************************************************************************************
                       do {
                           status = MessageQ_open("CORE1", &remoteQueueId);
                            if (status < 0)
                               {
                               Task_sleep(1);
                               }
                          } while (status < 0);
    
    //*********************************************************************************************************
                       msg = MessageQ_alloc(HEAPID, sizeof(MessageQ_MsgHeader));
                                if (msg == NULL)
                                  {
                                    System_abort("MessageQ_alloc failed\n" );
                                  }
    //*********************************************************************************************************
                      System_printf("Enviando dados para core 2 \n\n");
    
                      status = MessageQ_put(remoteQueueId, msg);
                           		  if (status < 0)
                           		    {
                           		       System_abort("MessageQ_put had a failure/error\n");
                           		     }
    //***********************************************************************************************************
             dataMsg_vetor_core_1 = (DataMsg_vetor_core_1*)MessageQ_alloc(HEAPID,sizeof(DataMsg_vetor_core_1));
    //***********************************************************************************************************
    //                   alocando dado na regi�o shared
    //***********************************************************************************************************
       		 dataMsg_vetor_core_1->vetor_data_1 = (double*) HeapBufMP_alloc(heapHandle, sizeof(double), heapBufParams.align);
        		                    if (dataMsg_vetor_core_1->vetor_data_1 == NULL)
        		                                  System_abort("erro HeapBufMP_alloc core 1");
            printf("\n heapBufParams.align data 1--> %d\n",heapBufParams.align);
    //***********************************************************************************************************
             dataMsg_vetor_core_1->vetor_data_1 = (double *) malloc((tamanho_linha_coluna)*sizeof(double));
    //***********************************************************************************************************
    //                               Criando Buffer de Zeros
    //***********************************************************************************************************
        		                    printf("\nbuffer de zeros do core 1 \n");
              for(linha = 0; linha < tamanho_linha_coluna; linha++)
        		        dataMsg_vetor_core_1->vetor_data_1[linha] = 0.0;
    //***********************************************************************************************************
              for(linha = 0; linha < tamanho_linha_coluna; linha++)
                  		        dataMsg_vetor_core_1->vetor_data_1[linha] =  dataMsg_vetor_core_0->vetor_data_0[linha];
    
    System_printf("\n*************************************************************************");
    System_printf("\n***********       Verfica se dados est�o certos     *********************");
    System_printf("\n*************************************************************************\n");
    
    cont_teste = 0;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 1;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2045;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2046;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2046*127;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2046*128-1;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    
    System_printf("\n*************************************************************************");
    //*************************************************************************************************************************************
    System_printf("\n*************************************************************************");
    System_printf("\n***********        filtro ruido por media 16        *********************");
    System_printf("\n*************************************************************************\n");
    
     long vezes,nl,nc;
    
    for (nl = 0; nl < tamanho_linha; nl++)
      {
       for (vezes = 0; vezes <  8; vezes++)
    	  {
    		media_16 = 0;
    		for (nc = 1; nc <= 16; nc++)
    		 {
    			 valor_16 = dataMsg_vetor_core_0->vetor_data_0[vezes*16*2046 + (nc - 1)*2046 + nl];
    			 media_16 = media_16 +  valor_16;
    		 }
    		  media_16 = (media_16/16);
    			for (nc = 1; nc <= 16; nc++)
    				dataMsg_vetor_core_1->vetor_data_1[vezes*16*2046 + (nc - 1)*2046 + nl] = dataMsg_vetor_core_0->vetor_data_0[vezes*16*2046 + (nc - 1)*2046 + nl] - media_16;
    
    	   }
    
       }
    
    System_printf("\n*************************************************************************");
    System_printf("\n***********       Verfica  dados ru�do              *********************");
    System_printf("\n*************************************************************************\n");
    
    cont_teste = 0;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 1;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2045;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2046;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2046*127;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    cont_teste = 2046*128-1;
    printf("\nvetor_data_1[%d] = %e  - end  %x",cont_teste, dataMsg_vetor_core_1->vetor_data_1[cont_teste],&dataMsg_vetor_core_1->vetor_data_1[cont_teste]);
    
    System_printf("\n*************************************************************************");
    
    //**************************************************************************************************************************************
    //       printf("\n total de pontos %d\n",cont_novo);
              // 	 for(linha = 0; linha < 102; linha++)
               //	    	printf("dataMsg_vetor_core_1->vetor_data_1[%d] = %e - endereco %x\n",linha,dataMsg_vetor_core_1->vetor_data_1[linha],&dataMsg_vetor_core_1->vetor_data_1[linha]);
    
    //*********************************************************************************************************
    
    //***********************************************************************************************************
        	   	 Cache_wbInv(dataMsg_vetor_core_1->vetor_data_1,(tamanho_linha_coluna)*sizeof(double),Cache_Type_ALL, heapBufParams.align);
       // 		 Cache_wbInv(dataMsg_vetor_core_1->vetor_data_1,sizeof(double),Cache_Type_ALL, heapBufParams.align);
       // 		 printf("\ncore 1 passou wbinv\n");
        		 status = MessageQ_put(remoteQueueId,(MessageQ_Msg)dataMsg_vetor_core_1);
        		          if (status < 0)
        		           {
        		             System_abort("Falhou a transmiss�o da dados para core 2 \n");
        		           }
        		 //         printf("\npassou put\n");
    
    //*********************************************************************************************************
                     MessageQ_close(&remoteQueueId);
    //*********************************************************************************************************
            //         envia_pc_txt(valor_recebido);
    
        System_printf("fim  core 1\n");
        while(1);// nao posso finalizar.
      //  BIOS_exit(0);
    }
    
    /*
     *  ======== main ========
     *  Synchronizes all processors (in Ipc_start) and calls BIOS_start
     */
    Int main(Int argc, Char* argv[])
     {
        Int status;
        printf("Iniciando core 1\n\n");
    
        status = Ipc_start();
        if (status < 0)
           {
            System_abort("Ipc_start failed\n");
           }
     
        BIOS_start();
    
        return (0);
    }
    
    

  • Hi

    i´ve looking for someething in asm code and I found this:



    in core 1 error accur here
    messageQ = MessageQ_create("CORE0", NULL);
    if (messageQ == NULL)
    {
    System_abort("MessageQ_create failed\n" );
    }

    [C66xx_1] ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x82000300, sp = 0x00834758.
    asm code
    82000300: 63206F64 .word 0x63206f64
    82000304: 2065726F [ B0] LDW.D2T2 *+B14[25970],B0
    82000308: 00000A31 || .word 0x00000a31

    in core 2 the error accur here
    messageQ = MessageQ_create("CORE1", NULL);
    if (messageQ == NULL)
    {
    System_abort("MessageQ_create failed\n" );
    }
    [C66xx_2] ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x84800300, sp = 0x00835cd8.
    asm code
    84000300: 63206F64 .word 0x63206f64
    84000304: 2065726F [ B0] LDW.D2T2 *+B14[25970],B0
    84000308: 00000A32 || .word 0x00000a32

    so, is this .word would be the core name?

    Unttil now i can´t find out one solution.