[elektro] STM32F3 HardFault
Bali Zoltan
eltexto at freemail.hu
Mon Nov 16 11:04:50 CET 2015
Áááá, de jó hogy írogatok! Átnéztem a struktúrát is,
ott a hiba. a struktúra __packed és két uint_8 után jön a
float tömb. Az alignálás nem jó. De ha nincs tömb, csak
változó, akkor miért jó?
Üdv. Zoli
2015.11.16. 10:56 keltezéssel, Bali Zoltan írta:
> 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]
>>
>>
> -----------------------------------------
> elektro[-flame|-etc]
>
>
More information about the Elektro
mailing list