AVR-GCC-Linux

Från ElektronikWikin
Version från den 29 augusti 2010 kl. 02.32 av Niklo (diskussion | bidrag) (→‎Slutskede)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Introduktion

Jag körde för länge sedan MS-Windows. Där var det lätt att få en fungerande avr-kompilator installerad, bara att ladda hem WinAVR (uttalas Whenever) och installera.

När jag bytte till Linux blev det värre, försökte några gånger men fick det inte att fungera, förrän jag läste MaggoT's tråd och alla kloka svar. Förhoppningsvis får någon nytta av denna guide så jag inte skriver i onödan.

Installation

För en komplett utvecklingsmiljö behöver vi:

  • Binutils, fick inte senaste versionen att fungera, så jag körde med 2.14 som fungerade bra.
  • AVR-libc, senast versionen (1.2.5 vid skrivande stund) fungerade bra.
  • gcc, tog den senaste versionen, dvs gcc-3.4.4/gcc-3.4.4.tar.bz2 i skrivande stund.
  • AVRDude, jag installerade det från portagen (via "emerge" i Gentoo Linux).

Bygga från källkod

Under installationen var jag inloggad med mitt vanliga konto, macce. Jag installerade allt under /home/macce/avr. Vill du ha installerad det på något annat ställe, ändra då sökvägen.

binutils

Packa upp paketet: tar jxfv binutils-*.tar.bz2

Gå till binutilsmappen: cd binutils*

Konfigurera: ./configure --prefix=/home/macce/avr --target=avr --enable-languages=c --host=avr --disable-nls

Kompilera: make

Installera: make install

gcc

Nästa program blir gcc, vår C-kompilator:

Packa upp: tar jzfv gcc*tar.bz2

Byt mapp: cd gcc*

Konfigurera: ./configure --prefix=/home/macce/avr --target=avr --enable-languages=c --host=avr --disable-nls

Kompilera: make

Installera: make install

Gå nu in till mappen där du installerade programmen, i mitt fall /home/macce/avr genom att skriva cd /home/macce/avr/bin

Lista filerna i mappen: ls

Du borde minst ha avr-gcc i mappen, har du inte men har gcc, kopiera gcc till avr-gcc genom att skriva cp gcc avr-gcc. alternativr gör en länk ln gcc avr-gcc.

Saknar du följande filer, som jag gjorde: avr-ar, avr-as och avr-ranlib kan du fuska lite och kopiera dem från ditt system. Sök efter filerna med t.ex. whereis och kopiera dem till bin-mappen genom att skriva:

whereis ar

Har du whereis installerat skriver den ut var programmet finns, i mitt fall /usr/bin/ar. Du får det kopierat till din bin-mapp genom att skriva:

cp /usr/bin/ar /home/macce/avr/bin/avr-ar

Gör samma med de övriga filerna du saknar. Detta fungerade för mig, men är garanterat inte så man skall göra.

avr-libc

Nu skall vi installera avr-libc, detta bibliotek kräver de programm vi installerade tidigare + eventuellt fulkopierade. Dock vet inte avr-libc-installationen var programmen finns, så vi måste hjälpa det lite:

export CC=/home/macce/avr/bin/avr-gcc

export AR=/home/macce/avr/bin/avr-ar

export AS=/home/macce/avr/bin/avr-as

export RANLIB=/home/macce/avr/bin/avr-ranlib


Nu skall vi konfigurera avr-libc, men först måste vi gå packa upp programmet:

cd /mapp/vart/du/laddade/hem/avr-libc

Packa upp: tar jxfv avr-libc*tar.bz2

Gå in i mappen: cd avr-libc* Konfigurera: ./doconf --PREFIX=/home/macc/avr

Kompilera: ./domake

Installera: ./domake install

Debian

Att installera avr-gcc under Debian Etch är relativt enkelt tack vare pakethanteraren APT. För att installera avr-gcc med eventuella beroenden kör

apt-get install binutils-avr avr-libc gcc-avr

För att installera programmeraren avrdude kör

apt-get install avrdude

Dessa instruktioner borde även fungera för andra Debian-baserade distributioner som till exempel Ubuntu

Gentoo

Om du använder Gentoo GNU/Linux är det busenkelt att installera en korskompilator. Installera först crossdev mha:

emerge crossdev

crossdev är ett litet script som kompilerar och installerar korskompilatorer och tillhörande bibliotek för ett antal olika arkitetkurer, bla AVR. Kör sedan

crossdev --without-headers -S -s4 -t avr

för att installera senaste stabila avr-gcc. Gå ut och klipp gräset eller skotta snö, när du kommer in är det bara en liten stund kvar :) Glöm inte att installera avrdude eller uisp. Avrdude installeras enklast via emerge

emerge avrdude

Slutskede

Grattis! Nu kan du skriva och kompliera dina egna program !

Men... för att enklare kompilera dina program kan du använda make tillsammans med en makefile, jag använder [denna]. Ladda hem den, modifiera vilken CPU etc. du använder. Jag behövde också ändra sökvägarna till avr-gcc, avr-ar etc. Sök efter dem i Makefilen, fyll i fullständig sökväg och byt namn på Makefile.tpl till Makefile. Vips så är allt klart!

Vill du ha en .hex-fil från Makefilen kör du bara "make hex" i mappen var du har Makefilen.

KDevelop

KDevelop är ett mycket fint och trevligt programmerings-IDE. Det funkar dessutom mycket bra ihop med avr-verktygen. Installera det först (emerge -av kdevelop om du använder Gentoo). För att skapa ett nytt projekt: Skapa katalogen som du ska ha projektfilerna i. Hämta en makefil, tex den som anges ovan. Starta kdevelop, välj importera projekt/costum makefiles, och välj din makefil. Nu är det bara att skapa de filer som ska ingå i projektet. Märk att kdevelop kollar makefilen och alla kompileringsmål finns under build-menyn. Det är en god idé att ha ett mål som kompilerar och därefter programmerar processorn direkt. Skitsmidigt!

Kommentarer, tips och rättelser

cykze: Kan ju tillägga att om man kör Debian eller någon annan Debian-baserad dist som t ex Ubuntu eller Knoppix så kan man köra: "apt-get install binutils-avr avr-libc gcc-avr" för att uppnå samma resultat. Lite smidigare kanske. Det är inte så bra att lägga program under sin hemkatalog. Utan du borde ha kört med /usr/local/ eller /opt/ som prefix istället. Sen vet jag inte om det är så okay att bara kopiera saknade programfiler så där. Programmen du kopierar är inte kompilerade med stöd för avr. Vad det har för betydelse kan jag dock inte säga. Är du säker på att t ex 'avr-ar' eller 'ar' inte skapas någonstans under /home/macce/ efter binutilskompileringen?


simon78: find ~ -name '*avr-ar*' -type f -print