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.

EVM vs Simulation Output

Other Parts Discussed in Thread: TMS320C6472, SYSBIOS

Hello,

I am fairly new to development using the BIOS6 toolchain, so please forgive me if I have missed something basic.  I am trying to run a simple test program for a driver I have written.  My test program runs on my evaluation board, but does not run using the simulator.  It appears clock driven events are not firing when using the simulator, but are running when running with the EVM.  I'd like to ensure the simulator is working correctly so that further development can be made without requiring the evaluation board.


My basic setup:

BIOS Version: 6.30.03.46
XDC Tools Version: 3.20.07.86
Compiler Version: C6000 - 7.2.0
Processor: TMS320C6472
Board: EVM6472
Simulator Host Machine OS: Windows XP


I have paired down the code to the bare basics to demonstrate the problem:

//prog.c

#include <xdc/runtime/System.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>


Void PollMessageOutput()
{
   System_printf("PollMessageOutput\n");
}//PollMessageOutput()


Void SendInput()
{
   System_printf("SendInput\n");
}//SendInput()


Void taskInput(UArg arg0, UArg arg1)
{
   while (TRUE)
   {
      System_printf("Listening for message...\n");
      Task_sleep(1);
      System_printf("Got message!\n");
   }
}//taskInput(UArg arg0, UArg arg1)


Void main()
{
   System_printf("starting Test\n");
   BIOS_start();
   return;
}//Int main()


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


//prog.cfg

var System = xdc.useModule('xdc.runtime.System');

Clock = xdc.useModule('ti.sysbios.knl.Clock');
Task = xdc.useModule('ti.sysbios.knl.Task');

var SysStd = xdc.useModule('xdc.runtime.SysStd');
System.SupportProxy = SysStd;

var params = new Task.Params;
params.priority = 15;
var taskOutputTask = Task.create('&taskInput', params);

var clockParams = new Clock.Params();
clockParams.period = 5;
clockParams.startFlag = true;
clockParams.arg = null;
Program.global.clockInst1 = Clock.create("&SendInput", 5, clockParams);

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


The program is compiled using the "xdc all" command; my config.bld looks like this

var Build = xdc.useModule('xdc.bld.BuildEnvironment');
var C64P = xdc.useModule('ti.targets.C64P');
C64P.rootDir = "C:/Program Files/Texas Instruments/ccsv4/tools/compiler/C6000 Code Generation Tools 7.2.0";
C64P.platform = 'ti.platforms.evm6472';
Build.targets = [C64P];

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


I'm starting the simulator using the loadti command (edited for brevity):

loadti -v -t 30000 -c C:\<PATH_HERE>\EVM6472_XDS100USB.ccxml -s "C:\<PATH_HERE>\stdout.txt" -x "C:\<PATH_HERE>\log.xml" -o "C:\<PATH_HERE>\prog.x64P"

This yields an output on the demo board as expected:

..

runBenchmark: Running target
run: ENTRY
go: Requesting target execution
waitUntil: ENTRY timeout: 30000 (ms)
starting Test
Listening for message...
Got message!
Listening for message...
Got message!
Listening for message...
Got message!
Listening for message...
Got message!
Listening for message...
SendInput
Got message!
Listening for message...

...

Listening for message...
Got message!
SEVERE: Timed out after 30000ms
SEVERE: com.ti.debug.engine.scripting.Target.run(): Timed out after 30000ms
>> OVERALL TIMED OUT

...



Now if I try to run using the simulator, this is the output I get:

loadti -v -t 30000 -c C:\<PATH_HERE>\6472sim.ccxml -s "C:\<PATH_HERE>\stdout.txt" -x "C:\<PATH_HERE>\log.xml" -o "C:\<PATH_HERE>\prog.x64P"

...

runBenchmark: Running target
run: ENTRY
go: Requesting target execution
waitUntil: ENTRY timeout: 30000 (ms)
starting Test
Listening for message...
SEVERE: Timed out after 30000ms

...


It appears that the clock event never runs, nor the task unblocks from its sleep in the simulated version, whereas the EVM version runs as expected.

Any ideas would be appreciated.  Thank you for your time.