DSPRelated.com
Forums

float powf wrong results????

Started by marc...@hotmail.com March 21, 2006
I programm an DSP (TMS320C6713) in 'C'. Therefor I use CCS V.2.21.

The programming-form is: Component-based Software Development of Automation Systems

The problem is:

The application runs on RAM and is linked with the parameters: Reloctabel Executable (-ar); Load-Time-Initialization (-cr); MemoryModels Far Calls & Data (-ml3); SECTIONS { .text: {} > SDRAM

The component is placed in FLASH. It is linked with the parameters: Reloctabel Executable (-ar); Load-Time-Initialization (-cr); MemoryModels Far Calls & Data (-ml3); SECTIONS { .text: {} > FLASH

The apllication calls the componente
___________________________________________________________
APPLIKATION (RAM): ___________________________________________________________ ___________________________________________________________
KOMPONENTE (FLASH) ___________________________________________________________
The result is:
a=0.0 erg.= 1.0
a=1.0 erg.= 1.0
a=2.0 erg.= 4.0
a=3.0 erg.= 0.0
a=4.0 erg.= 256.0
a=5.0 erg.= 0.0
a=6.0 erg.= 0.0
a=7.0 erg.= 0.0
a=8.0 erg.= 16777216.0
a=9.0 erg.= 0.0
a.0 erg.= 179769313486231684688475341796875000000....0000

etc. Only the float-values a=0,1,2,4,8,16,...... and a=-1,-2,-4,-8,-16...... deliver a correkte result. All the other values deliver result=0.00000 or an Overflow !!!!!!!

But when I have the function powf(a,a) in the application it delivers all results correct.

Do you know why????

Thx m...@hotmail.com
marco719,

--- m...@hotmail.com wrote:

> I programm an DSP (TMS320C6713) in 'C'. Therefor I
> use CCS V.2.21.
>
> The programming-form is: Component-based Software
> Development of Automation Systems
>
> The problem is:
>
> The application runs on RAM and is linked with the
> parameters: Reloctabel Executable (-ar);
> Load-Time-Initialization (-cr); MemoryModels Far
> Calls & Data (-ml3); SECTIONS { .text: {} > SDRAM
>
> The component is placed in FLASH. It is linked with
> the parameters: Reloctabel Executable (-ar);
> Load-Time-Initialization (-cr); MemoryModels Far
> Calls & Data (-ml3); SECTIONS { .text: {} > FLASH
>
> The apllication calls the componente
>
___________________________________________________________
>
> APPLIKATION (RAM):
>
___________________________________________________________
>
___________________________________________________________
>
> KOMPONENTE (FLASH)
>
___________________________________________________________
>
> The result is:
> a=0.0 erg.= 1.0
> a=1.0 erg.= 1.0
> a=2.0 erg.= 4.0
> a=3.0 erg.= 0.0
> a=4.0 erg.= 256.0
> a=5.0 erg.= 0.0
> a=6.0 erg.= 0.0
> a=7.0 erg.= 0.0
> a=8.0 erg.= 16777216.0
> a=9.0 erg.= 0.0
> a.0 erg.> 179769313486231684688475341796875000000....0000
>
> etc. Only the float-values a=0,1,2,4,8,16,...... and
> a=-1,-2,-4,-8,-16...... deliver a correkte result.
> All the other values deliver result=0.00000 or an
> Overflow !!!!!!!
>
> But when I have the function powf(a,a) in the
> application it delivers all results correct.
>
> Do you know why????
I don't know for sure. Are you saying that when you
build your code to run from RAM, it runs ok??
But, when you put it into Flash, it does not run
correctly??
If so, I would examine the linker command file that
you are using. You may be storing a memory section
into Flash that should be stored in RAM.

mikedunn
>
> Thx m...@hotmail.com
> c...
>
>