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.

BEAGLEBK: LCDC driver setup

Part Number: BEAGLEBK

Greetings!

Application Processor: beaglebone black(Cortex A8)

I am working on implementing LCDC controller initialization and configuration. I found that all the low layer API's of LCDC have base address as a parameter 1 inside them. I got the base address of my LCDC instance with the help of 

LCDCInstanceBaseAddr = CHIPDBBaseAddress(CHIPDB_MOD_ID_LCDC, 0U);
/** LCDC clock initialization*/
    LCDCStatus = PRCMModuleEnable(CHIPDB_MOD_ID_LCDC, LCDC_INSTANCE, 0U);
    if(S_PASS == LCDCStatus)
    {
        /** GPIO Pin configurations */
        LCDCStatus = PINMUXModuleConfig(CHIPDB_MOD_ID_LCDC, LCDC_INSTANCE, 0U);
    }
/** Enable all the clocks of the LCDC */
LCDCClocksEnable(LCDCInstanceBaseAddr);

Compiler is not going furthur at LCDCClocksEnable API throwing follwoing exception 

CortxA8: Unhandled ADP_Stopped exception 0x80234568

I also verified the base adress with the file "soc_AM335x.h" in my starterware 

#define SOC_LCDC_0_REGS                     0x4830E000

the return value of CHIPDBBaseAddress() matches with above macro.

Kindly show me a way to resolve this. It is very important to make my LCDC work for my project.

  • Hi,

    I suspect you need to add an MMU page descriptor for the memory region containing the LCDC registers.

    I don't know if your application is bare metal (Starterware) or RTOS.

    If using Starterware only

    See the MMU API here:

    • <PDK>\packages\ti\starterware\include\mmu.h
    • <PDK>\packages\ti\starterware\soc\mmu_arm.c

    See an example here:

    • <PDK>\packages\ti\starterware\examples\cache_mmu

    If using Starterware/RTOS

    See an example here: <PDK>\packages\ti\starterware\examples\lcdc\raster\rtos

    The MMU settings are contained in am335x_app_lcdc_evmam335x.cfg.

                /* Define the base address of the 1 Meg page the peripheral resides in. */
                var peripheralBaseAddr = 0x4830E000;;
    
                /* Configure the corresponding MMU page descriptor accordingly */
                Mmu.setFirstLevelDescMeta(peripheralBaseAddr,
                                          peripheralBaseAddr,
                                          peripheralAttrs);

    Regards,
    Frank

  • Thank you Frank.It worked