This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem to get CCS 3.3 dsp-app running via dsplink on OMAP-L138

Other Parts Discussed in Thread: OMAP-L138

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();
}