Re: STM32F4xx __libc_init_array a ARM kód.
Milan B.
milan na bastl.sk
Pondělí Březen 27 13:58:54 CEST 2017
Len tip: v danej verzii gcc & co. nie je vygenerovana kniznica pre danu
kombinbacia architektury/fpu. Failback je obvykle defaultna kniznica v arm.
Pridajte -print-multi-directory a uvidite, odkial sa kniznice linkuju.
Ak vypise iba bodku, je to nedobre - tam je ta default arm kniznica.
Mozno je treba pridat aj parameter -mfloat-abi=
Ten multilib vypis hovori:
pouzi kniznice v adresari xxx ak je kombinacia parametrov ....
Takze pre HW FPU a Cortex M4 by sa zrejme mali pouzit kniznice z
adresara armv7e-m/fpu a k tomu sa dopracuje cez kombinaciu parametrov:
-mthumb -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16
-m-
On 3/27/2017 11:28 AM, Josef Štengl wrote:
> Ahoj,
> vytvářím nový projekt pro Cortex-m4 (trošku mě překvapilo, že oproti
> cortex-a/r je to prakticky jiný procesor) pomocí STM32CubeMX + gcc
> (tahle kombinace poprvé, jak procesor tak překladač, tak se s tím
> zatím peru :-). No a drhne to na fci volání __libc_init_array, ve
> které se to zadrhne. Co jsem se dočetl, tak se většinou pro C
> komentuje. To sice také funguje, ale nechápal jsem proč to nejde a
> bloudí a co dělá (jsem někdy nemístně zvědavý).
> V asm výpisu (LST file) jsem zjistil, že kód je místo THUMB ARM. ARM
> ten procesor dle dokumentace neumí a nemám tušení jak se to interpretuje.
>
> Procesor je STM32F329 (bude pak 405)
>
> Nemá někdo tušení, jak přesvědčit kompilátor/linker aby přidával svůj
> kus kódu ve správných instrukcích (THUMB only)?
>
> Našel jsem zmíňku o výpis možných knihoven pro překladač, ale už jsem
> nenašel jak s touto informací naložit.
> Buď to nikdo neřeší, nebo něco přehlížím.
>
> #arm-none-eabi-gcc --print-multi-lib
>
> .;
> thumb;@mthumb
> fpu;@mfloat-abi=hard
> armv6-m;@mthumb na march=armv6s-m
> armv7-m;@mthumb na march=armv7-m
> armv7e-m;@mthumb na march=armv7e-m
> armv7-ar/thumb;@mthumb na march=armv7
> armv7e-m/softfp;@mthumb na march=armv7e-m na mfloat-abi=softfp na mfpu=fpv4-sp-d16
> armv7e-m/fpu;@mthumb na march=armv7e-m na mfloat-abi=hard na mfpu=fpv4-sp-d16
> armv7-ar/thumb/softfp;@mthumb na march=armv7 na mfloat-abi=softfp na mfpu=vfpv3-d16
>
> armv7-ar/thumb/fpu;@mthumb na march=armv7 na mfloat-abi=hard na mfpu=vfpv3-d16
> thumb/armv7-ar/fpu/vfpv3-d16/be;@mthumb na march=armv7 na mfloat-abi=hard na mfpu=vfpv3-d16 na mbig-endian
>
>
>
> Překlad:
> arm-none-eabi-gcc -MT obj/usart.o -MMD -MP -mthumb -mlittle-endian
> -mcpu=cortex-m4 -mfpu=vfpv4-d16 -DSTM32F4 -DSTM32F429xx
> -DUSE_STDPERIPH_DRIVER -DVECT_TAB_SRAM ...
>
> Linkování:
> arm-none-eabi-gcc -mthumb -mlittle-endian -mcpu=cortex-m4
> -mfpu=vfpv4-d16
> -Wl,--gc-sections,-Map=SmartAtFire_SCU-cortex-m4_debug.map,--cref ...
>
>
> Díky za každé nakopnutí.
> ced
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list