Merkwürdige STM32F405-FPU-Exception

Gast #3307426
Lesenswert?

Hallo allerseits,

beim Ausprobieren der FPU auf dem STM32F405VG ist mir aufgefallen, dass 
z.B. eine Division durch 0 (mit VDIV) nicht etwa das Flag DZC in FPSCR 
setzt, sondern IOC (invalid operation). Natürlich kann man eine Division 
durch 0 als ungültige Operation bezeichnen, aber wenn es schon ein Flag 
für diesen speziellen Fall gibt, hätte ich erwartet, dass es auch 
gesetzt wird.
Gibt's dafür irgendwo noch einen Schalter (analog zu DIVBYZERO in UFSR)?

Gruss
Platon
Gast #3307453
Lesenswert?

Ja, die läuft. Ich kann meine ganzen Berechnungen problemlos 
durchführen. Wenn ich aber testhalber eine Division durch 0 provoziere, 
kriege ich die unerwartete Exception.

Ein anderes Phänomen, das mir schon beim STM32F2xx aufgefallen war, ist, 
dass ISRs erst etliche Zyklen nach dem Satzen des zugehörigen 
Pending-Flags angesprungen werden. Aber wie gesagt, das scheint nichts 
mit der FPU zu tun zu haben.
Gast #3308171
Lesenswert?

Vermutlich hast du dann die exception nicht aktiviert:
1
  // enable additional exceptions
2
  SCB->SHCSR |= SCB_SHCSR_USGFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk | SCB_SHCSR_MEMFAULTENA_Msk;
3

4
  // enable exception on division by zero and unaligned data
5
  SCB->CCR |= SCB_CCR_DIV_0_TRP_Msk | SCB_CCR_UNALIGN_TRP_Msk;
Gast #3308185
Lesenswert?

Doch, doch, die sind eingeschaltet und funktionieren so weit auch. 
DIVBYZERO kommt bei Integer-Arithmetik zuverlässig. Ich vermisse das 
DZC-Flag bei Divisionen durch 0 von (single precision) floats.
Gast #3318030
Lesenswert?

Hallo,
die Flags der CPU sind nicht die Flags der FPU?
Mit folgendem Befehl können die Flags z.B. für
die Compare Operationen eingelesen werden.
vmrs   apsr_nzcv,fpscr

Ist FPU lazy Stacking aktiviert?
Sind die Modies im FPU Register FPDSCR richtig definiert?

Habe mit der FPU bei Exeptions und auch bei anderen Exeptions,
nichts feststellen können dass sie vezögert ausgeführt werden.
Vieleicht ist der Interrupt Kontroller nicht richtig initialisiert.
Sehr seltsam?!?


Gruß Sascha

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