Кросс-средства разработки для AVR

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Кросс-средства разработки для AVR

Post by SfS »

Средства для сборки - все свободные. GNUMake - стандартный.

Остальное вот:

avr-binutils - ассемблер, линкер и другие утилиты.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/binutils/
ftp://gatekeeper.dec.com/pub/GNU/binutils/

avr-gcc - компилятор С.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/
ftp://gatekeeper.dec.com/pub/GNU/gcc/

avr-libc - стандартная библиотека С для AVR.
http://www.amelek.gda.pl/avr/libc/

uisp - программа для загрузки кода во flash-память микроконтроллера через LPT-порт ПК.
http://savannah.nongnu.org/download/uis ... 207.tar.gz.

Кроме того, все эти программы (кроме uisp) входят в дистрибутивы ALT Linux и их можно скачать с сайта компании http://www.altlinux.ru/ или его зеркал.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:avr-binutils - ассемблер, линкер и другие утилиты.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/binutils/
ftp://gatekeeper.dec.com/pub/GNU/binutils/

avr-gcc - компилятор С.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/
ftp://gatekeeper.dec.com/pub/GNU/gcc/
Чего-то я не понял как по этим ссылкам выцарапывать avr-binutils и avr-gcc???
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
SfS wrote:avr-binutils - ассемблер, линкер и другие утилиты.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/binutils/
ftp://gatekeeper.dec.com/pub/GNU/binutils/

avr-gcc - компилятор С.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/
ftp://gatekeeper.dec.com/pub/GNU/gcc/
Чего-то я не понял как по этим ссылкам выцарапывать avr-binutils и avr-gcc???
Хм - поддержка avr в исходниках сидит, в том числе и в моей слаквари, осталось понять как ее в бинарники затолкать, не сломав существующий gcc :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:
SfS wrote:avr-binutils - ассемблер, линкер и другие утилиты.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/binutils/
ftp://gatekeeper.dec.com/pub/GNU/binutils/

