Hi everyone!
Currently I'm developping a vocoder algorithm that must run at a
certain speed on the DSP 64x+ of the OMAP3530 at the beagle board platform.
After having updated my code and having optimized as much as I could,
I found out that memory could be configured in a 2-way cache associative.
Namely:
I have configured the DSP with this file .cmd:
-c /* 14 ROM model.. */
-m boot.map
--stack_size=4096
/* SPECIFY THE SYSTEM MEMORY MAP */
MEMORY
{
L2_BOOT : origin = 0x107F8000, length = 0x000020 /* 20 bytes for
BOOT CODE */
L2 : origin = 0x107F8020, length = 0x017Fe0 /* nearly 96kB
program or data RAM */
L1P : origin = 0x10E00000, length = 0x004000 /* 16kB program RAM */
L1P_cache : origin = 0x10E04000, length = 0x004000 /* 16kB cache
program RAM */
L1D : origin = 0x10F04000, length = 0x014000 /* 48kB data RAM */
}
/* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */
SECTIONS
{
.etext: {} > L2_BOOT
.text >> L1P | L2 align=32
.cio: {} > L2 align=32
.switch: {} > L2 align=32
GROUP > L1D
{
.comm2arm_mem_sect: align=32
.epdebug : align=32
.shared_mem_sect : align=32
.bss align=32
.const: {} align=32
.far: {} align=32
.cinit: {} align=32
}
.sysmem > L1D align=32
GROUP > L1D (HIGH)
{
.stack_protection_sect
.stack
}
}
//
==================================================================================
As you can see, I reserve half of L1P as cache memory.
Once done, you must configure your ARM driver and properly
configure the space you want to use for cache.
The L1P memory at IVA2.2 subsystem can be set for working as 4/28 8/24
16/16 or full cache in 2-way associative.
So... setting correctly the XMC registers you could configure your L1P
DSP memory in a 16K/16K way. This is 16K 2-way associative cache and 16K memory
mapped .
Well. Once done all this, I compile my code and link it.When
executing... it appears some kind of error which seems to be a memory
overflow, and it doesn't make sense!
The ERROR 1008 appears!!
#Error 1008 : esternal abort on non-linefetch
Does anyone deal with cache configuration before?
Please report me the answers, and if there's something you don't
understand I'll give you more details.
Thanks in advance,
Ignacio.