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.