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.

RTOS/AM5718: Running VPS loopback example from SD card

Part Number: AM5718

Tool/software: TI-RTOS

I have custom board based on AM5718 and now developing custom bootloader and application based on TI-RTOS with video capture and HDMI display functionality using source code from pdk_am57xx_1_0_14.

I use idkAM571x board as a reference and debug platform. I have some troubles running VPS Loopback Example on idkAM571x board. Project was created using pdkProjectCreate.sh script and built with Code Composer Studio 8.3. When loading example with JTAG everything works just fine, I can see picture from camera on external mini-board on HDMI display.

But it hangs when booting from MicroSD card. I tried to use precompiled bootloader pdk_am57xx_1_0_14/packages/ti/boot/sbl/binary/idkAM571x/mmcsd/bin/MLO. This bootloader loads and runs app, but executions stucks in LpbkApp_init function with debug output "hal/src/vpshal_dssDispcOvly.c @ Line 2880: DSS Still in reset".

It seems that GEL files through JTAG setup something inside display subsystem of AM5718 which booloader does not do. Please tell me what can that be?

Regards.

  • Hi,

    It looks that GEL file did something for DSS, but it doesn't implemented in MLO or your application before using DSS. I met such issue sometimes back when I was trying to run the VPS loopback on MMCSD + MLO.

    I didn't change MLO at that time, but I added a code inside vps\src\vpslib\hal\src\vpshal_dssDispcOvly.c instead as a workaround:

    static void halDispcReset(void)
    {
    UInt32 dispcStatus;
    UInt32 temp;

    /* Enable DSS CLK */
    temp = HW_RD_REG32(0x4a009100);
    temp &= ~(0x3);
    temp |= 0x2;
    HW_WR_REG32(0x4a009100, temp);
    while((HW_RD_REG32(0x4a009100) & 0x100) != 0x100);

    /* Set DSS mode */
    temp = HW_RD_REG32(0x4a002558);
    temp |= 0x1;
    HW_WR_REG32(0x4a002558, temp);

    temp = HW_RD_REG32(0x4a009120);
    temp &= ~(0x3);
    temp = temp | (0x00003F00) | (0x2);
    HW_WR_REG32(0x4a009120, temp);
    while((HW_RD_REG32(0x4a009120) & 0x30000) != 0x0);

    ... rest of the pdk_am57xx_1_0_14 code.

    In your CCS project, please rebuild the application (may be the library using makefile also) and set a breakpoint to make sure this function is called with your added code. Then convert this to "app" to run with MLO.

    Regards, Eric

  • Hello, Eric.

    Thanks! Now it works just fine.

    I aslo tried to add this solution to custom bootloader, it works too.

    The main reason is that all clocks in CM_DSS_DSS_CLKCTRL register should be enabled inside Board_moduleClockInit() function.

    Regards, Anton.