Hello,
i have trouble on an OMAP-L138 (linux,dsplink 1_65_00_01, bios 5_33_06, ccs v3.3) system.
i have an application which should be loaded into the dsp via a Linux-GPP-App using PROC_attach
and PROC_start.
This application is compiled on CCS 3.3 .
I have a lot of trouble to get this done.
Actually there are some lines in my tcf-file which preventing the code to run on the dsp,if it is loaded through a
blackhawk emulator.
(Later on this programm should be loaded vio PROC_start)
The lines are:
utils.importFile("dsplink-iom.tci") ;
utils.importFile("dsplink-dio.tci") ;
utils.importFile("dsplink-zcpydata-swi.tci");
This lines cause the following:
* @file dsplink-iom.tci :
/* ============================================================================
* UDEV : DSP/BIOS LINK
* ============================================================================
*/
var dsplink = prog.module("UDEV").create("dsplink");
dsplink.initFxn = prog.decl("ZCPYDATA_init");
dsplink.fxnTable = prog.decl("ZCPYDATA_FXNS");
dsplink.fxnTableType = "IOM_Fxns";
dsplink.comment = "DSP/BIOS LINK - IOM Driver";
* @file dsplink-dio.tci :
/* ============================================================================
* DIO : DSP/BIOS LINK DIO Driver object
* ============================================================================
*/
var dio_dsplink = prog.module("DIO").create("dio_dsplink");
dio_dsplink.comment = "DSP/BIOS LINK - DIO Driver";
dio_dsplink.deviceName = prog.get("dsplink");
* @file dsplink-zcpydata-swi.tci
/* ============================================================================
* SWI : ZCPYLINK_SWI_OBJ
* ============================================================================
*/
var ZCPYLINK_SWI_OBJ = prog.module("SWI").create("ZCPYDATA_SWI_OBJ");
ZCPYLINK_SWI_OBJ.comment = "This swi handles the data transfer in DSPLINK";
ZCPYLINK_SWI_OBJ.fxn = prog.decl("ZCPYDATA_SWI");
ZCPYLINK_SWI_OBJ.priority = 14;
ZCPYLINK_SWI_OBJ.arg0 = prog.decl("ZCPYDATA_devObj");
Any ideas whats wrong with this configuraton?
This configuration runs fine on a smaller dsplink-example compiled on linux!
Thank you very much,
regards, Bastian.
P.S.
The complete tcf file: (the simple dsplink-example and a dsp- audio example combined)
// this is dsplink-omapl138gem-base.tci :
// ============================================================================
// Load assert support
// ============================================================================
//
utils.importFile("assert.tci");
// ============================================================================
// Load base TCI file.
// ============================================================================
//
utils.loadPlatform("ti.platforms.evmOMAPL138") ;
/* The following DSP/BIOS Features are enabled. */
bios.enableRealTimeAnalysis(prog);
//bios.disableRealTimeAnalysis(prog);
bios.enableMemoryHeaps(prog);
bios.enableRtdx(prog);
//bios.disableRtdx(prog);
bios.enableTskManager(prog);
// ============================================================================
// Enable common BIOS features used by all examples
// ============================================================================
//
////bios.disableRealTimeAnalysis(prog);
//bios.enableMemoryHeaps(prog);
////bios.disableRtdx(prog);
//bios.enableTskManager(prog);
//bios.enableRealTimeAnalysis(prog);
//bios.enableRtdx(prog);
// ============================================================================
// GBL
// ============================================================================
//
prog.module("GBL").ENABLEALLTRC = false ;
prog.module("GBL").PROCID = 0;
//parseInt (arguments [0]) ;//
prog.module("GBL").C64PLUSCONFIGURE = true ;
prog.module("GBL").C64PLUSL2CFG = "32k" ;
prog.module("GBL").C64PLUSL1DCFG = "32k" ;
prog.module("GBL").C64PLUSMAR192to223 = 0x00000008 ;
// ============================================================================
// MEM
// ============================================================================
//
prog.module("MEM").STACKSIZE = 0x1000 ;
// ============================================================================
// MEM : RESET_VECTOR
// ============================================================================
//
var RESET_VECTOR = prog.module("MEM").create("RESET_VECTOR");
RESET_VECTOR.base = 0xC3E00000 ;
RESET_VECTOR.len = 0x00000080;
RESET_VECTOR.space = "code/data";
RESET_VECTOR.createHeap = false;
RESET_VECTOR.comment = "RESET_VECTOR";
// ============================================================================
// MEM : DDR
// ============================================================================
//
var DDR = prog.module("MEM").instance("DDR");
DDR.base = RESET_VECTOR.base + RESET_VECTOR.len ;
DDR.len = 0xFFF80;
DDR.space = "code/data";
DDR.createHeap = true;
DDR.heapSize = 0x10000;
DDR.comment = "DDR";
// ============================================================================
// MEM : DSPLINKMEM
// ============================================================================
//
var DSPLINKMEM = prog.module("MEM").create("DSPLINKMEM");
DSPLINKMEM.base = DDR.base + DDR.len;
DSPLINKMEM.len = 0x30000;
DSPLINKMEM.createHeap = false;
DSPLINKMEM.comment = "DSPLINKMEM";
// ============================================================================
// MEM : POOLMEM
// ============================================================================
//
var POOLMEM = prog.module("MEM").create("POOLMEM");
POOLMEM.base = DSPLINKMEM.base + DSPLINKMEM.len ;
POOLMEM.len = 0xD0000 ;
POOLMEM.createHeap = false;
POOLMEM.comment = "POOLMEM";
// ============================================================================
// MEM : IRAM
// ============================================================================
//
var IRAM = prog.module("MEM").instance("IRAM");
//IRAM.base = POOLMEM.base + POOLMEM.len ; //0x11800000 ;
IRAM.base = 0x11800000 ;
//IRAM.len = 0x40000 ;
//IRAM.base = 0x11800000 ;
IRAM.len = 0x8000 ;
// Ende dsplink-omapl138gem-base.tci
// ============================================================================
// Load generic DSP/BIOS Link configuration
// ============================================================================
//
//siehe oben utils.importFile("dsplink-omapl138gem-base.tci");
utils.importFile("dsplink-iom.tci") ;
utils.importFile("dsplink-dio.tci") ;
utils.importFile("dsplink-zcpydata-swi.tci");
//utils.importFile("loop.tci");
// ============================================================================
// Set all code and data sections to use DDR
// ============================================================================
//
bios.setMemCodeSections(prog, DDR);
bios.setMemDataNoHeapSections(prog, DDR);
bios.setMemDataHeapSections(prog, DDR);
// ============================================================================
// MEM : Global
// ============================================================================
//
prog.module("MEM").BIOSOBJSEG = DDR;
prog.module("MEM").MALLOCSEG = DDR;
// ============================================================================
// TSK : Global
// ============================================================================
//
prog.module("TSK").STACKSEG = DDR;
bios.MEM.ARGSSEG = prog.get("DDR");
bios.MEM.STACKSEG = prog.get("DDR");
bios.MEM.GBLINITSEG = prog.get("DDR");
bios.MEM.TRCDATASEG = prog.get("DDR");
bios.MEM.SYSDATASEG = prog.get("DDR");
bios.MEM.OBJSEG = prog.get("DDR");
bios.MEM.BIOSSEG = prog.get("DDR");
bios.MEM.SYSINITSEG = prog.get("DDR");
bios.MEM.HWISEG = prog.get("DDR");
bios.MEM.HWIVECSEG = prog.get("DDR");
bios.MEM.RTDXTEXTSEG = prog.get("DDR");
bios.MEM.TEXTSEG = prog.get("DDR");
bios.MEM.SWITCHSEG = prog.get("DDR");
bios.MEM.BSSSEG = prog.get("DDR");
bios.MEM.FARSEG = prog.get("DDR");
bios.MEM.CINITSEG = prog.get("DDR");
bios.MEM.PINITSEG = prog.get("DDR");
bios.MEM.CONSTSEG = prog.get("DDR");
bios.MEM.DATASEG = prog.get("DDR");
bios.MEM.CIOSEG = prog.get("DDR");
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 routines for the Aquaphon";
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.GBL.C64PLUSMAR192to223 = 0xffffffff;
//bios.GBL.C64PLUSL2CFG = "0k";
// !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!
/* ============================================================================
* Generate cdb file...
* ============================================================================
*/
if (config.hasReportedError == false) {
prog.gen();
}