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.

How to initialize spinlocks on DM8148?

Hi all,

I am trying to get IPC between ARM an DSP to work on a EVMDM8148.

CCS 6.1.0

XDC 3.25.6.96

SYS/BIOS 6.35.6.56

BIOSPSP 3.10.6.0

IPC 1.25.0.4

IPC init raises an exception when trying to access the spinlock peripheral registers, i.e. when trying to clear all spinlocks by writing 0x0 to 0x480CA800 (SPINLOCK_LOCK_REG_0) etc.

CCS also fails to show this register contents in a memory view.

As far as I understood the SPINLOCK module is driven by SYSCLK6. I think SYSCLK6 is initialized properly, GEL file initializes PLLs L3, ISS and DSS. Spinlock clock should be enabled properly in the PRCM - register CM_ALWON_SYSCLK6_CLKSTCTRL (0x48181428) contents is 0x00000102.

I think MMU is actually enabled and configured properly either. At least reading spinlock support registers at 0x480CB000 works fine.

Is there any other register to be configured to enable spinlock peripheral register access?

Which registers should I check to verify everything is set up properly?

Thanks and best regards,

Lars

  • Hi Lars,

    Refer to DM814x_PG2.x.gel file (attached) to see how Spinlock (spinbox in gel file) is enabled. See function SpinboxEnable().

    3286.DM814x_PG2.x.gel

    See also the below pointers:

    https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/318649

    BR
    Pavel

  • Hi Pavel,

    thanks for pointing me to the spinlock / spinbox name confusion. Now it works fine. This register is named "CM_ALWON_SPINBOX_CLKCTRL" in the TRM (SPRUGZ8f) as well and unfortunately this name (as "spinbox" at all) is not referenced in the spinlock module description :-(

    BTW - for other readers: The mailbox clock must be enabled too (CM_ALWON_MAILBOX_CLKCTRL) to get the IPC lib fully working.

    Thanks again and best regards,

    Lars