Re: STM32F4xx __libc_init_array a ARM kód.

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


Tak jsem zjistil, možna že se to někomu bude hodit, že pro -mfloat-abi=soft to vkládá ARM knihovny. Musí být hard nebo 
softfp, pak to reaguje na -march, a vkládá žádaný kód, jinak to vkládá default ARM kód.

Jestli je to bug nebo feature to netuším.


Dne 27.3.2017 v 14:12 Milan B. napsal(a):
> On 3/27/2017 2:06 PM, Josef Štengl wrote:
>> 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.
>>
>
> -print-multi-lib !=  -print-multi-directory
>
> Prve vypise zoznam existujucich, druhe vypise, ktory adresar sa vybral pocas skutocneho linkovania.
>
>
>>
>> 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
>> _______________________________________________
>> 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