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
float powf wrong results????
Started by ●March 21, 2006
Reply by ●March 22, 20062006-03-22
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...
>
>
--- 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...
>
>