Forums

C55xx simulator

Started by Torgeir Jakobsen December 13, 2000
Hi

I am working on a project where we are using the TMS320C5510 DSP.
I have started to simulate the code using the C55xx simulator.
When I add a variable to the watch window to see if it is changed as
expected it does not change the value at once after an instruction
is executed.

example:

unsigned int uiTest;
float fTest;

uiTest = 10;
fTest = 10;

The value of uiTest does not change before the second line is
executed. I have also other situations where I have to step through
severeal C-code instructions before the variable in the watch window
is correct. It seems like my code is correct, but I do not know why
this is happening. This did never happen when using the C5000
simulator.

Best regards
Torgeir Jakobsen



At 09:33 AM 12/13/00, you wrote:
>Hi
>
>I am working on a project where we are using the TMS320C5510 DSP.
>I have started to simulate the code using the C55xx simulator.
>When I add a variable to the watch window to see if it is changed as
>expected it does not change the value at once after an instruction
>is executed.
>
>example:
>
>unsigned int uiTest;
>float fTest;
>
>uiTest = 10;
>fTest = 10;
>
>The value of uiTest does not change before the second line is
>executed. I have also other situations where I have to step through
>severeal C-code instructions before the variable in the watch window
>is correct. It seems like my code is correct, but I do not know why
>this is happening. This did never happen when using the C5000
>simulator.
>
>Best regards
>Torgeir Jakobsen

Torgeir,

I am not currently using the C55 simulator, so I can't be sure, but I
believe you are seeing the effect of the pipeline in the chip. This should
be simulated if you are to believe the results compared to the real chip.

But there is an issue with single stepping or breakpoints. In the real
chip, if it is like the C50 that I have used, when the chip is stopped by
the emulator, the pipeline is flushed. So the simulator could work either
way. When you single step it, it could either work like the chip and flush
the pipeline to complete all calculations, or it could hold off the
completion of the instructions in the pipeline to allow you to inspect the
interaction and timing of the instructions so assist you in debugging.

You should be able to dig this out of the documentation.

BTW, I have been told that the C5510 won't be in production until late next
year. Are you planning on building prototypes using the TMX version of the
chip before then?
Rick Collins
Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design

Arius http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX


I have this effect also when working with my 54x emulator (which makes
debugging sometimes really hard).

This latency is not a bug - its a problem (or better said an effect) of
pipelining. When I have to debug critical parts I normally add some nops as
inline assembler into my source code to avoid those pipelining effects.

Regards
Hupp Thomas

> -----Ursprungliche Nachricht-----
> Von: Torgeir Jakobsen [mailto:]
> Gesendet: Mittwoch, 13. Dezember 2000 15:34
> An:
> Betreff: [code-comp] C55xx simulator > Hi
>
> I am working on a project where we are using the TMS320C5510 DSP.
> I have started to simulate the code using the C55xx simulator.
> When I add a variable to the watch window to see if it is changed as
> expected it does not change the value at once after an instruction
> is executed.
>
> example:
>
> unsigned int uiTest;
> float fTest;
>
> uiTest = 10;
> fTest = 10;
>
> The value of uiTest does not change before the second line is
> executed. I have also other situations where I have to step through
> severeal C-code instructions before the variable in the watch window
> is correct. It seems like my code is correct, but I do not know why
> this is happening. This did never happen when using the C5000
> simulator.
>
> Best regards
> Torgeir Jakobsen >
> -------------------------- eGroups Sponsor
> -------------------------~-~>
> eGroups eLerts
> It's Easy. It's Fun. Best of All, it's Free!
> http://click.egroups.com/1/9698/0/_/10680/_/976726023/
> --------------------------
> -------_->
>
> To Join:
>
> To Post:
>
> To Leave:
>
> Archives: http://www.egroups.com/group/code-comp
>
> More Groups: http://www.dsprelated.com
>


I've seen the same things on my DSP system (CCS 1.20 and C5410). When
debugging my target, the CPU-registers are not updated on my PC until I have
single-stepped through 1-3 assembly lines after the instruction affecting
the CPU-register in question. I do not know why this is happening.

Regards,

Carsten

-----Original Message-----
From: Torgeir Jakobsen [mailto:]
Sent: 13. december 2000 15:34
To:
Subject: [code-comp] C55xx simulator Hi

I am working on a project where we are using the TMS320C5510 DSP.
I have started to simulate the code using the C55xx simulator.
When I add a variable to the watch window to see if it is changed as
expected it does not change the value at once after an instruction
is executed.

example:

unsigned int uiTest;
float fTest;

uiTest = 10;
fTest = 10;

The value of uiTest does not change before the second line is
executed. I have also other situations where I have to step through
severeal C-code instructions before the variable in the watch window
is correct. It seems like my code is correct, but I do not know why
this is happening. This did never happen when using the C5000
simulator.

Best regards
Torgeir Jakobsen

To Join:

To Post:

To Leave:

Archives: http://www.egroups.com/group/code-comp

More Groups: http://www.dsprelated.com




Hi folks,
I am trying to transfer data from DSK board TMS320C5402 to PC host and
back to DSK using RTDX. I've got it all work but the data transfer is very
slow. It took 29500 ms to transfer 50 times of 192 data (16 bit) = 590 for
each transfer. I can say that I can have only 5206 kbps, which is very
slow. It took only 5.6 ms to send 192 data (16 bit) from PC host to DSK.

