avr-gcc

Fórumok

Sziasztok!

Atmel Atmega88 mikrovezerlot szeretnek progizni majd C nyelven.
Ehhez az avr-libc-re lenne szuksegem ha minden igaz. Hozzáteszem, sima asm-et sem tudtam forditani, mert hiányolta a .def-ben szereplo include-ot. Google szerint ahhoz is avr-libc-re van szukseg.
Sajnos nem telepul. Mi lehet a gond?


# emerge -av dev-embedded/avr-libc
[..]
 * Checking for avr-gcc ...                                                                                       [ !! ]
 *
 * Failed to locate 'avr-gcc' in $PATH. You can install an AVR toolchain using:
 *   $ crossdev -t avr
 *
 *
 * ERROR: dev-embedded/avr-libc-1.4.4 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called pkg_setup
 *   avr-libc-1.4.4.ebuild, line   38:  Called die
 * The specific snippet of code:
 *              die "AVR toolchain not found"
 *  The die message:
 *   AVR toolchain not found
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/dev-embedded/avr-libc-1.4.4/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-embedded/avr-libc-1.4.4/temp/die.env'.
 * This ebuild used the following eclasses from overlays:
 *   /usr/portage/eclass/flag-o-matic.eclass
 *   /usr/portage/eclass/eutils.eclass
 *   /usr/portage/eclass/multilib.eclass
 *   /usr/portage/eclass/toolchain-funcs.eclass
 *   /usr/portage/eclass/portability.eclass
 *

 * Messages for package dev-embedded/avr-libc-1.4.4:

 *
 * Failed to locate 'avr-gcc' in $PATH. You can install an AVR toolchain using:
 *   $ crossdev -t avr
 *
 *
 * ERROR: dev-embedded/avr-libc-1.4.4 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called pkg_setup
 *   avr-libc-1.4.4.ebuild, line   38:  Called die
 * The specific snippet of code:
 *              die "AVR toolchain not found"
 *  The die message:
 *   AVR toolchain not found
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/dev-embedded/avr-libc-1.4.4/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-embedded/avr-libc-1.4.4/temp/die.env'.
 * This ebuild used the following eclasses from overlays:
 *   /usr/portage/eclass/flag-o-matic.eclass
 *   /usr/portage/eclass/eutils.eclass
 *   /usr/portage/eclass/multilib.eclass
 *   /usr/portage/eclass/toolchain-funcs.eclass
 *   /usr/portage/eclass/portability.eclass
 *
# crossdev -t avr
------------------------------------------------------------------------------------------------------------------------
 * Host Portage ARCH:     x86
 * Target Portage ARCH:   *
 * Target System:         avr
 * Stage:                 3 (C compiler & libc)

 * binutils:              binutils-[latest]
 * gcc:                   gcc-[latest]
 * libc:                  avr-libc-[latest]

 * PORTDIR_OVERLAY:       /usr/portage
 * PORT_LOGDIR:           /var/log/portage
 * PKGDIR:                /usr/portage/packages/cross/avr
 * PORTAGE_TMPDIR:        /var/tmp/cross/avr
  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -
 * Using sys-devel/binutils from /usr/portage instead of /usr/portage
 * Using sys-devel/gcc from /usr/portage instead of /usr/portage
 * Using dev-embedded/avr-libc from /usr/portage instead of /usr/portage
 * Using sys-devel/gdb from /usr/portage instead of /usr/portage
 * Using dev-util/insight from /usr/portage instead of /usr/portage
 * Forcing the latest versions of {binutils,gcc}-config/gnuconfig ...                                             [ ok ]
 * Log: /var/log/portage/cross-avr-binutils.log
 * Emerging cross-binutils ...                                                                                    [ ok ]
 * Log: /var/log/portage/cross-avr-gcc-stage1.log
 * Emerging cross-gcc-stage1 ...

 * gcc failed :(
 * If you file a bug, please attach the following logfiles:
 * /var/log/portage/cross-avr-info.log
 * /var/log/portage/cross-avr-gcc-stage1.log

cross-avr-gcc-stage1.log http://pastebin.com/m62b10357

Hozzászólások

probalj regebi verzioju gcc -t.
pl. 3.4.6-r2 -t.

Meg veletlenul se kontarkodnek olyanba, amihez nem ertek, de visszaideznek egy reszletet az uzenetbol:


 * Failed to locate 'avr-gcc' in $PATH. You can install an AVR toolchain using:
 *   $ crossdev -t avr
 *

Rogton 3 dolog is lehetseges:
- A sajath path-edbe ugyan beleraktad az avr-gcc lelohelyet, azonban a rendszerebe nem. Ne feledd, ennek a /etc/env.d-ben nyomanak kell lenni, csak igy lehet rendszerszintu.
- Az emlitett cucc nem jo nevvel telepult. Symlinkeld at.
- Nincs is fenn avr-gcc binaris a rendszerben.

tmp konyvtarban, ahol buildel probald kiadni make parancsot. Es kimenetet pastebinre.

/usr/tmp/portage/cross-avr # ls
avr-libc-1.4.6 avr-libc-1.4.8 gcc-4.2.3

A "crossdev -t avr"-re kellene felraknia az avr-gcc-t, mivel ennek a binárisa valóban nincs fent.
/var/log/portage/cross-avr-gcc-stage1.log -ból részlet amit befogott a terminal:) 232. sortól érdekes: http://pastebin.com/m61d09c23

