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
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.
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; |
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.
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
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.