Linux i AVR cz.1

Coraz więcej ludzi zaczyna używać systemów operacyjnych z rodziny Linux. Jednaj dla elektronika przesiadka z Windowsa na system Linux jest dosyć trudna, ze względu na brak specjalistycznego oprogramowania i brak opisów w języku polskim. Najczęstszym problemem jest programowanie kontrolerów. Jednak jak się okazuje jest to całkiem łatwe zadanie, a nawet jest szybsze niż w systemach Windows. Przedstawię w tym artykule, jak opanować zagadnienie instalacji i użytkowania oprogramowania, do programowania mikrokontrolerów AVR. Co jest potrzebne?

Potrzebny nam będzie:
-komputer z systemem Linux(ja używam dystrybucji Ubuntu, która jest teraz najpopularniejsza)

-programator AVR(najlepiej STK200, lub USBasp)

-kontroler do zaprogramowania

Instalacja pakietów

Do kompilacji najlepszym rozwiązaniem jest kompilator avr-gcc, a do zaprogramowani kontrolera najlepszy okazuje się program avr dude. Aby zacząć programowanie musimy zainstalować następujące pakiety: binutils-avr, gcc, gcc-avr, avr-libc, oraz avrdude. Najłatwiej zainstalować te pakiety poprzez Menadźer pakietów Synaptic.

Używanie oprogramowania

W celu zaprogramowania mikrokontrolera musimy wykonać trzy etapy: kompilacja, tworzenie pliku .hex, oraz zaprogramowanie kontrolera.

Kompilacja:

W tym etapie zostanie zamieniony plik z kodem programu w języku c na kod maszynowy. W tym celu używany programu avr-gcc. Aby go użyć wykonujemy polecenie:

avr-gcc -mmcu=kontroler plik_z_programem.c -o plik_wynikowy

-kontroler – to nazwa kontrolera, pod który ma być skompilowany program
-plik_z_programem.c – to nazwa pliku, który ma zostać skompilowany
-plik_wynikowy – w tym miejscu definiujemy nazwę pliku, który powstanie w wyniku kompilacji

Tworzenie pliku .hex:

W tym etapie zamieniamy plik, który powstał podczas kompilacji na plik .hex, który zostanie przekazany do programatora. A dokonujemy tego w ten sposób:

avr-objcopy -O ihex plik_wynikowy nazwa_pliku.hex

-plik_wynikowy – to plik, który uzyskaliśmy po kompilacji, a teraz chcemy go przetworzyć na plik .hex
-nazwa_pliku.hex – to plik który powstanie w tym etapie

Programowanie:

Teraz pozostało nam przesłać program do kontrolera. W tym celu użyjemy programu avrdude. Wywołujemy ten program poprzez polecenie:

avrdude -c nazwa_programatora -p nazwa_procesora -U flash:w:nazwa_pliku.hex

-nazwa_programatora – to nazwa urządzenia którego użyjemy do zaprogramowania kontrolera. I mogą to być: stk200, usbasp, stk500, oraz wile innych programatorów, ale one są już rzadziej spotykane. Programator stk500 jest o tyle kłopotliwy, że wymaga instalacji sterowników do układu ft232, a programatory stk200 i usbasp nie wymagają instalacji żadnych sterowników.
-nazwa kontrolera – to nazwa układu programowanego, a mogą to być:
m6450 = ATMEGA6450
m3250 = ATMEGA3250
m645 = ATMEGA645
usb1287 = AT90USB1287
usb1286 = AT90USB1286
usb647 = AT90USB647
usb646 = AT90USB646
t84 = ATtiny84
t44 = ATtiny44
t24 = ATtiny24
m2561 = ATMEGA2561
m2560 = ATMEGA2560
m1281 = ATMEGA1281
m1280 = ATMEGA1280
m640 = ATMEGA640
t85 = ATtiny85
t45 = ATtiny45
t25 = ATtiny25
pwm3 = AT90PWM3
pwm2 = AT90PWM2
t2313 = ATtiny2313
m168 = ATMEGA168
m88 = ATMEGA88
m48 = ATMEGA48
t861 = ATTINY861
t461 = ATTINY461
t261 = ATTINY261
t26 = ATTINY26
m8535 = ATMEGA8535
m8515 = ATMEGA8515
m8 = ATMEGA8
m161 = ATMEGA161
m32 = ATMEGA32
m6490 = ATMEGA6490
m649 = ATMEGA649
m3290 = ATMEGA3290
m329 = ATMEGA329
m169 = ATMEGA169
m163 = ATMEGA163
m162 = ATMEGA162
m644 = ATMEGA644
m324 = ATMEGA324
m164 = ATMEGA164
m16 = ATMEGA16
c128 = AT90CAN128
m128 = ATMEGA128
m64 = ATMEGA64
m103 = ATMEGA103
8535 = AT90S8535
8515 = AT90S8515
4434 = AT90S4434
4433 = AT90S4433
2343 = AT90S2343
2333 = AT90S2333
2313 = AT90S2313
4414 = AT90S4414
1200 = AT90S1200
t15 = ATtiny15
t13 = ATtiny13
t12 = ATtiny12
t11 = ATtiny11

