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.

Starterware: Problems with Raster LCD

Tool/software: Starterware

Hello everyone,

I am trying to get a raster display on my beagle bord black to work (the display is a  4DCAPE-43). I set everything up like it is in the grlib_demo and included the LCDPinMuxSetup() and the LCDModuleClkConfig() from the lcd.c . Now after the clk config and the pin mux, the debugger shows only the first 4 Registers of the LCD Registers as readable. Everything else cannot be read and when i'm beginning to acess the registers with RasterClocksEnable(LCDC_INSTANCE); i get an exeption (program counter jumps to 0x80015010 / ends up in _exit() ).

I think i configured all the clocks like they are configured in the grlib_demo am i missing something else which is essential when using the LCD controller of the AM335x?


best regards & thanks in advance,

Christian

  • Hello, I got some additional information about my problem. It seems that it has something to do with the register acess by the debugger.
    I changed the LCD.xml so that the debugger doesn't read the LCD-Registers.
    Now comes the strange part: When i'm stating to debug then my program instantly craches as soon as i try to write a LCD-Register. But when i firt click on Restart i can write the LCD-Registers without any Problems.
    This could be a nice workaround, but i also want to use the Ti-RTOS and this crashes as soon as i create a task or do BIOS_start(); (But only if i pressed "Restart" before starting the programm - when starting do debug normally the TI RTOS works, but of course the LCD configuration not)

    Does anyone know what exactly the restart button does and why this has so much influence on my program execution?

    best regards,
    Christian
  • Does nobody have an idea why my controller always crashes when acessing the LCD_Controller registers?
    After pressing "Restart" in the debugging window everything works fine with the Display. Additionally the controller has a much better performance prior pressing "Restart" (c.a. 500 MIPS) than after (c.a. 10 MIPS). I checked every register which has something to do with the clock generation but the PLL-miltiplicators are set correctly to 500 Mhz core-frequency. I also lowered all the clocks in the .gel file but i still get the error when accessing the LCD registers prior the "Restart".
    Is there something before the beginning of the debuggig session that the debugger reads all the registers even the ones i removed from the LCD.xml? (If the Debugger reds theese registers, i always get that error even after restart)

    thanks a lot & best regards,

    Christian
  • Christian,

    You may want to check out this thread e2e.ti.com/.../1390701 SOunds very similar ot the problems you are having. There are some registers that should not be touched, hence the reason you are seeing the problems being observed. Hope this helps.

    Lali
  • Hey All!

    I solved the Problem.
    It had something to do with the MMU Setup. In the typical example the LCD-Registers are not memory-mapped in the .cfg file .

    I changed the standard-entry to

    var peripheralAttrs = {
    type : Mmu.FirstLevelDesc_SECTION, // SECTION descriptor
    bufferable : false, // bufferable
    cacheable : false, // cacheable
    shareable : false, // shareable
    noexecute : true, // not executable
    };

    // Set the descriptor for each entry in the address range
    for (var i=0x44000000; i < 0x80000000; i = i + 0x00100000) {
    // Each 'SECTION' descriptor entry spans a 1MB address range
    Mmu.setFirstLevelDescMeta(i, i, peripheralAttrs);

    now the LCD-Registers are also memory-mapped as peripherals.

    The thing with the restart was, that a restart switched the MMU off so none of the LCD registers were buffered (now the performance suffered severely, because everything else was not buffered, too).

    Additionally the LCD-registers must not be acessed by the debugger. I did this by deleting their entries from the LCD.xml