I am trying to allocate DSP L2SRAM in DSP1 firmware on a DRA72x processor. ARM is running on Linux and DSP1 is on TI RTOS.
For this I updated the platform package using CCS6 RTSC tools and allocated entire L2 as SRAM with nothing for L2 Cache.
My resulting linker.cmd has these sections in it.
MEMORY
{
L2SRAM (RWX) : org = 0x800000, len = 0x47fff
EXT_CODE (RWX) : org = 0x95000000, len = 0x400000
------
------
}
SECTIONS
{
.text: load >> EXT_CODE
.ti.decompress: load > EXT_CODE
.stack: load > EXT_HEAP
GROUP: load > EXT_DATA
{
.bss:
.neardata:
.rodata:
}
.cinit: load > EXT_DATA
.pinit: load >> EXT_DATA
.init_array: load > EXT_DATA
.const: load >> EXT_DATA
.data: load >> EXT_DATA
.fardata: load >> EXT_DATA
.switch: load >> EXT_DATA
.sysmem: load > EXT_DATA
.far: load >> EXT_DATA
.args: load > EXT_DATA align = 0x4, fill = 0 {_argsize = 0x0; }
.cio: load >> EXT_DATA
.ti.handler_table: load > EXT_DATA
.c6xabi.exidx: load > EXT_DATA
.c6xabi.extab: load >> EXT_DATA
.tracebuf: load > TRACE_BUF
.errorbuf: load > EXC_DATA
.fastiramdata: load > L2SRAM
.vecs: load > EXT_CODE
.resource_table: load > 0x95000000, type = NOINIT
xdc.meta: load > EXT_DATA, type = COPY
}
DSP firmware build succeed and I can see stuff in .map file matching what I allocated, but remoteproc is failing when it tries to load DSP1 firmware and as a result DSP is in offline state.
The following is the log I see when remoteproc tries to load DSP firmware.
[ 4.096124] remoteproc2: powering up 40800000.dsp
[ 4.096155] remoteproc2: Booting fw image dra7-dsp1-fw.xe66, size 6703864
[ 4.270851] remoteproc2: bad phdr da 0x800000 mem 0x4000
[ 4.270879] remoteproc2: Failed to load program segments: -22
[ 4.764514] remoteproc2: rproc_boot() failed -22
[ 4.764595] remoteproc2: registered virtio3 (type 7)
It looks to me, like for some reason, L2SRAM is not being set properly or something.
Any ideas what might be going wrong here?
Thanks,
Girish