FPU mit AVR32

#3360043
Lesenswert?

Hallo,

arbeite aktuell mit dem Atmel "AT32UC30512C" uC. Auf diesm möchte ich 
einige Fließkommaberechnungen durchführen, die aber ungweöhnlich lange 
Rechenzeiten benötigen. Dieser Controller besitzt laut Datenblatt eine 
FPU. Nun bin ich mir nicht sicher, ob er sie auch anwendet... Als 
Umwicklungsumgebung benutze ich atmel studio 6.

Trotz recherche im Internet bin ich bisher nicht weiter gekommen und 
habe auch fest gestellt, dass ich nicht der Einzigste mit diesem Problem 
bin.

Vll kann mir da jemand weiterhelfen.

(Im tollen Datenblatt finde ich leider auch nichts dazu :( )


Grüße
Gast #3360133
Lesenswert?

Sven P. schrieb:

> (Im tollen Datenblatt finde ich leider auch nichts dazu :( )

Das Datenblatt kann dir maximal verraten, ob das Teil eine FPU hat und 
wie man die ggf. aktiviert.

Es kann dir aber logischerweise nicht verraten, ob dein Programm das 
auch tatsächlich richtig macht und die FPU dann auch benutzt.

Asm-Programmierer tun's einfach.

C-ler müssen die Doku ihres Compiler und/oder ihrer IDE lesen, um 
herauszufinden, wie sie ihrem Compiler beibringen, es zu tun. Und den 
Asm-Zwischencode, den der Compiler produziert, um zu überprüfen ob er es 
tut.
Gast #3360364
Lesenswert?

oder du schaust einfach mal auf ein Beispiel wie das UC3C Scope Meter 
and filtering application, und vergleichst die Einstellungen die Du hast 
mit denen des Beispielprojektes. Dort wird die DSP/FPU schön 
demonstriert
#3360426
Lesenswert?

Habe eine Lösung gefunden mit der ich die Rechenzeit um die Hälfte 
verkürze.

Dem Compiler muss man über das Flag: "-mhard-float" anweisen, dass er 
die FPU nutzt. Des weiteren hab ich alle Konstanten mit dem Suffix "f" 
versehen, damit er nicht dies als Typ double behandelt.

Werde mir trotzdem mal das Beispiel anschauen! Vll. gibt es sonst noch 
Möglichkeiten die Performance zu verbessern. Leider kenn ich mich mit 
Assambler so gut wie gar nicht aus :/

Vielen Dank!
#3360514
Lesenswert?

The 32-bit AVR CPU includes cutting-edge features such as integer and 
fixed point DSP arithmetic,
single-cycle multiply and accumulate instructions

http://www.atmel.com/Images/doc32120.pdf

fixed point DSP Lib
16-bit and 32-bit fixed-point
formats

ich sehe da keine FPU im AVR32 UC3

Floating Point and DSP Arithmetic
The 32-bit AVR DSPlibrary is a complete set of
math functions optimized in assembly by Atmel AVR
experts

Wenn das eine FPU drin wäre, müsste die dann in Assembler handoptimiert 
werden ? Oder werden die Integer Einheiten zur Emulation einer FPU 
benutzt ?

Gruß,

dasrotemopped.
Gast #3360545
Lesenswert?

Markus Horbach schrieb:
> ich sehe da keine FPU im AVR32 UC3

nur im UC3C ist eine FPU eingebaut, alle anderen haben "nur" die DSP.

http://www.atmel.com/Images/32117S.pdf

der UC3C war schon damals das was heute ein CM4F ist

wobei egal welche Platform, wenn man die FPU voll ausschöpfen will, muß 
man am besten die Assemblerbefehle verwenden. Selbst der Keil compiler 
nutzt den CM4F nicht wenn man keine in Assembler geschriebenen Routinen 
verwendet.
Die Compiler sind da nicht so weit entwickelt, ich weiß nicht wie IAR es 
macht, da könnte ich mir schon vorstellen dass der Compiler mehr von FPU 
gebrauch macht. Immerhin gibt es eine spezielle IAR Version für den 
AVR32
Gast #3360577
Lesenswert?

Der UC3C hat definitiv eine FPU, die vom gcc zumindest für Addition, 
Subtraktion, Multiplikation und das Casten zwischen Float und Int 
verwendet wird.
Sehen kann man das an den cop-Befehlen im Assemblercode.
Mit dem Parameter "-M decode-fpu", werden übrigens vom avr32-objcopy im 
Listing statt der "cop"-Befehle die (lesbaren) FPU-Mnemonics ausgegeben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren