Cortex-M0 gcc problem

Milan B. milan na bastl.sk
Sobota Březen 30 19:40:00 CET 2013


On 30. 3. 2013 19:10, Miroslav Mraz wrote:
> Gcc je z gcc.gnu.org, vlastní kompilace (parametry v minulém příspěvku),
> ty knihovny jsou nějak špatně, na webu jsem našel spoustu nápadů, jak to
> zkompilovat, aby to bylo dobře. Jenže se nedozvíte, jak to nakonec
> dopadlo. Podstatná informace je ten patch od Yagarto, protože ho máte
> vyzkoušený. Pokud byste mi ho poskytl, včetně parametrů kompilace, byl
> bych vám nesmírně zauzlován. Ale pokud tam máte zakázán interworking,
> asi se na to vykašlu a zůstanu u toho wraperu, co mám. Nebo zkusím
> gcc-4.8.0.

Patch z Yagarto je na http://www.yagarto.de/source/index.html 
(presnejsie 
http://www.yagarto.de/source/toolchain/build-scripts-20121222.tar.bz2)

Ten patch obsahuje prave tu dolezitu vec (a vlastne iba tuto vec) - 
definiciu multilib, aj ked len zjednodusenu (len V7M a V6M, nie je tam 
V7EM ani podpora FPU)

Momentalne mam nakompilovanu aj verziu z ARM GCC Embedded (podstrcil som 
ju pod yagarto a skompiloval som ju skoro tak isto ako yagarto - len 
treba pridat "--with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r") - 
tato verzia generuje aj kniznice pre 7EM a FPU varianty.  Ale naostro to 
este nemam odskusane.

Co sa tyka parametrov kompilacie, pouzivam prave Yagarto a skripty z 
neho (s malymi upravami - napr. --enable-system-zlib pre kompilaciu 64 
bitoveho gcc). Yagarto neobsahuje prakticky ziadne zmeny oproti 
mainstreamu (okrem tych kniznic) a kompilacia je pomerne bezproblemova.

-m-

> Jsem asi nějakej divnej, ale tyhle nástroje si vytvářím sám a nepoužívám
> ani ty Eklipsy a Korálová studia, takže mě STM donutili napsat si k tomu
> Makefile, ale není to taková hrůza.
> To demo co mají v F4 Discovery jsem rozchodil za dnešní odpoledne,
> běželo to na první pokus - a to je složitý jako cukrovar. Dokonce i tou
> myškou mi to hýbe.
>
> Mrazík
>
> Milan B. píše v So 30. 03. 2013 v 16:56 +0100:
>> On 30. 3. 2013 16:12, Miroslav Mraz wrote:
>>> Když si o to říkáte, prosím. Domníval jsem se, že je to poměrně známý
>>> problém. Takže minimální main.c:
>> U mna - po skompilovani a zlinkovani, vyzera disassemblovany zaciatok
>> prilinkovanej funkcie asi takto (tu adresu si netreba vsimat, mapu som
>> neriesil):
>>
>> 00008020 <__aeabi_idiv>:
>>       8020:       2900            cmp     r1, #0
>>       8022:       d041            beq.n   80a8 <.divsi3_skip_div0_test+0x84>
>>
>> 00008024 <.divsi3_skip_div0_test>:
>>       8024:       b410            push    {r4}
>>       8026:       1c04            adds    r4, r0, #0
>>
>> Takze thumb. Kompilovane v 4.7.2 + patch z Yagarto, vlastna kompilacia
>> pod Linuxom. Podobny vysledok aj u GCC ARM Embedded.
>>
>> Problem nevidim ani tak v kompilatore, ako skor v nespravnom vybere
>> vhodnej verzie libgcc pri linkovani. Skontrolujte, ci sa pouzije spravna
>> multilib kniznica (parameter -v pomoze) - u mna je to kniznica z
>> adresara ...../lib/gcc/arm-none-eabi/4.7.2/thumb/v6m , co je pre M0 spravne.
>>
>> Kompilator pochadza odkial? Vlastna kompilacia? Su vygenerovane spravne
>> varianty kniznic?
>>
>> -m-
>
> _______________________________________________
> 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