avr-gcc - компилятор С.
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/
ftp://gatekeeper.dec.com/pub/GNU/gcc/
Чего-то я не понял как по этим ссылкам выцарапывать avr-binutils и avr-gcc???
Хм - поддержка avr в исходниках сидит, в том числе и в моей слаквари, осталось понять как ее в бинарники затолкать, не сломав существующий gcc :)
Ага - нашел ( http://slacy.com/avr/compiler.html ):

configure --target=avr --program-prefix="avr-"
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Ага - нашел ( http://slacy.com/avr/compiler.html ):

configure --target=avr --program-prefix="avr-"
Обломс - gcc-3.3.4 не собирается :(
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote: Ага - нашел ( http://slacy.com/avr/compiler.html ):

configure --target=avr --program-prefix="avr-"
Обломс - gcc-3.3.4 не собирается :(
А вот gcc-3.3.2 с гейткипера собрался!
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:
Shaos wrote: Ага - нашел ( http://slacy.com/avr/compiler.html ):

configure --target=avr --program-prefix="avr-"
Обломс - gcc-3.3.4 не собирается :(
А вот gcc-3.3.2 с гейткипера собрался!
Теперь avr-libc-20020203 не хочет собираться :-?

Code: Select all

In file included from ../../../../common/macros.inc:18,
                 from ../../../../libc/pmstring/memcpy_P.S:2:
../../../../include/io-avr.h:75:4: warning: #warning "device type not defined"
../../../../libc/pmstring/memcpy_P.S: Assembler messages:
../../../../libc/pmstring/memcpy_P.S:17: Error: constant value required
../../../../libc/pmstring/memcpy_P.S:17: Error: constant value required
../../../../libc/pmstring/memcpy_P.S:18: Error: constant value required
../../../../libc/pmstring/memcpy_P.S:18: Error: constant value required
../../../../libc/pmstring/memcpy_P.S:37: Error: constant value required
../../../../libc/pmstring/memcpy_P.S:37: Error: register r24, r26, r28 or r30 required
make[4]: *** [memcpy_P.o] Ошибка 1
make[3]: *** [all-recursive] Ошибка 1
make[2]: *** [all-recursive] Ошибка 1
make[1]: *** [multi-do] Ошибка 1
make: *** [all-multi] Ошибка 2
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Теперь avr-libc-20020203 не хочет собираться :-?
Пришлось ставить более старый binutils с gcc!
После перебора нескольких версий сработала вот такая конфигурация:
binutils-2.13.2.1
gcc-3.2.3
avr-libc-20020203
Last edited by Shaos on 07 May 2005 05:57, edited 2 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

А вот какой размер инта тут?
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

С удивлением и радостью узнал что я тут модератор)

Отвечаю на все вопросы пока коротко. Потом наверное нарисую более подробную доку.

Как собрать кросс-средства для AVR ?
Собирать все следует именно в том порядке как тут указано!

1. Установка: GNU binutils
Пакет binulils содержит низкоуровневые средства необходимые для создания объектных файлов. Он включает в себя ассемблер AVR (avr-as), линкер (avr-ld), библиотеку средств управления библиотеками (avr-ranlib, avr-ar), программы для создания исполняемых модулей загружаемых в память программ микроконтроллера (avr-objcopy), дизассемблер(avr-objdump) и утилиты avr-strip и avr-size.

Для установки пакета binutils выполните следующие команды:
bunzip2 -c binutils-2.11.2.tar.bz2 | tar xvf -
cd binutils-2.11.2
./configure --target=avr --prefix=/usr/local/atmel
make
make install

Добавьте строку /usr/local/atmel/lib в файле /etc/ld.so и обновите кэш линкера командой /sbin/ldconfig.

2. Установка: AVR gcc
avr-gcc - собственно компилятор С.

Для его установки используйте следующие команды:

tar zxvf gcc-core-3.0.3.tar.gz
cd gcc-core-3.0.3
./configure --target=avr --prefix=/usr/local/atmel --disable-nls --enable-language=c
make
make install



3. Установка: Библиотека AVR C
Библиотека AVR C до сих пор находится в стадии разработки и поэтому процесс установки может немного изменяться от версии к версии. Я рекомендую использовать версию указанную выше в таблице, для приведенной мной процедуры установки. Именно эту версию я использовал при создании программ описанных в этой и последующих статьях.

Установите следующие пременные среды (синтаксис bash):
export CC=avr-gcc
export AS=avr-as
export AR=avr-ar
export RANLIB=avr-ranlib
export PATH=/usr/local/atmel/bin:${PATH}

./configure --prefix=/usr/local/atmel --target=avr --enable-languages=c --host=avr
make
make install



Установка: Программатор

Программатор предназначен для загрузки исполняего кода в память программ микроконтроллера.

Наилучшим образом для этих целей подходит uisp для Linux. Он может быть использован прямо из make-файла. Вам только нужно будет добавить строку "make load" в make-файл и созданный Вами код будет загружен в микроконтроллер сразу после компиляции.

uisp устанавливается следующими командами:

tar zxvf uisp-20011025.tar.gz
cd uisp-20011025/src
make
cp uisp /usr/local/atmel/bin


Заметьте - все команды для AVR начинаются с avr- (avr-gcc, avr-ld и т.д.) и никак не могут повлиять на установленные в системе gcc, ld и т.п.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote:А вот какой размер инта тут?
Как и у всех 8биток - int - 16 бит, char - 8бит, long - 32 бита
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Заодно приведу распайку кабеля для программирования программой uisp (LPT порт - стандартный разъем, со стороны AVR - номера выводов указаны для NedoPC-90):

pin on AVR Pin on parallel port (LPT)
MOSI (1) D0 (2)
MISO (2) Busy (11)
SCK (3) Strobe (1)
Reset (4) Init (16)
GND(6) GND (18)
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote:А вот какой размер инта тут?
Как и у всех 8биток - int - 16 бит, char - 8бит, long - 32 бита
Это хорошо, а то рассуждая в соответствии с буквой стандарта int теоретически должен быть 8-битным, т.е. соответствовать размеру одновременно обрабатываемого слова в процессоре :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote: Как собрать кросс-средства для AVR ?
Собирать все следует именно в том порядке как тут указано!
Вроде у меня все проще получилось:
1) binutils-2.13.2.1
./configure --target=avr --program-prefix="avr-"
make
make install
2) gcc-3.2.3
./configure --target=avr --program-prefix="avr-" --enable-languages=c
make
make install
3) avr-libs-20020203
./doconf
./domake
./domake install
причем все хозяйство устанавливается в /usr/local/avr а бинарники с префиксом avr- в /usr/local/bin и менять PATH и вообще вручную устанавливать какие-либо переменные окружения вроде не требуется
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: причем все хозяйство устанавливается в /usr/local/avr а бинарники с префиксом avr- в /usr/local/bin и менять PATH и вообще вручную устанавливать какие-либо переменные окружения вроде не требуется
Это так, если в путях есть /usr/local/bin. Иначе надо прописать путь к компилятору