[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