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.

What is wrong when running L138 LCDK EDMA3 LLD example

Other Parts Discussed in Thread: OMAPL138, SYSBIOS

Hi,

I import EDMA3 LLD example from folder:

C:\ti\edma3_lld_02_11_11_13\examples\edma3_driver

When it is loaded and run,  there are such errors:


edma3init() Failed, error code: -128
edma3init() Failed, error code: -128

I suspect that some ram mapper errors, but I cannot figure out what is wrong. I have attached the project here.

5367.evmOMAPL138.zip

I also find the edma_drv_bios6_omapl138_st_sample_configuration project has unsolved variable:

Could you tell me how to run EDMA3 on this OMAP L138 LCDK?

Thanks

  • The first problem is that the dependent cfg project uses the EVML138 platform, which has a linker file. Inside this linker file, it has definition:


    --args 0x0
    -heap 0x0
    -stack 0x1000

    MEMORY
    {
    IROM (RX) : org = 0x11700000, len = 0x100000
    IRAM (RWX) : org = 0x11800000, len = 0x40000
    L3_CBA_RAM (RWX) : org = 0x80000000, len = 0x20000
    DDR : org = 0xc3000000, len = 0x1000000
    }

    while in the st_sample folder, there is definition:

    MEMORY
    {
    #ifdef DSP_CORE /* DSP exclusive memory regions */

    DSPL2ROM o = 0x00700000 l = 0x00100000 /* 1MB L2 DSP local ROM */
    DSPL2RAM o = 0x00800000 l = 0x00040000 /* 256kB L2 DSP local RAM */
    DSPL1PRAM o = 0x00E00000 l = 0x00008000 /* 32kB L1 DSP local Program RAM */
    DSPL1DRAM o = 0x00F00000 l = 0x00008000 /* 32kB L1 DSP local Data RAM */

    #endif

    SHDSPL2ROM o = 0x11700000 l = 0x00100000 /* 1MB L2 Shared Internal ROM */
    SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256kB L2 Shared Internal RAM */
    SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 /* 32kB L1 Shared Internal Program RAM */
    SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 /* 32kB L1 Shared Internal Data RAM */
    EMIFACS0 o = 0x40000000 l = 0x20000000 /* 512MB SDRAM Data (CS0) */
    EMIFACS2 o = 0x60000000 l = 0x02000000 /* 32MB Async Data (CS2) */
    EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB Async Data (CS3) */
    EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB Async Data (CS4) */
    EMIFACS5 o = 0x66000000 l = 0x02000000 /* 32MB Async Data (CS5) */
    SHRAM o = 0x80000000 l = 0x00020000 /* 128kB Shared RAM */
    DDR2 o = 0xC0000000 l = 0x20000000 /* 512MB DDR2 Data */

    The red lines contrdict with some parts of the cfg project. Especially the SHRAM and IRAM are most unavoidable.

    Could you tell me how to make the linker work and run EDMA3 example on L138 LCDK?

    Thanks

     

  • Excuse me. I forgot to make it clear that the project is in C674x side. I do not use ARM core in this project.

  • Hi Robert,

    Thanks for your post.

    If you see the release notes of EDMA3 LLD, i don't think, OMAPL138 device is supported and also, it is not validated & tested for LCDK device configuration. It was validated only with

    • OMAPL138 EVM:
      • C67x SYS/BIOS
      • ARM 9 SYSBIOS

    Please check the "Device Support" section for the supported devices and "Validation" section for the valid configuration in the EDMA LLD release notes.

    Also, please valdiate the following components in your build setup:

    • CCS 5.4.0
    • C6x Code Generation Tools version 7.4.2
    • TMS470 Code Generation Tools 5.0.4
    • Arm GCC A15 Toolchain (Linaro) 4.7.3
    • SYS/BIOS 6.35.02.45
    • XDC Tools 3.25.02.70

    For EDMA3 intialization, you would require EDMA3 LLD sample initialization libraries / OS abstraction layers to run EDMA3 LLD stand-alone applications and you could see the same in the below path: 

    • For Resource Manager: They could be located in edma3_lld_02_11_09_XX\packages\ti\sdo\edma3\rm\sample\libfolder.
    • For EDMA3 Driver: They could be located in edma3_lld_02_11_09_XX\packages\ti\sdo\edma3\drv\sample\lib folder

     Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------
    Please click the Verify Answer button on this post if it answers your question.
    -------------------------------------------------------------------------------------------------------
  • Sivaraj Kuppuraj said:

    For EDMA3 intialization, you would require EDMA3 LLD sample initialization libraries / OS abstraction layers to run EDMA3 LLD stand-alone applications and you could see the same in the below path: 

    • For Resource Manager: They could be located in edma3_lld_02_11_09_XX\packages\ti\sdo\edma3\rm\sample\libfolder.
    • For EDMA3 Driver: They could be located in edma3_lld_02_11_09_XX\packages\ti\sdo\edma3\drv\sample\lib folder

    Thank you for prompt reply. I am new to EDMA3 driver. Please give me a little explanation about:

    require EDMA3 LLD sample initialization libraries / OS abstraction layers to run EDMA3 LLD stand-alone applications

    Does that mean do the above if I do not use BIOS6?

    Second, if those EDMA3 LLD does not support L138LCDK, what method is to use these function?

    Thanks,

  • There is a link on LCDK and EDMA3:

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/292506.aspx

    Ditry said:

    void L138_initialise_edma(int32_t fs, int16_t adc_gain, int16_t dac_atten, int8_t input_type)
    {
      // allocate memory for ping pong buffers
      pingOUT = (int16_t *)malloc(BUFCOUNT*sizeof(int16_t));
      pongOUT = (int16_t *)malloc(BUFCOUNT*sizeof(int16_t));
      pingIN = (int16_t *)malloc(BUFCOUNT*sizeof(int16_t));
      pongIN = (int16_t *)malloc(BUFCOUNT*sizeof(int16_t));

      USTIMER_init();

      EVMOMAPL138_lpscTransition(PSC1, DOMAIN0, LPSC_MCASP0, PSC_ENABLE);
      EVMOMAPL138_pinmuxConfig(PINMUX_MCASP_REG_0, PINMUX_MCASP_MASK_0, PINMUX_MCASP_VAL_0);
      EVMOMAPL138_pinmuxConfig(PINMUX_MCASP_REG_1, PINMUX_MCASP_MASK_1, PINMUX_MCASP_VAL_1);

      // replaces I2C_init();
      *( volatile uint32_t* )(0x01C22024) = 0;
      *( volatile uint32_t* )(0x01C22030) = 2;
      *( volatile uint32_t* )(0x01C2200C) = 5;
      *( volatile uint32_t* )(0x01C22010) = 5;
      *( volatile uint32_t* )(0x01C22024) |= 0x20;
     
      CSR = 0x0000; // disable interrupts globally while initialising
                    // GIE is bit 0 of CSR register

      L138_init_aic3106_registers(fs, adc_gain, dac_atten,input_type);

      L138_init_mcasp_edma();

    Does the author do what you mean: " initialization libraries / OS abstraction layers to run EDMA3 LLD stand-alone applications"?

     

    Is there an example on my question? Thanks

     

  • Hi Robert,

    Alternatively, you could try downloading the latest MCSDK software from the below link:

    http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk/latest1/index_FDS.html

    McSDK software supports OMAPL138 LCDK device to run McASP-EDMA LLD example which you can found at the below path after installing McSDK software:

    ~\pdk_OMAPL138_1_01_00_01\packages\ti\drv\exampleProjects\MCASP_AudioExampleProject

    Actually, pdk_OMAPL138_1_01_00_01 package would come as part of McSDK installation. After installation, you would see "mcsdk_1_01_00_01" & "pdk_OMAPL138_1_01_00_01" directories in which, you could see McASP-EDMA LLD example in the above pdk installation path.

    Thanks & regards,

    Sivaraj K

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