Portál AbcLinuxu, 1. května 2025 04:41
Občas vyrobím nějaký bastl s jednočipem AVR. Po delší době jsem se potřeboval k těmto malým švábům vrátit a zase něco spáchat. Tentokrát již byly základní balíčky (avr-binutils, avr-gcc, avr-libc) součástí mé distribuce, tak jsem je jednoduše nainstaloval. Ale ouha, začaly se objevovat problémy: avr-gcc
(ve verzi 4.1, či 4.2) někdy vyprodukovalo špatný kód (například nedbalo na to, že by i/o porty měly být volatile
). Navíc kód vyprodukovaný pomocí gcc 4.x byl vždy větší, než s gcc 3.4.x. Rozhodl jsem se tedy pro návrat k řadě 3.4.
Nakonec, po nějakém laborování, jsem přišel na kombinaci která mi funguje dobře. Je jí poslední verze binutils, polední verze gcc z řady 3.4, opatchovaná tak, aby si rozumněla s novějšímy MCU (jako je např. ATtiny2313 a poslední verze avr-libc. Zde je jednoduchý skript (založený na tomto návodu), který vše nainstaluje do systému.
#!/bin/sh # binutils wget http://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2 tar xvjf binutils-2.17.tar.bz2 ( cd binutils-2.17 mkdir obj-avr cd obj-avr ../configure --prefix=/usr --target=avr --disable-nls make make install ) # avr-gcc wget http://gcc-ca.internet.bs/releases/gcc-3.4.6/gcc-3.4.6.tar.bz2 tar xvjf gcc-3.4.6.tar.bz2 ( cd gcc-3.4.6 curl 'http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/devel/avr-gcc/files/patch-newdevices?rev=1.12;content-type=text%2Fplain' > patch-newdevices.patch patch -p1 < patch-newdevices.patch mkdir obj-avr cd obj-avr ../configure --prefix=/usr/ --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2 make make install ) # avr-libc wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.4.6.tar.bz2 tar xvjf avr-libc-1.4.6.tar.bz2 ( cd avr-libc-1.4.6 ./configure --prefix=/usr --build=`./config.guess` --host=avr make make install )
Tiskni
Sdílej:
vim ~/.emacs
if [ -f gcc-3.4.6.tar.bz2 ];
then
echo " file exist";
else
wget http://gcc-ca.internet.bs/releases/gcc-3.4.6/gcc-3.4.6.tar.bz2;
fi
pat pat # make load
/opt/cdk4avr/bin/avr-gcc -g -mmcu=attiny2313 -Wall -Wstrict-prototypes -Os -mcall-prologues -o helloworld.out -Wl,-Map,
/opt/cdk4avr/lib/gcc/avr/3.4.5/../../../../avr/bin/ld: cannot open map file : není souborem ani adresářem
make: *** [helloworld.out] Error 1
Druhy, vyse zmineny clanek, jsem zatim popravde nezkousel, protoze je take uz par let stary a predpokladam, ze se zase veci zmenili.. Takze bych se rad zeptal, co a jak pouzit k uploadu a rozbehnuti programu na ATTiny2313?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.