STM32F4xx __libc_init_array a ARM kód.

Hynek Sladky econf na centrum.cz
Pondělí Březen 27 12:14:20 CEST 2017


V .map souboru by melo byt videt, ktere knihovny jsou prilinkovane. 
Podle me by mely byt vsechny pro stejnou architekturu (ARMv7-M nebo 
ARMv7E-M), pak by tedy mely obsahovat vzdy pouze Thumb instrukce. Ted 
jsem se dival do jednoho ze svych projekyu pro STM32F4xx a vsechny 
standardni funkce jsou prilinkovane z knihoven v adresari armv7e-m...

Hynek Sladky


Dne 27.3.2017 11:28, Josef Štengl napsal(a):
> 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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20170327/95d8adb6/attachment.html>


Další informace o konferenci Hw-list