STM32F4xx __libc_init_array a ARM kód.

Josef Štengl ok1ced na nagano.cz
Pondělí Březen 27 11:28:54 CEST 2017


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


Další informace o konferenci Hw-list