FPU mit AVR32

OP #3360043
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
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
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
OP #3360426
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
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.
#3360520
selbst mit FPU ist nicht garantiert, das alle in C definierten 
mathematischen Funktionen auch in Hardware implementiert sind.
sin(), cos() usw werden gerne mal ausgelassen und über die in Hardware 
implementieren float  double Division  multiplikation in Software 
umgesetzt.

Gruß,

dasrotemopped.
Gast #3360545
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.