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.

Debugging OMAP-L138 with TRACE32: Setting hardware breakpoints on peripheral register accesses

Other Parts Discussed in Thread: OMAPL138, OMAP-L138

Hi

I'm trying to halt the OMAP's ARM when it writes to certain internal peripheral registers. The debugger I'm using is a Lauterbach Power Debug with TRACE32.

The problem I'm having is when I set an ONCHIP breakpoint on a write access to a peripheral register (say the GPIO DIR01 register) the breakpoint never triggers. I've checked that the code does write to the register I'm setting breakpoints on but all the ones I've tried have never triggered.

Can anyone confirm that the ARM supports breakpoints on internal peripheral register accesses or suggest anything that I may be doing wrong in my setup?

Thanks

Neil

  • Hi Neil,
    Yes, we able to set the breakpoints in ARM core for core reg, SYSCFG and peripheral registers (GPIO,I2C etc.,)
    I have done this on CCS IDE with XDS510USB and XDS100 emulators.
    Please check your Lauterbach setup.
    Do you have Lauterbach config file for OMAPL138 ?

    Please refer to the following E2E post.
    e2e.ti.com/.../104155
  • Hi Titus,

    Thanks for confirming that breakpoints are possible on peripheral registers.

    I do have the Lauterbach config file for the OMAP-L138.

    I will take this issue up with Lauterbach to see if they can help.

    Thanks again

    Neil

  • Hi Neil,
    Please update us once you solved this problem and it could help others too.
    Thanks for your understanding.
  • Hi Titus,

    After speaking with UK lauterbach support I have a solution to the problem.

    The breakpoints were not working because the way in which I was putting the ARM into debug (i.e. using the default settings) meant that the breakpoints would clear. Anyhow, the following startup sequence puts the ARM into debug properly:

    SYStem.RESet

    SYStem.CPU OMAP-L138

    system.option resbreak off

    system.option waitreset on

    SYStem.Option DACR ON          ; give Debugger global write permissions

    TrOnchip.Set DABORT OFF        ; used by Linux for page miss!

    TrOnchip.Set PABORT OFF        ; used by Linux for page miss!

    TrOnchip.Set UNDEF OFF         ; my be used by Linux for FPU detection

    SYStem.Option MMUSPACES ON     ; enable space ids to virtual addresses

    system.jtagclock RTCK

    print "Going up..."

    SYStem.Up

    To save on typing, the sequence can be saved as a Lauterbach batch file (.cmm) and then run within TRACE32.

    Hope this helps

    Regards

    Neil

  • Hi Neil,
    Sounds good.
    Thanks for your update.