Hallo, ich verwende in einem Projekt den ATSAME53xx. Der hat ja sogar Fließpunktarithmetik, die ich bis jetzt noch nie benutzt habe. Was ist alles nötig um eine CMSIS-Funktion aufrufen zu können? Muss man die FP-Einheit extra einschalten?
Du brauchst die CMSIS nicht um die Fließkommaeinheit zu nutzen. Oder möchtest du die DSP-Funktionen der CMSIS nutzen? Alex schrieb: > Muss man die FP-Einheit extra einschalten? Ja:
1 | SCB->CPACR |= ((3UL << 10*2) | /* set CP10 Full Access */ |
2 | (3UL << 11*2) ); /* set CP11 Full Access */ |
Wobei dein Startupcode das eventuell schon macht.
Alex schrieb: > Muss man die FP-Einheit extra einschalten? Man muss dem Compiler noch sagen, dass er die Hardware benutzen soll:
1 | CFLAGS += -march=armv7e-m+fp -mfpu=fpv4-sp-d16 -mfloat-abi=hard |
2 | CFLAGS += -fsingle-precision-constant |
wobei die zweite Zeile Geschmackssache ist. Ohne die muss man überall "1.0f" schreiben und wird ständig dran erinnert. Und printf() funktioniert nur für double, eine float Variable wird immer als double übergeben. Das kostet Zeit und Platz und wahrscheinlich eine lib, die man sonst nicht braucht. Da gab's ein paar Beiträge dazu: Beitrag "GCC Compiler Flags"
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.