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.

TMS320C6678: .gel file customization

Part Number: TMS320C6678

Hi all,

We need to load 8 different binaries on the C6678 and we also need to move some momory sections in the DDR3 due to NDK usage (L2 is not enough to store the code). We modified the platform from the RTSC tools in order to divide DDR3 memory. We decided to split it in 9 parts (1 common and 1 for each core) and we added a modified linker.cmd (http://processors.wiki.ti.com/index.php/Linker_CMD_Files_for_CCS#C6000 ).

When the code is uploaded on the board we get the following error:

C66xx_0: File Loader: Verification failed: Values at address 0x84000000 do not match Please verify target memory and memory map.
C66xx_0: GEL: File: ***.out: a data verification error occurred, file load failed.

Adding the default evmc6678l .gel file ("..\..\emulation\boards\evmc6678l\gel\evmc6678l.gel") the binaries can be loaded on the hardware but we need support on .gel file customization in order to solve these two main problems we are facing:

1)IPCGR0-IPCGR7 does not generate interrupts anymore

2)What is the .gel file section which initialises the NDK?

Can someone please help us?

Best regards,

Giovambattista Astorino

Code Composer 6.2.0

NDK 2.25.0.09

PDK 2.0.4

SYS/BIOS 6.46.1.38

  • Hi,

    I've notified the sw team. Their feedback will be posted here.

    Best Regards,
    Yordan
  • Hi,

    If you run the C6678 standalone in no boot mode, we always recommend you runs the GEL to initialize the DSP. It configures main PLL, DDR, PA, SGMII, CPSW. The PA, SGMII and CPSW are related to your NDK.

    For IPCGR0-7, it doesn't related to the GEL file. You can refer to processors.wiki.ti.com/.../Configuring_Interrupts_on_Keystone_Devices

    The IPC interrupt number is 91 from Figure 7-32 TMS320C6678 System Event Inputs — C66x CorePac Primary.

    Regards, Eric
  • Hi Eric,

    We would like to know which parts of the gel file in particular are necessary in order to make the NDK work. Please, can you provide usmore detailed information (number of line, functions etc)?

    It seems that the .gel file disables the IPC interrupt number 91(#define CSL_GEM_IPC_LOCAL            (0x0000005b))

    We made an example project to prove it; you can find it attached to this reply.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/Notify_5F00_Test.7z

    As you can see, cores 1-8 pend on a semaphore and Core0 wakes them using IPCGR0-7 interrupts. The related ISR calls the semaphore post on each core individually. In targetConfigs folder, you can find two target configuration file: one of them uses the gel file while the other runs program without it. You can observe the unexpected behaviour running the example with each of them.

    Regards,

    Giovambattista Astorino

  • Hi,

    I am referring to the CCS 7.0.0 ccsv7\ccs_base\emulation\boards\evmc6678l\gel\evmc6678l.gel. It is version 2.0.0.5. Your CCS 6.2 GEL should be the same. All below function calls are necessary to run NDK:

    Set_PSC_State(PD2, LPSC_PKTPROC, PSC_ENABLE);
    Set_PSC_State(PD2, LPSC_CPGMAC, PSC_ENABLE);

    / Setup Pll3 pass clk @ 1050 MHz
    Init_Pll3(PLLM_PASS, PLLD_PASS);

    // Configure SGMII SERDES
    configSGMIISerdes();

    GEL_TextOut( "Configuring CPSW ...\n");
    setCpSwConfig();

    If you run NDK in DDR, you also need:

    xmc_setup();
    ddr3_setup_auto_lvl_1333(0);

    For your IPC example, I have a quick look. For the one with GEL, why you run GEL on every core? Can you just run it on core 0 and check if IPC works or not?

    Regards, Eric
  • Hi Eric,

    Thanks for your fast and accurate reply. We will try to customize the gel file with these new information. Honestly we thought that the gel file had to be run on every core. Anyway, the behaviour is the same with the gel file loaded from core 0 only. IPC doesn't work.
  • Hi,

    I tried your notify_test.out on all 8 cores, load then run at the same time. When this is no GEL file at all, I got "I'm awake!" for all 7 slave cores. When I have GEL file on core 0, I didn't get any notification.

    Then I removed majority of the GEL file, kept Init_PLL(PLL1_M, PLL1_D) only to intialize the main PLL to 1GHz, I have some cores got notify, the others didn't. It looks some timing issue. This needs more time to look into.

    Regards, Eric
  • Thanks for your help.

    Just one more thing: we need the .gel file to use both network and ipc interrupt, so this constraint must be taken into account during .gel file customization.

    Thanks a lot,

    Giovambattista Astorino