Próbáltam kézzel leszedni gcc-core-t és configure-nek megadni hogy avr-re forditsa magát, ott más errort irt, de nem is kavarnám bele a kézzel felrakottat, nehogy vmit összekuszáljon.

--
Desktop: 2.6.21-gentoo-r4 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
Laptop: 2.6.22-gentoo-r5 Mobile Intel(R) Pentium(R) 4 - M CPU 2.00GHz

Ugyanis a Gentoo hihetetlen mennyisegu patchet tol minden binaris cuccba. Arrol nem beszelve, hogy a gcc csak ugy nem fog adott platformu lenni, mert neki kell elobb egy olyan binutils. En mar futottam neki gcc kezi forditasnak, es nem igazabol leanyalom.
A Gcc lelkivilagahoz kepest a hagyma az egy egyszeru faek. Ez nem csak hogy reteges, de meg ossze is kuszalodnak a retegek.

Esetleg ha nem problema, ha 1ms-el lassabban fut le a forditas, akkor kicsomagolhatod a .deb-bol a helyere. Ubihoz van csomag, a repokban megtalalod.

----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés

Az a +1ms még épp belefér:))
Köszönöm a tippet, gcc-avr_4.2.2-1_i386.deb-t letöltöttem, deb2tgz-vel átalakitottam (alapból csak üres mappákat láttam benne). Usr-be másolva hiba nélkül feltelepült a dev-embedded/avr-libc. Köszönöm még1x:)

--
Desktop: 2.6.21-gentoo-r4 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
Laptop: 2.6.22-gentoo-r5 Mobile Intel(R) Pentium(R) 4 - M CPU 2.00GHz

Ha mar igy osszejott, lenne nekem is egy keresem.
Ha majd belejottel, akkor irnal egy bejegyzest blogba/wikibe a buktatokrol, milyen egetot sikerult eletre lehelni, es hasonlokrol? Idovel elkepzelheto, hogy en is nekikezdek, es meg valoszinuleg masok is a HUP-rol.
Win-specifikus leirasokat eleg konnyu talalni, de ez kicsit specialisabb terulet.

----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés

Buktatói valóban vannak, avr-gcc-vel egyelőre egy .c-t sem sikerült leforditanom amit a suli wikis oldaláról szedtem. Csütörtökön lesz úgyis Prog II. labor, c részét akkor kezdjük, majd rákérdek ezekre. 1-2 linuxos van közöttük.
Az ötlet jó, amint összejön minden rendesen, irok róla:)
Addig is:
http://kando.prociweb.hu/letoltes/?path=./data/1.evfolyam/Programozas_I…
http://wiki.mai.kando.hu/index.php/Atmega88
http://wiki.mai.kando.hu/index.php/Targyak/programozas_II/eloadas
http://wiki.mai.kando.hu/index.php/Targyak/programozas_II/labor

--
Desktop: 2.6.21-gentoo-r4 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
Laptop: 2.6.22-gentoo-r5 Mobile Intel(R) Pentium(R) 4 - M CPU 2.00GHz

Ize.. azt nem neztem, hogy a binutils-avr-re dependel (ez a 3 csomag biztosan kell: avr-libc binutils-avr gcc-avr)
Koszi a linkeket! A wikis oldalon talalt leirasbol nekem mukodik (persze egetni azt nem tudom, de az ott talalt .c-bol kaptam egy .hex-et)

Egy otlet: a Zaurushoz csinalt valaki egy vagy virtualis gep image-et, amin rajta van a crosscompiler, es nem kell vele bohockodni (azert azt eleg maceras beloni, header fileokkal, mindennel egyutt). Ha ezt ilyen ipari meretekben tanitjak a Kandon, erdemes lehet osszerakni egy ilyet. Persze egetni nem lehet az alol, de kevesebb a gond. :)

Nekem gyakorlatilag out-of-the-box mukodott:
pastebin

----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés

Kicatolnád a comp.sh-t?:)

Egyébként nálam ezek vannak most fent:


# equery list avr
[ Searching for package 'avr' in all categories among: ]
 * installed packages
[I--] [  ] dev-embedded/avr-libc-1.4.4 (0)
[I--] [  ] dev-embedded/avra-1.0.1 (0)
[I--] [  ] dev-embedded/avrdude-5.4 (0)

# equery list binutils
[ Searching for package 'binutils' in all categories among: ]
 * installed packages
[I--] [M ] cross-avr/binutils-2.18-r1 (avr)
[I--] [  ] sys-devel/binutils-2.18-r1 (0)
[I--] [  ] sys-devel/binutils-config-1.9-r4 (0)

binutils-config -l
 [1] avr-2.18 *
 [2] i686-pc-linux-gnu-2.18 *

# avr [TAB]
avra           avr-c++filt    avr-gcc-4.2.2  avr-man        avr-readelf
avr-addr2line  avr-cpp        avr-gccbug     avr-nm         avr-size
avr-ar         avrdude        avr-gcov       avr-objcopy    avr-strings
avr-as         avr-g++        avr-gprof      avr-objdump    avr-strip
avr-c++        avr-gcc        avr-ld         avr-ranlib

/Ezek zömmel a avr-gcc.deb-ből jottek./

--
Desktop: 2.6.21-gentoo-r4 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
Laptop: 2.6.22-gentoo-r5 Mobile Intel(R) Pentium(R) 4 - M CPU 2.00GHz

Azert nem tettem ide, mert arrol a wikirol masoltam be kozvetlenul.


nyos@nyos:~/avr$ la
total 44
drwxr-xr-x   2 nyos 4096 2008-04-08 01:26 ./
drwxr-xr-x 113 nyos 4096 2008-04-08 20:15 ../
-rw-r--r--   1 nyos  162 2008-04-08 01:23 cimek.txt
-rwxr-xr-x   1 nyos  158 2008-04-08 01:26 comp.sh*
-rw-r--r--   1 nyos 2270 2008-04-08 01:25 peldaprogi.c
-rw-r--r--   1 nyos    0 2008-04-08 01:26 peldaprogi.c.lst
-rw-r--r--   1 nyos  901 2008-04-08 01:26 peldaprogi.hex
-rw-r--r--   1 nyos 8642 2008-04-08 01:26 peldaprogi.lst
-rwxr-xr-x   1 nyos 6363 2008-04-08 01:26 peldaprogi.out*
nyos@nyos:~/avr$ cat comp.sh
avr-gcc -g -o $1.out -mmcu=atmega88 -I /usr/avr/include/avr $1.c
avr-objcopy -j .text -O ihex $1.out $1.hex
avr-objdump -Sd -j .text -j .data $1.out > $1.lst
nyos@nyos:~/avr$ cat peldaprogi.c
#include <avr/io.h>         // Az I/O nevek definicioja
#include <avr/interrupt.h>  // Megszakitassal kezeljuk a soros portot

