[elektro] STM32F3 HardFault

Bali Zoltan eltexto at freemail.hu
Mon Nov 16 10:46:14 CET 2015


Hali!

Az a alábbi 1. kódrészlet FPU-val fordítva
HardFault-ra fut a VSTR utasításnál.

float     temp;
uint32_t  idx;
a cél tömb is float.

Ha kikapcsolom az FPU-t a 2.-t fordítja és
nincs fault.

A 3. tömb és FPU nélkül, nincs hiba.

A 4. tömb nélkül FPU-val, nincs hiba.
Az utána levő sor, hasonló mint az 1.
annál már behal újra.

Mi a fene baja lehet? Eddig azt vettem ki,
az extension regiszterekkel dolgozik, ha van FPU.
DE minek ez egy értékadáshoz? Optimalizáció
kikapcsolva, struktúra volatile, a kód IT ben van.

Köszi

Üdv.  Zoli


1. //  142     MeasPacket.SpeedMeasVal[idx] = temp;
         LDR.N    R0,??DataTable2_19
         LDR.N    R1,??DataTable2_20
         LDR      R1,[R1, #+0]
         ADDS     R0,R0,R1, LSL #+2
         ADDS     R0,R0,#+2
         VSTR     S16,[R0, #0]

2. //  142     MeasPacket.SpeedMeasVal[idx] = temp;
         LDR.N    R0,??DataTable2_19
         LDR.N    R1,??DataTable2_20
         LDR      R1,[R1, #+0]
         ADDS     R0,R0,R1, LSL #+2
         STR      R4,[R0, #+2]

3 .//  142     MeasPacket.SpeedMeasVal = temp;
         LDR.N    R0,??DataTable2_19
         STR      R4,[R0, #+2]

4. //  142     MeasPacket.SpeedMeasVal = temp;
         VMOV     R0,S16
         LDR.N    R1,??DataTable2_19
         STR      R0,[R1, #+2]



More information about the Elektro mailing list