[elektro] STM32F3 HardFault
Bali Zoltan
eltexto at freemail.hu
Mon Nov 16 10:56:22 CET 2015
Ja, nem írtam az idx static és 0x00000000 a kérdéses esetben.
2015.11.16. 10:46 keltezéssel, Bali Zoltan írta:
> 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]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
>
More information about the Elektro
mailing list