Re: STM32F4xx __libc_init_array a ARM kód.

Milan B. milan na bastl.sk
Pondělí Březen 27 15:14:03 CEST 2017


On 3/27/2017 2:49 PM, Josef Štengl wrote:
> 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.
>

Nerobte z toho ciernu magiu. Vidite niekde vo vypise multilib polozku 
obsahujucu mfloat-abi=soft ?

Ja nie. Takze sa pouzije default kniznica, ktora je arm. Works as designed.



>
> 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
> _______________________________________________
> 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