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.

SYS/BIOS doesn't build when I change the

Other Parts Discussed in Thread: OMAPL138, SYSBIOS

I'm using BIOS ver. 6.21.0.13, CCS 4.2 trying to build bios for the C6748 core of an OMAPL138.

In my bios.cfg file under the ti.sysbios.knl.Clock module, I'm trying to change the timerId parameter from -1 to 2 or 3. If I set it to -1, 0, or 1 it builds fine, but sys/bios seems to keep using Timer 0. If I try changing it to 2 or 3 as per this e2e thread: http://e2e.ti.com/support/embedded/bios/f/355/t/128799.aspx,  the sys/bios build fails and here is the output I get in the CCS console:

js: "C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/family/c64p/Settings.xs", line 201: TypeError: Cannot read property "deviceName" from null (C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/family/c64p/Settings.xs#201)

"C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/family/c64p/Settings.xs", line 218

"C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/family/Settings.xs", line 82

"C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/hal/Hwi.xs", line 35

"C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/gates/GateHwi.xs", line 20

"C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/xdcruntime/Settings.xs", line 78

"C:/Program Files/Texas Instruments/bios_6_21_00_13/packages/ti/sysbios/BIOS.xs", line 62

gmake.exe: *** [package/cfg/DSPBios_p674.c] Error 1

js: "C:/Program Files/Texas Instruments/xdctools_3_16_02_32/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.

C:\Program Files\Texas Instruments\ccsv4\utils\gmake\gmake: *** [configPkg/linker.cmd] Error 1

C:\Program Files\Texas Instruments\ccsv4\utils\gmake\gmake: Target `all' not remade because of errors.

Bottom line, I'd like to know how to get sys/bios clock module to use Timer 3 on the OMAP L138?

Thanks in advance

  • Hi Nick,

    I'm trying to replicate the problem you are seeing.

    In the CCS project properties, what target and platform settings are you using?

    Target: ti.targets.?

    Platform: ti.platforms.?

    - Tom

  • Hi Tom,

    I'm using:

     ti.targets.C674

    and

    ti.platforms.evmOMAPL138

  • Hi Nick,

    could you send me your .cfg file.

    I can see an error with using timerId = 2, but I'm not getting the js: errors that you are seeing.

    -Tom

  • For some reason, my last posting seemed to get screwed up when I tried to attach a text file to it. So I'll try again with just pasting the .cfg file text in here. Anyway, I believe the .js errors are some other CCS 4.2 issue and unrelated to my real issue, so I'm willing to ignore those at this point. I'm just happy that you can reproduce the timerID = 2 problem I'm seeing. Anyway, the .cfg file is here:

    ================================================================================================================

    /*
     * Copyright (c) 2009
     * Texas Instruments
     *
     *  All rights reserved.  Property of Texas Instruments
     *  Restricted rights to use, duplicate or disclose this code are
     *  granted through contract.
     *
     * */
    /*
     *  ======== fullBios.cfg ========
     *
     */
    /* ======== Guidelines ======== */
    /* Every module header file included in the source file should have a corresponding xdc.useModule in the cfg file. */

    /* To refer to a instance in the C file, add instance to Program.global and #include <xdc/cfg/program.h> */

    /* All useModules are at the top */
    var System = xdc.useModule('xdc.runtime.System');
    var SysMin = xdc.useModule('xdc.runtime.SysMin');
    var Memory = xdc.useModule('xdc.runtime.Memory');
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    var Swi = xdc.useModule('ti.sysbios.knl.Swi');
    var Clock = xdc.useModule('ti.sysbios.knl.Clock');
    var Task = xdc.useModule('ti.sysbios.knl.Task');
    var Semaphore = xdc.useModule('ti.sysbios.ipc.Semaphore');
    var Event = xdc.useModule('ti.sysbios.ipc.Event');
    var Queue = xdc.useModule('ti.sysbios.misc.Queue');
    var Mailbox = xdc.useModule('ti.sysbios.ipc.Mailbox');

    /* ======== Setting Program paramters ======== */
    /* Program object is available in a cfg file. */
    /* Set system stack size */
    Program.stack = 0x1000;
    /* Set heap size used by malloc() */
    Program.heap = 0x1000;
    /* Set argsSize */
    Program.argSize = 0x8;

    /* ======== Set default System module ======== */
    System.SupportProxy = SysMin;

    /* ======== Heaps and Memory ======== */
    /* Create a heap using ti.bios.HeapBuf. */
    var heapBufParams = new HeapBuf.Params;
    heapBufParams.blockSize = 128;
    heapBufParams.numBlocks = 100;
    heapBufParams.align = 8;
    Program.global.heap0 = HeapBuf.create(heapBufParams);
    /* Use heap0 as the default heap */
    Memory.defaultHeapInstance = Program.global.heap0;


    /* ======== Using the Idle Module ======== */
    /* Add idle function to table where idl0Fxn is name of function in C file */
    Idle.addFunc('&idl0Fxn');

    /* ======== Using the Swi Module ======== */
    /* Set number of swi priorities */
    Swi.numPriorities = 16;
    /* Create a Swi Instance and manipulate Instance parameters. */
    var swiParams = new Swi.Params;
    swiParams.instance.name = "Redacted1Swi";
    swiParams.arg0 = 0;
    swiParams.arg1 = 1;
    swiParams.priority = 7;
    Program.global.Redacted1Swi = Swi.create("&SWI_Redacted1", swiParams);

    /* ======== Using the Clock Module ======== */
    /* Set clock swi priority. 0-15 available because Swi.numPriorities above */
    Clock.swiPriority = 15;
    Clock.tickPeriod = 5000;

    /* ======== Using the Task Module ======== */
    /* Set number of Task priority levels */
    Task.numPriorities = 16;
    Task.idleTaskStackSize = 4096;

    /* Create a Task Instance and use default Instance parameters */
    /*Program.global.bkgrndTask = Task.create("&backgroundTask");*/


    /* ======== Using the Semaphore Module ======== */
    /* Whether semaphore will support events */
    Semaphore.supportsEvents = true;
    /* Create a Semaphore Instance with count of 4 which does not use events */
    var semParams1 = new Semaphore.Params;
    semParams1.mode = Semaphore.Mode_BINARY;
    Program.global.rrSem = Semaphore.create(0, semParams1);

     

    /* ======== Using the Event Module ======== */
    /* Create an event */
    var eventParams = new Event.Params;
    Program.global.event0 = Event.create(eventParams);
    /* Create a Semaphore Instance which uses event0 */
    var semParams2 = new Semaphore.Params;
    semParams2.mode = Semaphore.Mode_BINARY;
    semParams2.event = null;
    semParams2.eventId = Event.Id_00;
    Program.global.bkgrndSem = Semaphore.create(0, semParams2);

     


    var ti_sysbios_hal_Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
    var instti_sysbios_hal_Hwi0Params0 = new ti_sysbios_hal_Hwi.Params();
    instti_sysbios_hal_Hwi0Params0.eventId = 5;
    var instti_sysbios_hal_Hwi0 = ti_sysbios_hal_Hwi.create(4, "&HWI_Redacted2ISR", instti_sysbios_hal_Hwi0Params0);
    var instSemaphore2Params0 = new Semaphore.Params();
    instSemaphore2Params0.instance.name = "Redacted3Sem";
    instSemaphore2Params0.mode = Semaphore.Mode_BINARY;
    Program.global.rrReportSem = Semaphore.create(0, instSemaphore2Params0);

    var instTask0Params0 = new Task.Params();
    instTask0Params0.instance.name = "Redacted4Task";
    instTask0Params0.priority = 15;
    instTask0Params0.stackSize = 16384;
    Program.global.rrTask = Task.create("&Redacted5", instTask0Params0);
    var instTask1Params0 = new Task.Params();
    instTask1Params0.instance.name = "Redacted6Task";
    instTask1Params0.priority = 15;
    instTask1Params0.stackSize = 4096;
    Program.global.rrReportTask = Task.create("&Redacted7", instTask1Params0);
    var instTask2Params0 = new Task.Params();
    instTask2Params0.stackSize = 4096;
    instTask2Params0.instance.name = "bkgrndTask";
    Program.global.bkgrndTask = Task.create("&backgroundTask", instTask2Params0);


    var instSwi1Params0 = new Swi.Params();
    instSwi1Params0.priority = 5;
    instSwi1Params0.instance.name = "errorSwi";
    Program.global.errorSwi = Swi.create("&seriousErrorHandler", instSwi1Params0);
    Clock.timerId = 2;

     

    Program.cpu = null;

     

    ================================================================================================================

    Thanks

  • Hi Nick,

    found the problem with Clock.timerId = 2;

    Turns out, your version of BIOS doesn't have Timer 2 and Timer 3 defined for the OMAP L138.

    This has been fixed in the meantime (SDOCM00067861) and I'd suggest in getting the latest version of BIOS, XDCtools, and IPC.

    These can be found here: Product Download Page