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.

DSP/BIOS Config Tool File Save Error

Guru 15580 points

I am attempting to create a heap in C55xx SRAM using the DSP/BIOS Config tool. However, when I create the heap in SRAM, then change the value in the Memory Section manager for "Set section for malloc()/free() to SRAM, then attempt to save the file, I get the following error;

The only way to exit the Config tool is to cancel without saving the file. After doing this, when I then try to re-open the file, I get the following:

What am I doing wrong?

  • MikeH,

    I'm not sure that you're doing anything wrong ... to me this seems like a bug of sorts in CCS or the graphical configuration tool.

    Can you try this?

    1. close your configuration (*.tcf file) in the graphical viewer, then open the file in your favorite text editor

    2. make the change you trying above in the code:

    bios.MEM.MALLOCSEG = prog.get("SRAM");

    3. save and exit the .tcf file

    4. build your application.  The change will have taken effect.  Note that you can also reopen the configuration using the GUI after step 3 to verify the change graphically.

    Steve

  • MikeH,
    if Steve's recommendation doesn't help, you are most likely hitting this bug. What's the version of XDCtools and DSP/BIOS you are using? You'll probably need to update to at least XDCtools 3.20.08 to get the fix.

  • Sasha,

    I am using  XDCTools 3.23.3.53 com.ti.xdctools.base.win32.feature.group Texas Instruments and have the problems stated earlier. I have tried to manually edit the file using text editor to include the following:

    utils.loadPlatform("ti.platforms.ezdsp5505");

    /* The following DSP/BIOS Features are enabled. */
    bios.enableRealTimeAnalysis(prog);
    bios.enableRtdx(prog);
    bios.enableTskManager(prog);

    bios.MEM.create("MMR");
    bios.MEM.instance("MMR").comment = "MMRs";
    bios.MEM.instance("MMR").base = 0x000000;
    bios.MEM.instance("MMR").len = 0x00c0;
    bios.MEM.instance("VECT").base = 0x000100;
    bios.MEM.instance("VECT").len = 0x000200;
    bios.MEM.instance("DARAM").base = 0x000300;
    bios.MEM.instance("DARAM").len = 0xfd00;
    bios.MEM.instance("SARAM").base = 0x0010000;
    bios.MEM.instance("SARAM").len = 0x40000;


    // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

    prog.gen();

    ...but I receive the following error when trying to re-open the .tcf file with the graphical config tool.

    js: Can't modify read-only field


    Correct any script errors in C:/Users/Mike/TI Workspaces/.metadata/.plugins/org.eclipse.rtsc.xdctools.buildDefinitions.DSPBIOS/.gconf/5505_eZdsp_demo/5505_eZdsp_demo/5505_eZdsp_demo.tcf using the Configuration Tool or a text editor, if necessary.


    TConf initialization arguments:
    -e environment['config.importPath']='C:/Users/Mike/TI Workspaces/5505_eZdsp_demo;C:/ti/bios_5_41_13_42/packages' -e environment['config.scriptName']='5505_eZdsp_demo.tcf'

    What am I doing wrong?

  • Mike,
    the first problem is that the error message is not displaying the line number. That's a bug in Tconf, and I'll look into it. The cause of the error is the line
    bios.MEM.instance("VECT").len = 0x000200;
    The size of the vector table on 5505 is constant and can't be changed. If you comment out that line, you should be able to open the file in the graphical config. If you are using XDCtools 3.23 then the initial error is not caused by the bug I linked in my previous post. If you succeed at opening the script in the graphical config, try saving again. I am still trying to replicate the initial error. I'll let you know if I find something.

  • Hi,

    I am also getting the same error as above I posted my generated code in my below post

    http://e2e.ti.com/support/embedded/tirtos/f/355/p/114192/1213681.aspx#1213681

    Kindly help

    The error is as follows

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    js: Can't modify read-only field

    Correct any script errors in C:/Users/user/642/.metadata/.plugins/org.eclipse.rtsc.xdctools.buildDefinitions.DSPBIOS/.gconf/video/video/video.tcf
    using the Configuration Tool or a text editor, if necessary.


    TConf initialization arguments:
    -e environment['config.importPath']='C:/Users/user/642/video;C:/ti/bios_5_42_01_09/packages' -e environment['config.scriptName']='video.tcf'

  • Dinesh,
    the order of the statements in the script is invalid. Usually, the visual config tool would prevent the generation of such a script but various conversion tools sometimes generate invalid scripts, in case you used any of them. Anyway, to fix your script you have to create heaps at the very beginning of the script instead of later. So, when you move that code to the beginning, your script will start with the following code:

    utils.loadPlatform("ti.platforms.evmDM642");
    bios.enableRealTimeAnalysis(prog);
    bios.enableRtdx(prog);
    bios.enableTskManager(prog);
    bios.MEM.NOMEMORYHEAPS = 0;
    bios.MEM.instance("IRAM").base = 0x00000400;
    bios.MEM.instance("IRAM").len = 0x0002fc00;
    bios.MEM.instance("IRAM").createHeap = 1;
    bios.MEM.instance("IRAM").heapSize = 0x00000000;
    bios.MEM.instance("IRAM").enableHeapLabel = 1;
    bios.MEM.instance("IRAM").heapLabel = prog.extern("intHeap");

    bios.MEM.instance("SDRAM").createHeap = 1;
    bios.MEM.instance("SDRAM").heapSize = 0x00000000;
    bios.MEM.instance("SDRAM").enableHeapLabel = 1;
    bios.MEM.instance("SDRAM").heapLabel = prog.extern("extHeap");

    Also, just before you try to change varios LOAD* segments in MEM, you need to enable these changes. So, right before the line
    bios.MEM.LOADBIOSSEG = prog.get("SDRAM");
    add the line
    bios.MEM.ENABLELOADADDR = 1;

    That should be enough to make your script valid. The error messages are not very helpful, but because DSP/BIOS is not actively developed I don't think these messages will get any better. Most of the development is done for TI-RTOS (and SYS/BIOS is a part of that product).

     

  • Thanks Sasha,

    But now I am getting new errors as follows


    "videocfg.s62", ERROR! at line 953: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,_sumformat,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 953: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,_sumformat,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 953: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,%g inst,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 953: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,%g inst,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 953: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 953: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 953: [E0003] Invalid constant specification
    .word :statReg:

    "videocfg.s62", REMARK at line 953: [R0001] After symbol substitution the line became:
    .word 00H,01H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,_sumformat,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,_sumformat,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,%g inst,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,%g inst,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 986: [E0003] Invalid constant specification
    .word :statReg:

    "videocfg.s62", REMARK at line 986: [R0001] After symbol substitution the line became:
    .word 00H,02H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,_sumformat,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,_sumformat,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,%g inst,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,%g inst,_avgformat,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0200] Bad term in expression
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0000] Commas must separate directive elements
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1019: [E0003] Invalid constant specification
    .word :statReg:

    "videocfg.s62", REMARK at line 1019: [R0001] After symbol substitution the line became:
    .word 00H,03H,02H,%g inst,%g inst,%.2f inst,_filtmaxmult,_filtsummult,_unittype

    "videocfg.s62", ERROR! at line 1058: [ ***** USER ERROR ***** - ] LOG_Obj: argument 'circular,_iType,_iFormat' is not a member of {circular,fixed}
    .emsg ":name:: argument ':elem:' is not a member of {:values:}"

    "videocfg.s62", REMARK at line 1058: [R0001] After symbol substitution the line became:
    .emsg "LOG_Obj: argument 'circular,_iType,_iFormat' is not a member of {circular,fixed}"

    "videocfg.s62", ERROR! at line 1058: [ ***** USER ERROR ***** - ] LOG_Obj mode error.
    .emsg "LOG_Obj mode error."

    "videocfg.s62", ERROR! at line 1070: [ ***** USER ERROR ***** - ] LOG_Obj: argument 'circular,_iType,_iFormat' is not a member of {circular,fixed}
    .emsg ":name:: argument ':elem:' is not a member of {:values:}"

    "videocfg.s62", REMARK at line 1070: [R0001] After symbol substitution the line became:
    .emsg "LOG_Obj: argument 'circular,_iType,_iFormat' is not a member of {circular,fixed}"

    "videocfg.s62", ERROR! at line 1070: [ ***** USER ERROR ***** - ] LOG_Obj mode error.
    .emsg "LOG_Obj mode error."

    "videocfg.s62", ERROR! at line 1088: [ ***** USER ERROR ***** - ] STS_Obj was passed too many parameters.
    .emsg ":name: was passed too many parameters."

    "videocfg.s62", REMARK at line 1088: [R0001] After symbol substitution the line became:
    .emsg "STS_Obj was passed too many parameters."

    "videocfg.s62", ERROR! at line 1088: [ ***** USER ERROR ***** - ] STS_Obj parameter error.
    .emsg "STS_Obj parameter error."

    39 Assembly Errors, 4 Assembly Warnings

    Errors in Source - Assembler Aborted

    >> Compilation failure
    gmake: *** [videocfg.obj] Error 1

    ---------------------------------------------------------------------------------------------------------

    my bios file content is as follows

    utils.loadPlatform("ti.platforms.evmDM642");

    /* The following DSP/BIOS Features are enabled. */
    bios.enableRealTimeAnalysis(prog);
    bios.enableRtdx(prog);
    bios.enableTskManager(prog);

    bios.MEM.NOMEMORYHEAPS = 0;
    bios.MEM.instance("IRAM").createHeap = 1;
    bios.MEM.instance("IRAM").enableHeapLabel = 1;

    bios.MEM.instance("SDRAM").createHeap = 1;
    bios.MEM.instance("SDRAM").enableHeapLabel = 1;

    bios.MEM.BIOSOBJSEG = prog.get("SDRAM");
    bios.MEM.MALLOCSEG = prog.get("SDRAM");
    bios.GBL.CLKOUT = 720.0000;
    bios.GBL.SPECIFYRTSLIB = 1;
    bios.GBL.CALLUSERINITFXN = 1;
    bios.GBL.USERINITFXN = prog.extern("EVMDM642_init");
    bios.GBL.RTSLIB = "cslDM642.lib";
    bios.MEM.instance("IRAM").base = 0x00000400;
    bios.MEM.instance("IRAM").len = 0x0002fc00;
    bios.MEM.instance("IRAM").heapLabel = prog.extern("intHeap");
    bios.MEM.instance("IRAM").heapSize = 0x00000000;
    bios.MEM.instance("SDRAM").base = 0x80000000;
    bios.MEM.instance("SDRAM").len = 0x02000000;

    bios.MEM.instance("SDRAM").heapSize = 0x00000000;
    bios.MEM.instance("SDRAM").heapLabel = prog.extern("extHeap");

    bios.LOG.create("trace");
    bios.LOG.instance("trace").bufLen = 1024;
    bios.LOG.instance("LOG_system").bufLen = 1024;
    bios.TSK.create("tskInput");
    bios.TSK.instance("tskInput").order = 1;
    bios.TSK.instance("tskInput").comment = "video input";
    bios.TSK.instance("tskInput").fxn = prog.extern("tskVideoInput");
    bios.TSK.create("tskOutput");
    bios.TSK.instance("tskOutput").order = 2;
    bios.TSK.instance("tskOutput").fxn = prog.extern("tskVideoOutput");
    bios.TSK.instance("tskOutput").comment = "Video Output";
    bios.TSK.create("tskVideoProcess");
    bios.TSK.instance("tskVideoProcess").order = 3;
    bios.TSK.instance("tskVideoProcess").comment = "video processing";
    bios.TSK.instance("tskVideoProcess").fxn = prog.extern("tskProcess");
    bios.MEM.ARGSSEG = prog.get("SDRAM");
    bios.MEM.STACKSEG = prog.get("SDRAM");
    bios.MEM.GBLINITSEG = prog.get("SDRAM");
    bios.MEM.TRCDATASEG = prog.get("SDRAM");
    bios.MEM.SYSDATASEG = prog.get("SDRAM");
    bios.MEM.OBJSEG = prog.get("SDRAM");
    bios.MEM.BIOSSEG = prog.get("SDRAM");
    bios.MEM.SYSINITSEG = prog.get("SDRAM");
    bios.MEM.HWISEG = prog.get("SDRAM");
    bios.MEM.HWIVECSEG = prog.get("SDRAM");
    bios.MEM.RTDXTEXTSEG = prog.get("SDRAM");
    bios.MEM.TEXTSEG = prog.get("SDRAM");
    bios.MEM.SWITCHSEG = prog.get("SDRAM");
    bios.MEM.BSSSEG = prog.get("SDRAM");
    bios.MEM.FARSEG = prog.get("SDRAM");
    bios.MEM.CINITSEG = prog.get("SDRAM");
    bios.MEM.PINITSEG = prog.get("SDRAM");
    bios.MEM.CONSTSEG = prog.get("SDRAM");
    bios.MEM.DATASEG = prog.get("SDRAM");
    bios.MEM.CIOSEG = prog.get("SDRAM");
    bios.BUF.OBJMEMSEG = prog.get("SDRAM");
    bios.POOL.ENABLEPOOL = 0;
    bios.SYS.TRACESEG = prog.get("SDRAM");
    bios.LOG.OBJMEMSEG = prog.get("SDRAM");
    bios.LOG.instance("LOG_system").bufSeg = prog.get("SDRAM");
    bios.STS.OBJMEMSEG = prog.get("SDRAM");
    bios.TSK.instance("TSK_idle").stackMemSeg = prog.get("SDRAM");
    bios.TSK.instance("tskInput").stackSize = 16384;
    bios.TSK.instance("tskInput").stackMemSeg = prog.get("SDRAM");
    bios.TSK.instance("tskInput").priority = 3;
    bios.TSK.instance("tskOutput").stackSize = 16384;
    bios.TSK.instance("tskOutput").stackMemSeg = prog.get("SDRAM");
    bios.TSK.instance("tskOutput").priority = 3;
    bios.TSK.instance("tskVideoProcess").stackSize = 32000;
    bios.TSK.instance("tskVideoProcess").stackMemSeg = prog.get("SDRAM");
    bios.TSK.instance("tskVideoProcess").priority = 3;
    bios.SEM.OBJMEMSEG = prog.get("SDRAM");
    bios.MBX.OBJMEMSEG = prog.get("SDRAM");
    bios.QUE.OBJMEMSEG = prog.get("SDRAM");
    bios.LCK.OBJMEMSEG = prog.get("SDRAM");
    bios.DIO.OBJMEMSEG = prog.get("SDRAM");
    bios.DHL.OBJMEMSEG = prog.get("SDRAM");
    bios.RTDX.RTDXDATASEG = prog.get("SDRAM");
    bios.HST.OBJMEMSEG = prog.get("SDRAM");
    bios.HST.instance("RTA_fromHost").bufSeg = prog.get("SDRAM");
    bios.HST.instance("RTA_toHost").bufSeg = prog.get("SDRAM");
    bios.PIP.OBJMEMSEG = prog.get("SDRAM");
    bios.SIO.OBJMEMSEG = prog.get("SDRAM");
    bios.MEM.ENABLELOADADDR = 0;
    // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

    prog.gen();

  • These errors usually happen when there is a mismatch between the compile options you are passing on the command line and the platform (which means the device) you are using in the configuration.
    Can you post the complete command line that's preceding the error message?

  • I am experiencing a similar problem and would appreciate help.

    I imported a CCS V3.1 project into CCS V5.2.

    I converted CDB file to TCF file (using cdb2tcf.exe)

    I double click TCF file and enter XDC Tools path and TCI path and get errors.

    See attached.

    Please advise.  Thanks.1682.sdtestbsp.zip