Hallo,
ich arbeite zurzeit mit einem STM32f429NIH6U, also einem Cortex M4 mit
FPU. Allerdings möchte ich die FPU gerne deaktivieren.
Ich arbeite mit der STM32Cube IDE und habe in den Project Propertiers
auch die Möglichkeit gefunden um die FPU auf "None" zu stellen.
Betrachte ich allerdings den generierten Assembler Code beim rechnen mit
floats, so werden weiterhin die vmul Befehle, zum Arbeiten mit der FPU
verwendet.
Leider habe ich es nicht geschafft mit C-Code oder inline Assembler die
Coprozessoren der FPU zu deaktivieren.
Hat vielleicht jemand eine Idee, wie man die FPU deaktivieren kann? Egal
ob über Code oder die IDE.
Das ist mein aktueller Code zum Testen:
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 | #include "stm32f4xx.h"
|
4 |
|
5 | int main(void){
|
6 | //Deaktivieren der Coprozessoren in C
|
7 | //FPU_CPACR->CPACR &= ~(1 << 22);
|
8 | //FPU_CPACR->CPACR &= ~(1 << 23);
|
9 |
|
10 | //Deaktivieren der Coprozessoren in Assembler
|
11 | /*__asm__("LDR R0, 0xE000ED88;"
|
12 | "LDR R1, [R0];"
|
13 | "AND R1, R1, #0x0 << 20;"
|
14 | "STR R1, [R0];");*/
|
15 |
|
16 |
|
17 | float pi = -3.141759487516545612;
|
18 | int b = 4;
|
19 | int ergebnis;
|
20 |
|
21 | ergebnis = pi + b;
|
22 |
|
23 | __asm__("nop;");
|
24 | }
|
Ich würde mich sehr über Vorschläge freuen
Viele Grüße
Nils