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.

Setting DSP/memory registers in the 0x4814xxx address region.

I am trying to boot the DSP to run code either in L2 RAN or DDR RAM

I can read and write to the DDR memory region.

I can control the registers in the 0x4818xxxx address range i.e.

CM_ACTIVE_GEM_CLKCTRL  register at address 0x48180420

RM_ACTIVE_RSCTRL register at address 0x48180A10

RM_ACTIVE_RSTST register at address 0x48180A14

I can read registers in the 0x4814xxx address region i.e.

DSPBOOTADDR at 0x48140048

DSP_IDLE_CFG at 0x4814061c

DSPMEM_SLEEP at 0x48140650

but I can't write to them.  Any attempt to write the registers has no effect.

I also can't write to the DSP L2 RAM (0x4080000)

What I do is this:

Write 3 to RM_ACTIVE_RSCTRL to hold DSP in reset

Write 2 to CM_ACTIVE_GEM_CLKCTRL to enable DSP

Load code to either L2 RAM or DDR RAM 

write bootaddress to DSPBOOTADDR

Write 0 to RM_ACTIVE_RSCTRL to remove reset from DSP 

I have tried turning off the MMU but can't because again the register (MMU_CFG) is in the 0x4814xxxx address range 

My h/w platform is a AM389x/C6A816x/DM816x evaluation module

Further information

I "experiment" mainly by using the mem-util utility which maps  areas of /dev/mem to user space to access physical memory.  I also have test programs written to automate the procedure which usesthe same technique.