#define F_CPU 8000000       // A processzor orajele
#define BAUDRATE 9600       // Az atvitel sebessege
//calculate UBRR value
#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1)  // Kiszamitjuk a leosztas erteket

void USART_Init();          // A soros egyseg (USART) inicializalasa

int main(void)
   {
   int byte;
   DDRC=0x3F;                 // A C port adatiranya 1-ki, 0-be
   PORTC=0x01;                // A PORTC LSB legyen egy

   USART_Init();              // Inicializaljuk az USART-ot

   PORTC=0x03;
   sei();             // IT engedelyezese
   while(1)           // Vegtelen ciklus
      {
      }
   return 0;          // Ide soha nem jut el
   }

void USART_Init()
   {
                                //baud beállítása
   UBRR0L=UBRRVAL;              //low byte
   UBRR0H=(UBRRVAL>>8); //high byte
   UCSR0C=(0<<UMSEL01)|(0<<UMSEL00)|(0<<UPM01)|(0<<UPM00)|
                (0<<USBS0)|(0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);         //bellítjuk asinkron mód, 8 adatbit, 0 paritásbit, 1 stopbit
   UCSR0B=(1<<RXEN0)|(1<<TXEN0) |(1<<RXCIE0);                           //engedélyezzük a megszakítást ha fogadott egy bájtot
   }

// ide akkor ugrik ha fogadott egy teljes bájtot
// ez a megszakitast kiszolgalo rutin

ISR(USART_RX_vect)
   {
   char byte;
   byte=UDR0;                                                               // a fogadott bajtot betszi a byte nevu valtozoba

   if( (byte >= 'a' && byte <='z') || (byte >= 'A' && byte <= 'Z'))         // ha betu akkor
      {
      byte=byte^32;                                                         // megcsereli a mertet kicsibol nagyra ,  nagybol kicsibe
      }

   while ( !( UCSR0A & (1<<UDRE0)) );                                       // var ameddig kesz nem lesz a soros egyseg arra hogz uj bajtot kuldjunk
                                                                            // Na ilyet soha ne csinalj, mert kiszamithatatatlan lesz a progi, de most
                                                                            // kivetelesen elmegy
   UDR0=byte;                                                               // elkuldjuk az uj bajtot
   }

----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés

szia engem erdekelne, avn emailed megbeszelni?!

Ugyanebbe a hibába futottam bele. Érdemes beleolvasni a hibaüzenetben megjelölt log-fájlokba:

/var/log/portage/cross-avr-gcc-stage1.log -ben ott van a kulcs:


checking for correct version of gmp.h... yes
checking for correct version of mpfr.h... no
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.

# emerge dev-libs/mpfr

nekem szépen meg is oldotta.

hali en meg debian alatt siman egettem usb-s jtagice-vel, most valtottam distrot gentoora, beszamolok majd az elmenyeimrol, de gondolom itt sem lesz nagykunszt!
Ja ha valakit erdekel tudok adni nyaktervet usb-s jtagicehez meg leirasokat, firmware-t, csak utana kell epiteni! ~5k alatti osszegbol megvan :o)

kiprobaltam a gentoo-n is az avrzest, es sajnos nekem is csak gcc-avr-rel mukodott, amit debianbol szedtem le, aztan deb2targz-vel alakitottam a /usr-be ahogy Proci85 irta.

Nekem ez a crossdev -t avr-s jatek nagyon nem mukodott, pedig probaltam mindenfele kapcsoloval jatszani, na sebaj.

Ugy is FPGA-k, ARM-k kora ez mar :o)