[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