Програмування мікроконтролерів 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 кажуть, що працює відмінно, але сам не пробував.

Top