Re: STM32F4xx __libc_init_array a ARM kód.

Josef Štengl ok1ced na nagano.cz
Pondělí Březen 27 14:06:52 CEST 2017


To jsem už udělal, je to hned v původním mailu :-). Jen jsem se nemohl pohnout dále. Vypadá to, že vaše poslední řádka 
zabrala, jdu studovat proč a jestli to doopravdy funguje.



Dne 27.3.2017 v 13:58 Milan B. napsal(a):
>
> 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
>
>
> _______________________________________________
> 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