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