Главная » Микроконтроллеры
Призовой фонд
на октябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Похожие статьи:


Программирование МК AVR в ОС Ubuntu

Поставил я себе такую ОС - Ubuntu 9.04. Конечно же особо в ней в игрушки не поиграешь годится она, в основном, только для работы. Ну и решил я попробовать в ней программировать контроллеры AVR.
На просторах интернета, в принципе, достаточно много всякой всячины которая поможет в освоении программирования AVR под Linux.
Но как обычно я столкнулся с тем, что много всего ну ничего толком. Везде советуют ставить Eclipse или KontrollerLab (как оно меня достало).
Ну вы конечно же догадались, что что-то у меня с ними пошло не так как хотелось бы. В общем методом догадок и высокоинтеллектуального тыка я стал экспериментировать. И вот до чего я дошел...

Открываем менеджер пакетов Sinaptic и в поиске пишем gcc-avr. Отмечаем для установки gcc-avr, avr-libc, avrdude.
Можно конечно же и так:

$sudo apt-get install gcc-avr avr-libc avrdude

Ну для старта все что нужно вроде бы установили.

Далее создадим в корне системы папочку под названием AVR (путь к папке: /AVR)
В качестве редактора можно использовать nano (в терминале прописываем nano),
но я пользовался обычным текстовым редактором gedit (в терминале прописываем $sudo gedit)
В нем напишем свой код ну например:

#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>

int main(void)
{
DDRx=0xff;
while (1)
{
PORTx=0xff;
_delay_ms(100);
PORTx=0x00;
_delay_ms(100);
}
}

Далее сохраняем наш текст с расширением main.c в папочке AVR (путь к файлу: /AVR/main.c).

Теперь переходим к компиляции кода.
Запустим терминал и пропишем такой код:

$avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -o /AVR/main.o /AVR/main.c

Долго искал нужную строку, в итоге взял ее просто из WinAvr :).

avr-gcc - компилятор, -mmcu=наш контроллер(сейчас atmega8), -DF_CPU=тактовая частота в Гц, -Os-Оптимизатор кода, -o-OUT, /AVR/main.o-выходной файл с расширением .o который получим из .c, /AVR/main.c -наш си файл.

Скриншот терминала

Не забываем работать под root иначе система не пустит.
Enter и если зайдем в наш каталог /AVR то увидим файлик с расширением .o.

Далее в терминале (он же консоль) введем:
$avr-objcopy -O ihex /AVR/main.o /AVR/main.hex

Ну долго объяснять не буду просто скажу, что перегоняем наш файл main из main.o в main.hex.
Ну вот наша прошивка готова к заливке в нашу ATmega8.

Нам понадобится конечно же программатор.
Использовать будем программатор stk500v2 by Petka (Работает просто отлично заливает мгновенно, не отваливается от порта, правда использовал я вместо FT232 CP2102. Огромное спасибо за схемку и прошивки.)

Откроем терминал и запустим утилиту avrdude которая будет у нас работать под консолью:
$avrdude -c stk500v2 -pm8 -P /dev/ttyUSB0 -U flash:w:/AVR/main.hex

Скриншот терминала

Заливка программы в контроллер

В итоге все получилось!
Конечно же программу залил другую и обьем ее составил 5кБ, но заливалось это все меньше 4-х секунд.
Как известно, для avrdude существуют и GUI оболочки, но это уже совсем другая история которую я расскажу в другой статье.:)
P.S. С AVR910 говорят, что работает отлично но сам не пробовал.

Теги:

Ефимов Валентин Опубликована: 2010 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (9) | Я собрал (0) | Подписаться

0
Sergijoo #
Работать под рутом это самоубийство, не советуйте таких глупостей.
Что бы работало всё без рута достаточно создать папку avr не в корне системы а в домашней папке, типа /home/ваш_логин/avr/ и всю работу проводить в ней.
Ответить
0
Александр #
Работать под рутом это самоубийство, не советуйте таких глупостей.
Что бы работало всё без рута достаточно создать папку avr не в корне системы а в домашней папке, типа /home/ваш_логин/avr/ и всю работу проводить в ней.

Абсолютно с Вами согласен. Иначе при ошибочной команде может настать кирдык всей системе, или еще чего хуже, через дырку в безопасности программы будет получен доступ к личным данным, а также к настройкам системы, например файрволлу. Тем более, что для компиляции НЕ НУЖНО быть рутом.
Ответить
0
Rhime #
Извините за грубость, но я трое суток рылся в интернете чтобы заставить это все дело работать.

Поделитесь опытом, а не критикой.
Ответить
0
вася #
через дырку в безопасности программы будет получен доступ к личным данным, а также к настройкам системы
Кем он будет получен?
Ответить
0
Егор #
avrdude -c stk500v2 -pm8 -P /dev/ttyUSB0 -U flash:w:/AVR/main.hex

Я что-то не пойму, объясните мне где здесь фьюзы выставляются?
Ответить
0
Артур #
А для обращения к LPT порту, да и к устройствам в целом нужно быть рутом, либо дать права обычному пользователю тыкать устройство. Но тогда этот пользователь запросто заломает его. Так что...
Ответить
0
Женя #
Что делать подскажите! У меня вот это вылезает:
root@hrust:~# avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -o /AVR/main.o /AVR/main.c
/AVR/main.c: В функции ‘main’:
/AVR/main.c:7: ошибка: ‘DDRx’ не описан (первое использование в этой функции)
/AVR/main.c:7: ошибка: (Сообщение о неописанном идентификаторе выдается один раз
/AVR/main.c:7: ошибка: для каждой функции, в которой он используется.)
/AVR/main.c:10: ошибка: ‘PORTx’ не описан (первое использование в этой функции)
root@hrust:~#
Ответить
0
Алексей #
Вместо "x" нужно подставить букву порта, но пример не имеет смысла, зачем поднимать сразу 5 или 6 ножек?
Ответить
0
patriot745 #
avrdude -c stk500v2 -pm8 -P /dev/ttyUSB0 -U flash:w:/AVR/main.hex
А как это будет выглядеть при использовании LPT порта?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Солнечная панель 10Вт 12В поликристаллическая UNI-T UT-61A
вверх