Re: STM32F4xx __libc_init_array a ARM kód.

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


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




Další informace o konferenci Hw-list