I actually implement DSP-Link on the DSP side of the OMAP-L138. I only need a simple data transfer between the ARM and the DSP unit. Therefore i will use the PROC_read / -write functionality.
For this, i use the DSP-Link part in the packet "OMAP_L138_dsp_setupwin32_1_00_00_08.exe"
First of all, i included the libs "dsplink.lib" and "dsplinkdata.lib" in my project. In the next step, i add via "utils.importFile("dsplink-omapl138gem-base.tci");" in my configuration file the settings for the DSP-Link part.
After that, i try to compile my project, But i get a compilation error:
"js: "./configuration.tcf", line 37: Heaps are enabled, but the segment for DSP/BIOS Objects (MEM.BIOSOBJSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.BIOSOBJSEG to it."
I see that this message is a result from importing the dsplink configuration file. In the dsplink configuration a heap will be created in the DDR section. For my project i do not need dynamic memory heaps. So in the next step i link BIOSOBJSEG and MALLOCSEC via
bios.MEM.BIOSOBJSEG = prog.get("DDR");
bios.MEM.MALLOCSEG = prog.get("DDR");
to the DDR memory. The compilation was now successful, but i got many linker errors like this:
"C:\\CCStudio_v3.3\\MyProjects\\test\\Configurationcfg.cmd", line 339: error:
run placement fails for object ".bss", size 0x3444 (page 0). Available
ranges:
IRAM size: 0x8000 unused: 0x0 max hole: 0x0
Does anybody knows what is wrong?
Here is my actual configuration file:
utils.loadPlatform("ti.platforms.expOMAPL138");
utils.importFile("dsplink-omapl138gem-base.tci");
/* The following DSP/BIOS Features are enabled. */
bios.enableRealTimeAnalysis(prog);
bios.enableRtdx(prog);
bios.enableTskManager(prog);
bios.LOG.create("LOG_Obj");
bios.LOG.instance("LOG_Obj").bufLen = 256;
bios.LOG.instance("LOG_Obj").destroy();
bios.LOG.create("trace");
bios.LOG.instance("trace").bufLen = 256;
bios.LOG.instance("trace").comment = "Trace buffer";
bios.HWI.instance("HWI_INT4").useDispatcher = 1;
bios.HWI.instance("HWI_INT4").fxn = prog.extern("McASPInt");
bios.HWI.instance("HWI_INT4").interruptMask = "all";
bios.HWI.instance("HWI_INT4").interruptSelectNumber = 61;
bios.SWI.instance("PRD_swi").order = 1;
bios.SWI.instance("KNL_swi").order = 2;
bios.SWI.instance("PWRM_loadSwi").order = 3;
bios.TSK.create("FilterTsk");
bios.TSK.instance("FilterTsk").order = 1;
bios.TSK.instance("TSK_idle").order = 2;
bios.TSK.instance("FilterTsk").priority = 15;
bios.TSK.instance("FilterTsk").fxn = prog.extern("FilterFct");
bios.TSK.instance("FilterTsk").comment = "Filter routine";
bios.SEM.create("BufferReady");
bios.SEM.instance("BufferReady").comment = "A semaphore to start the task";
bios.HWI.instance("HWI_INT5").interruptSelectNumber = 89;
bios.HWI.instance("HWI_INT5").useDispatcher = 1;
bios.HWI.instance("HWI_INT5").interruptMask = "all";
bios.HWI.instance("HWI_INT5").fxn = prog.extern("McBSPInt");
bios.MEM.BIOSOBJSEG = prog.get("DDR");
bios.MEM.MALLOCSEG = prog.get("DDR");
// !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!
prog.gen();