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