В связи с необходимостью обновиться пробую следующую конфигурацию:
1) binutils-2.14
./configure --target=avr --program-prefix="avr-"
make
make install
2) gcc-3.3.2
./configure --target=avr --program-prefix="avr-" --enable-languages=c,c++
make
make install
3) avr-libs-1.0.5 (see http://download.savannah.nongnu.org/releases/avr-libc/)
./doconf
./domake
./domake install
все автоматически устанавливается в /usr/local/avr, а бинарники с префиксом avr- в /usr/local/bin (менять PATH и вообще вручную устанавливать какие-либо переменные окружения не требуется), для нормальной сборки AVROS надо сделать символическую ссылку /usr/include/avr, направленную на /usr/local/avr/include
Кросс-средства разработки для AVR
Moderator: Shaos
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Novelist
- Posts: 49
- Joined: 10 Jan 2006 07:54
- Location: St.Petersburg, Russian
Идёшь на homepage, там написано как к cvs подключиться.Shaos wrote: Чего-то я не понял как по этим ссылкам выцарапывать avr-binutils и avr-gcc???
Выгребаешь релиз и собираешь с нужными опциями. Нужно иметь
как минимум msys, лучше cygwin, лучше linux.
Для виндов можно легко нагуглить собранное.
Для линуха в каком-нибудь дебиане всё есть. В микродистрибутивах
см. выше.
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Дык в линухе я сижу - и давно уже все собралfk0 wrote:Идёшь на homepage, там написано как к cvs подключиться.Shaos wrote: Чего-то я не понял как по этим ссылкам выцарапывать avr-binutils и avr-gcc???
Выгребаешь релиз и собираешь с нужными опциями. Нужно иметь
как минимум msys, лучше cygwin, лучше linux.
Для виндов можно легко нагуглить собранное.
Для линуха в каком-нибудь дебиане всё есть. В микродистрибутивах
см. выше.

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
можно ли побороть?
Попробовал покомпилировать свои простенькие програмульки, и вот что заметил: объявления переменных с помощью uint8_t (без указания, что буду исползовать в качестве переменной регистр) оперируют 16бит словами, в том числе при побитовом "И" явно указанного регистра и константы... Что-то мне это совсем не нравится.
Может я что не так делаю?
Пробовал указывать ключ -mint8, но тогда происходит "глюк" при подключении stdint.h (вроде так), и ничего не компилируется.
Ну, а в общем и целом, работать удобно.
Разобрался с uisp, которому, как оказалось, требуется явное указание, что проц нужно почистить. А то по началу долго парился - "вроде должно работать, но не хочет"
И еще один попутный вопрос: кто что может посоветовать из средств эмуляции-отладки?

Пробовал указывать ключ -mint8, но тогда происходит "глюк" при подключении stdint.h (вроде так), и ничего не компилируется.
Ну, а в общем и целом, работать удобно.

Разобрался с uisp, которому, как оказалось, требуется явное указание, что проц нужно почистить. А то по началу долго парился - "вроде должно работать, но не хочет"

И еще один попутный вопрос: кто что может посоветовать из средств эмуляции-отладки?
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Re: можно ли побороть?
Как ты это заметил ?jdigreze wrote:Попробовал покомпилировать свои простенькие програмульки, и вот что заметил: объявления переменных с помощью uint8_t (без указания, что буду исползовать в качестве переменной регистр) оперируют 16бит словами, в том числе при побитовом "И" явно указанного регистра и константы... Что-то мне это совсем не нравится.![]()
Вообще в С любая целая константа считается типа int. Вероятно, язык С принудительно приводит всё к int ?
Попробуй поставить оптимизацию по скорости - ключик -Os.
Кстати, а если вместо uint8_t использовать signed char ? Не пробовал ?
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Re: можно ли побороть?
avr-gcc -g -mmcu=atmega16 -c my.c - компилируемSfS wrote:Как ты это заметил ?
avr-gcc -g -mmcu=atmega16 -o my.elf my.o - получаем эльфа
avr-objdump -h -S my.elf > my.lst - из эльфа получаем лист
дык вот в этом листе и просматривал, как оно компилирует...
Это мы в курсеSfS wrote:Вообще в С любая целая константа считается типа int. Вероятно, язык С принудительно приводит всё к int ?

Вот-вот! Это оно самоеSfS wrote:Попробуй поставить оптимизацию по скорости - ключик -Os.

Достаточно поставить в первой строчке -O1
Как пример без ключика -Os:
DDRA = 0xFF;
получаем:
ldi r30, 0x3A
ldi r31, 0x00
ldi r24, 0xFF
st Z, r24
Теперь ставим ключик -O1, и получаем:
ldi r25, 0xFF
out 0x1a, r25
Вот это уже другой коленкор

Неа... Да уже и не надо. Хотя может быть позже попробую.SfS wrote:Кстати, а если вместо uint8_t использовать signed char ? Не пробовал ?
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
При запуске uisp чего-то в Slackware 11.0 с ядром 2.6.17.13 не срастается:SfS wrote:Заодно приведу распайку кабеля для программирования программой 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)
/dev/parport0: No such file or directory
Failed to open ppdev.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Вспомнил:Shaos wrote:При запуске uisp чего-то в Slackware 11.0 с ядром 2.6.17.13 не срастается:
/dev/parport0: No such file or directory
Failed to open ppdev.
rmmod lp
modprobe ppdev
Надо чтоли загрузочные скрипты поправить чтобы каждый раз мучительно не вспоминать чего же надо сделать, чтобы LPT поюзать...
Я тут за главного - если что шлите мыло на me собака shaos точка net