I am using Visual C++ 6.0. I got the time profile from Visual C++. The
slowest part is calling GotoNextMsg, which is 580 ms for each transfer.

Anyone know how can I speed up data transfer from DSK to PC host ?

My PC configuration is :
Mainboard : DFI K6BV3+ with 1 MB cache
Processor : AMD K6-2 400 MHz
Memory : SDRAM 64 MB @ 100 MHz
Hardisk : 8.4 GB, Quantum

I am using Windows98 operating system with Code Composer C5000 ver. 1.21
connect to DSK using XDS510PP.

Best regards, Hendryk Budhi Nugraha

DSP Research and Technology Group
PPAU Mikroelektronika
Institut Teknologi Bandung
Jl. Ganesha 10 Bandung 40132
INDONESIA



Hello,

I am new in CCS so I am not quite sure. Maybe the latency is generated by the
pipeline. When I was using simulator of Hitachi SH-DSP, the problem was some
alike. In the simulator, cursor stops at the assemble instruction where present
PC indicates. However, when this instruction (I1) is "executed", the cursor
moves to next line (I2), but the (I1) is not really executed. It is only just
fetched from memory or cache or been decoded by the program controller. When
cursor moves to (I3), some kinds of assemble instructions could get their
results during this pipeline step. Now we can say this instruction is really
executed. But more kinds of instructions need more steps to been finished. It
depends on the complexity of the instruction, and the memory wait-state, and so
on.

I wish it could explain your C example. You could try it in disassembly style
and maybe you can deem your modification in wathch window as an extra
instruction executed by the emulator or simulator. I guess so. Furthermore, it
is same as what I see in CCS 1.20, 5409 JTAG.

Best Regards
Xiaodong Zhu
Ericsson Enterprise AB

-----Original Message-----
From: Torgeir Jakobsen [mailto:]
Sent: Wednesday, December 13, 2000 3:34 PM
To:
Subject: [code-comp] C55xx simulator Hi

I am working on a project where we are using the TMS320C5510 DSP.
I have started to simulate the code using the C55xx simulator.
When I add a variable to the watch window to see if it is changed as
expected it does not change the value at once after an instruction
is executed.

example:

unsigned int uiTest;
float fTest;

uiTest = 10;
fTest = 10;

The value of uiTest does not change before the second line is
executed. I have also other situations where I have to step through
severeal C-code instructions before the variable in the watch window
is correct. It seems like my code is correct, but I do not know why
this is happening. This did never happen when using the C5000
simulator.

Best regards
Torgeir Jakobsen

To Join:

To Post:

To Leave:

Archives: http://www.egroups.com/group/code-comp

More Groups: http://www.dsprelated.com


Hi

Here is the answer from EPIC:

There are some known issues with watch variables. Sometimes the
simulator will display an address one or two memory locations away from
the actual variable you are trying to watch.

A workaround is to use:

wa *(&variable)

instead of:

wa variable Best regards
Torgeir Jakobsen
Senior Engineer, Technology Department
Aanderaa Instruments AS
e-mail:
web: www.aanderaa.com
phone; +47 55 10 99 00
direct: +47 55 10 99 77
fax: +47 55 10 99 10
----- Original Message -----
From: "Torgeir Jakobsen" <>
To: <>
Sent: Wednesday, December 13, 2000 3:33 PM
Subject: [code-comp] C55xx simulator > Hi
>
> I am working on a project where we are using the TMS320C5510 DSP.
> I have started to simulate the code using the C55xx simulator.
> When I add a variable to the watch window to see if it is changed as
> expected it does not change the value at once after an instruction
> is executed.
>
> example:
>
> unsigned int uiTest;
> float fTest;
>
> uiTest = 10;
> fTest = 10;
>
> The value of uiTest does not change before the second line is
> executed. I have also other situations where I have to step through
> severeal C-code instructions before the variable in the watch window
> is correct. It seems like my code is correct, but I do not know why
> this is happening. This did never happen when using the C5000
> simulator.
>
> Best regards
> Torgeir Jakobsen >
>
> To Join:
>
> To Post:
>
> To Leave:
>
> Archives: http://www.egroups.com/group/code-comp
>
> More Groups: http://www.dsprelated.com >


hi all ,
i will tell what i do for watching the variables.
before i reach the variable to be watched i switch to mixed
source/asm. then watch the registers. it gives me proper results.

bye
sachin -----Original Message-----
From: Torgeir Jakobsen [mailto:torgeir.jakobsen@a...]
Sent: Wednesday, December 13, 2000 3:34 PM
To:
Subject: [code-comp] C55xx simulator Hi

I am working on a project where we are using the TMS320C5510 DSP.
I have started to simulate the code using the C55xx simulator.
When I add a variable to the watch window to see if it is changed as
expected it does not change the value at once after an instruction
is executed.

example:

unsigned int uiTest;
float fTest;

uiTest = 10;
fTest = 10;

The value of uiTest does not change before the second line is
executed. I have also other situations where I have to step through
severeal C-code instructions before the variable in the watch window
is correct. It seems like my code is correct, but I do not know why
this is happening. This did never happen when using the C5000
simulator.

Best regards
Torgeir Jakobsen