W dalszej części będą zawarte informacje, jak ułatwić programowanie, i co robić gdy mamy projekt składający się z większej ilości plików.

Komentarze do „Linux i AVR cz.1

  1. Gdyby ktoś bał się trybu tekstowego, to dodam tylko, że całość pod linuxem dobrze się pisze przy użyciu Eclipse. Do eclipse instaluje się plugin dla avr. Całość dobrze się komponuje z avrdude i wszystko robimy kilkkoma kliknięciami

  2. @gaza
    A po co kombaj taki jak Eclipce gdzie trzeba do tego „aż” kilka kliknięć ?

    Ja używam zwykły normalny edytor tekstu *Geany* a w osobym terminalu tylko „aż” jednym wciśnieciem klawisza enter uruchamiam skrypt który kompiluje i flashuje mi procek prościej się nie da żadym klikaniem myszką.

    • Też tak uważam, czas uruchamiania się Eclipse już mnie wystarczająco zniechęca. Dodatkowo kompilacja z linii poleceń trwa krócej, ponieważ jest robione tylko to co jest konieczne, a w Eclipse jest uruchamiany program make, który jednak wykonuje więcej czynności. Ale przyznam, że przy bardzo dużych projektach Eclipse może się okazać lepszym rozwiązaniem.

  3. Gorąco polecam zautomatyzować sobie edytor Geany. Można dodać pozycje do menu, i uzyskuje się całkiem sprawne IDE. Taka pisanina nie ma sensu, już szybciej wychodzi makefile’m.
    Po drugie, to avrdude i stk500/USBasp/Arduino przez COMa to nieładne połączenie. Zawsze mi w tym coś nie pasowało, czasami trzeba było zresetować komputer i chip nagle stawał się z powrotem wykrywalny. Z kompilatorów zawsze działających to Arduino przez COM-USB oraz programator BSD na porcie równoległym (nie zabawce do podłączania drukarki, tylko prawdziwym porcie równoległym). Programator BSD działa zawsze i wszędzie o ile tylko masz roota.

    • Lubię lekkie automaty, ale zawsze polecam poznanie jak one działają. Mam na stronie udostępnione dwa moje programy które załatwiają to co tutaj opisałem, używam ich przy większości projektów, ale często też wpisuje proste polecenia, bo jest szybciej i łatwiej. Może mam dziwne spojrzenie na taką pracę, ale dla mnie jest to skutecznie i staram się przekazać, że też tak można.
      Restart komputera to jest dobra metoda, załaduje sobie na nowo sterowniki i w większości przypadków zadziała.
      Jeśli chodzi o programator to używam cały czas stk200, bo nigdy mnie nie zawiódł, a jego budowę też opisałem na stronie.

  4. Przydałoby się wspomnieć też o włączeniu optymalizacji, bo o tym nie wiedziałem i przy kompilacji pojawiły się ostrzeżenia dotyczące funkcji delay.h. Dodanie opcji -O2 rozwiązało problem, a rozmiar prostego programu do migania na przemian diodami zmalał z 3,5 kb do 500 bajtów 🙂

    • Mam w planach szerszy artykuł o avrdude i kompilatorach, więc wszystko będzie. Te ostrzeżenia można pomijać, ponieważ jest to tylko informacja, że delay powoduje problemy w sprawnym działaniu programu.

  5. Początkowo zignorowałem i układ działał tak samo, ale zacząłem szukać po forach i widzę, że za ignorowanie ostrzeżeń można dostać burę, bo jest to jeden ze stopni piekła początkujących, więc na przyszłość będę pilnować, by było ok 🙂
    Co do kompilatorów to przydałby się poradnik jak pod Linuxem zorganizować sobie wszystko, by mieć wygodne narzędzie do pisania, kompilowania i wgrywania programów. Wiem że można skonfigurować Geany i wtedy jest świetnym narzędziem do tego, tylko nie udało mi się znaleźć jakichś szczegółowych instrukcji jak to zrobić.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.