[Programowanie] Programowanie AVR w Linux

Autor Wiadomość
Kocisko 



Posty: 90
Pomógł: 3 razy
Otrzymał 12 piw(a)
Skąd: Jelenia Góra
Programuję w:
Bas,C,C++
Wysłany: 19-06-2010, 00:22   [Programowanie] Programowanie AVR w Linux

Programowanie mikrokontrolerów w Linuksie? Czemu nie!
Czy to jest proste? Oczywiście!
Czy to jest legalne? Jak najbardziej!

Jeśli Linux jest systemem, z którego korzystasz na co dzień, lub planujesz przesiadkę na ten system, to chwała Ci za to. Tym bardziej, że umożliwia on wykonanie wielu czynności „dla których” ciągle pozostajesz przy Windowsie.
Użytkownicy legalnego dziecka Microsoftu mogą ten temat potraktować jako ciekawostkę. Piratów za to gorąco zachęcam do zapoznania się z pingwinowym światem.

Zanim przejdę do meritum pozwolę sobie wtrącić pewną kwestię:
Dlaczego Linux?
Głównie dla tego, że zapewne Twoja praca przy komputerze oscyluje w obszarze surfowania po internecie, pisania w Wordzie i oglądania filmów. Dodatkowo, z oczywistych względów, możesz być zainteresowany programowaniem i projektowaniem układów elektronicznych.
Jeśli to co napisałem jest prawdą, to właściwie co trzyma Cie przy Windowsie? NIC!
Linux daje Ci w 99% darmowe oprogramowanie, a w tym oryginalne oprogramowanie, które znasz (Firefox, Eagle, KiCad...), doskonałe zamienniki programów z których korzystasz nie legalnie (Microsoft Office- OpenOffice, PhotoShop- Gimp, 3DStudioMax- Blender, AutoCad- QCAD, Inventor-FreeCad... )
Wiele gier chodzi na emulatorach Wine i PlayOnLinux.

Co zatem zrobić żeby programować w Linux?
Po pierwsze zacząć z nim przygodę wybierając jedną spośród nie zliczonej liczby dystrybucji.
Po drugie oswoić się z systemem
Po trzecie.. przejść dalej :)

Jeśli interesuje Cię BASCOM istnieje cień szansy że uda się go uruchomić za pomocą emulatora systemu Windows, o nazwie Wine.

Jeśli interesuje Cię programowanie w języku C, to masz dwa wyjścia:

Pierwsze: Kroczyć drogą twardych linuxowych wyjadaczy. Ściągnąć kompilator, pisać w jakimś edytorze tekstu, oraz kompilować z kosoli.

Drugie: Wersja dla normalnych zjadaczy chleba:

Pierwsze co musimy zrobić, to ściągnąć odpowiednie pakiety. Cały proces pokażę na przykładzie systemu Linux Ubuntu.

Otwieramy Menadżer Pakietów Synaptic (System/Administracja/Menadżer Pakietów Synaptic)
Odszukujemy następujące pakiety:
Bibliotekę: AVR-Libc
Kompilator: GCC
Narzędzie: Binutils
Programatory: UISP i AvrDude



Jeśli przyjrzałeś się zdjęciu zobaczyłeś podświetlony pakiet Kontrollerlab.
Najprawdopodobniej tego pakietu nie znajdziesz w repozytoriach, więc będziesz musiał go ściągnąć z internetu.
W tym celu wchodzimy na STRONĘ na której zapoznasz się z programem. Tutaj przechodzimy do sekcji Download i ściągamy wersję oprogramowania przeznaczoną dla Twojego systemu. W moim przypadku „Ubuntu binary”
Jeśli korzystasz z Linuxa Ubuntu, lub Ubuntu podobnego (Linux Mint), lub jakiegoś, którego przodkiem jest Debian, to masz szczęście :) .
Ściągnięty przez Ciebie pakiet ma końcówkę .deb, a zatem zostanie rozpakowany i automatycznie zainstalowany przez instalator pakietów Gdebi (lub inny).
Dokonasz tego przechodząc do miejsca pobierania (standardowo Miejsca/Pobrane) i klikając PPM na pakiecie. Następnie wybierasz instalator pakietów i klikasz „Zainstaluj Pakiet”.


Jeśli wszystko zostało zainstalowane to, chociaż Linux tego nie wymaga, można zrestartować system :) .

OK! Jesteś już gotowy do pierwszego starcia z programowaniem.

Odpalasz Kontrollerlab (Programy/Programowanie/Kontrollerlab)

Polecam skorzystać z genialnej właściwości Linuxa, czyli wielu pulpitów.



Jak widzimy program składa się z modułów, belki magicznych przycisków, oraz zbioru menu.
Jest to kombajn programistyczny umożliwiający nam pracę podobną do takiej jaką poznać można chociażby w AVR Studio. Dodatkowo jednak wyposażony jest w przyjazny w użytkowaniu terminal do komunikacji szeregowej z procesorem.

Pracę z programem zaczynamy standardowo od utworzenia nowego projektu (Project/New Project).
Naszym oczom ukaże się sympatyczne okienko (jak wszystkie w Linuxie :] )



Tutaj oczywiście wybieramy folder oraz tworzymy projekt. (Uwaga- wszystkie operacje wykonujemy pojedynczym kliknięciem..)
Następnie Tworzymy nowy plik (File/New/New).



Wyieramy rodzaj pliku, nadajemy mu nazwę i po utworzeniu mamy chwilę na WTF... bez nerwów, nasz nowy pliczek schował się troszkę za modułem pamięci.



Jest zmniejszony, więc należy go zmaksymalizować, a następnie kliknąć „strzałkę”.



Tym sposobem oddzieliliśmy plik kodu źródłowego od reszty programu. Teraz okienko z kodem możemy wrzucić sobie na inny pulpit i delektować się wygodą pracy (Tego nie da się opisać.. tego trzeba spróbować, lub zobaczyć np. tutaj ).



Zawartość okna oczywiście została wpisana przeze mnie.

Utworzyliśmy projekt i zaczynamy pracę. Teraz należy ustawić właściwości projektu i programator.
Po pierwsze klikamy ikonę klucza pod drzewkiem projekty, lub wchodzimy Project/Configure Projekt.



Tutaj ustawiamy rodzaj procesora i jego taktowanie. W zakładce compiler możemy dodatkowo ustawić wartość optymalizacji.

Następnie konfigurujemy programator klikając ikonę klucza koło flagi i rakiety, lub wchodzimy Project/ Configure Programmer.
Tutaj ustalamy czy korzystać będziemy z UISP czy z AvrDude, a następnie konfigurujemy wybrane przez nas narzędzie. (Ja na przykład korzystam z Programatora STK200 i UISP).





Kiedy wszystko jest gotowe można pisać i kompilować.
Interesujące nas narzędzia zaczynają się na prawo od sekcji lupek i są to po kolei:
Compile file, Build, Rebuild all, Erase device, upload, upload hex file, download, ignite, fuses.

Dla pełnego odlotu, czyli kompilacji z automatycznym wgraniem programu, wykorzystamy oczywiście rakietę :)

Pozostało jedynie napisać program i wgrać do pamięci Twojego procesora. Powróć zatem do okna swojego programu i zwróć uwagę na właściwości Kontrollerlaba .
W przeciwieństwie do AVR Studio, które możesz znać, program ten poza kolorowaniem składni zaznacza wcięcia, pokazuje pary klamerek {} oraz po naciśnięciu klawisza F11 (lub zaznaczeniu opcji w View) numeruje wiersze.

Teraz możesz napisać program i go skompilować.

Jeśli kompilacja przebiegła pomyślnie i udało Ci się wrzucić program do procesora to zostałeś „odpicowany” i od teraz możesz cieszyć się w pełni legalnym, i przyjemnym programowaniem.

Jeśli coś poszło nie tak....
No cóż.. może się zdarzyć, że kompilator nie znajdzie standardowych plików nagłówkowych, np. „io.h”.
Nie bój nic! Oznacza to że biblioteki są nie tam gdzie powinny. Najprostszy sposób to przekopiować je na miejsce.
Wchodzimy w Komputer/ System Plików/usr/lib.
Patrzymy czy jest tam katalog „avr” i katalog „gcc”.
Zaglądamy do avr/include. Są potrzebne biblioteki? Jak tak to super.
Teraz zaglądamy do gcc/avr/4.3.3/include. Są biblioteki? Jak nie to już wiesz co robić ;)
Jeśli w żadnym z tych miejsc nie ma bibliotek to zainstaluj ponownie pakiety.

Hola hola.. ale nie mogę skopiować... :(
To jest system przeciw destrukcyjny Linuxa. Nic nie zrobisz w katalogach systemowych jeśli nie masz uprawnień roota. Jeśli jesteś nowy w linuxie to gwoli ścisłości zdejmę z Ciebie efekt WTF. System linux daje absolutnie nie ograniczone możliwości pracy. Te nie ograniczone możliwości muszą jednak być trzymane w ryzach, aby zwykły szary użytkownik najzwyczajniej w świecie nie popsuł systemu. Dla tego właśnie praca w linuksie podzielona jest na warstwę pracy roota (administratora) i usera. Standardowo pracujesz jako user, a jeśli znasz hasło to w dowolnej chwili możesz przejść do pracy jako administrator, czyli kolo, który może wszystko... głównie oczywiście w owianej legendami i straszącej dzieci „konsoli”.
Aby usprawnić naszą pracę i ograniczyć korzystanie z tego a-fe narzędzia musisz je choć raz dotknąć. Wybierz Programy/Akcesoria/Terminal.
Otworzy Ci się okno konsoli w którym wpiszesz:
Kod programu: Zaznacz cały
sudo apt-get install nautilus-gksu


Następnie podasz hasło roota i zainstalujesz przesympatyczny dodatek do przeglądarki plików Nautilus, z której na 99% aktualnie korzystasz :)

Po wykonaniu tej operacji powrócisz do wspomnianych wcześniej katalogów avr i gcc. Tam przekopiujesz zawartość avr/include do gcc/avr/4.3.3/include wcześniej otwierając ten drugi poprzez PPM i „Otwórz jako administrator”.

Teraz kiedy biblioteki są na swoim miejscu kompilacja powinna przebiec bezproblemowo.
Przy okazji dowiedziałeś się gdzie szukać opisów procesorów oraz ich rejestrów, bo znajdziesz je w
gcc/avr/4.3.3/include/avr.

Ostatni problem z jakim możesz się spotkać to uprawnienia do korzystania z np. portu LPT.
Jeśli tak jak ja chcesz programować przez ten port, musisz odpalić z powrotem koleżankę konsolę i wpisać do niej kolejną niezwykle magiczną wiązankę:
Kod programu: Zaznacz cały
chmod a+rw /dev/parport0


Od tej pory możesz w pełni korzystać z dobrodziejstw programu i dalej już uczyć się go na własną rękę.

Powodzenia!

PS. Jeśli choć trochę zaciekawiłem Cię systemem Linux, to cieszę się że skutecznie zasiałem ziarno propagandy. Nie bój się go, nie słuchaj podszeptów złych kolegów i porzuć życie pirata. Czasy nieprzyjaznego Linuxa się skończyły. Teraz kiedy 90% akcji można wyklikać, a na resztę znaleźć magiczne zaklęcia w internecie, Linux może stać się Twoim legalnym kumplem :) . Z czasem nawet magiczne wiązanki przestaną być magiczne ;)

Zobacz inne artykuły o robotyce
Polecany artykuł z FORBOT.PL:
Piloty do robotów - zdalny start

Przedstawiam projekt pilotów służących do startowania wszelkiego rodzaju robotów. Mam tu na myśli roboty sumo ... Czytaj całość


registered linux user: 520429
www.kooperuj.pl
Postaw piwo autorowi tego posta
 
 
 
Więcej szczegółów
Wystawiono 6 piw(a):
mactro, Bobby, KD93, Hudyvolt, feriar, c2v4
c2v4 



Posty: 4
Skąd: Gdańsk
Programuję w:
C, Asm
Wysłany: 14-07-2010, 21:45   Re: Programowanie AVR w Linux

No no muszę przyznać że tutek świetny. Mi wiele wyjaśnił. Mam jednak pewien problem, który mam nadzieję że znajdzie swoje rozwiązanie na tym forum. Mianowicie posiadam Ubuntu 10.04 64bit które nie za bardzo współpracuje z Kontrollerlabem. Nie chce się zainstalować wersja 32bitowa. Czy jest jakiś sposób na instalację tej wersji, znalezienie wersji 64bit lub ominiecie tych narzędzi i wykorzystanie czegoś innego?

Postaw piwo autorowi tego posta
 
 
Hudyvolt 




Posty: 257
Pomógł: 16 razy
Otrzymał 34 piw(a)
Skąd: Gorzów Wlkp./Poznań
Programuję w:
C (++)
Moje roboty:
Alpha, Antiga

Wysłany: 14-07-2010, 22:16   

możesz spróbować czy podpasuje Ci Code::Blocks. Nie jest specjalnie przygotowywany pod AVR'y, ale można je w nim spokojnie programować. Jest w repozytoriach i także w wersji 64-bit.


[Usługa] Druk 3D
[Minisumo] Antiga
Postaw piwo autorowi tego posta
 
 
kocur_90 



Posty: 38
Otrzymał 2 piw(a)
Skąd: Wałbrzych
Programuję w:
C/C++
Wysłany: 14-07-2010, 22:56   

Spróbuj w tai sposób. Zainstaluj te pakiety:
Kod programu: Zaznacz cały
lib32asound2 ia32-libs ia32-libs-gtk libsigc++-2.0-0c2a libxss1


Ściągasz paczuszkę 32-bitową i instalujesz poleceniem:
Kod programu: Zaznacz cały
dpkg -i --force-architecture nazwa_pakietu.deb
Musisz być w folderze z tą paczką.

Postaw piwo autorowi tego posta
 
 
c2v4 



Posty: 4
Skąd: Gdańsk
Programuję w:
C, Asm
Wysłany: 15-07-2010, 23:34   

otóż:
Kontrollerlab sie zainstalowal zgodnie z poleceniem uzytkownika kocur_90 lecz sie nie uruchamia. podczas próby uruchomienia go poprzez terminal dostaje wiadomosc
Kod programu: Zaznacz cały
kontrollerlab: error while loading shared libraries: libktexteditor.so.0: wrong ELF class: ELFCLASS64

zaznaczam ze mam zainstalowane te biblioteki ktore kocur_90 podal an poczatku postu. poszukalem troche i znalazlem informacje ze potrzebne moga byc pakiety qt4 lub quanty. zainstalowalem je i dalej mam ten sam komunikat. siegnalem glebiej i postanowilem sam skompilowac zrodlo. po wpisaniu
Kod programu: Zaznacz cały
./configure

dostaje nastepujacy komunikat
Kod programu: Zaznacz cały
checking for X... configure: error: Can't find X includes. Please check your installation and add the correct paths!

zgooglowalem to i jedyne rozwiazanie jakie znalazlem to :
Cytat:
zainstaluj cos innego

Cytat:
sprobuj czegos innego

Cytat:
itd

podsumowujac moja wypowiedz chyba bede zmuszony do pisania oraz kompilowania programikow do AVR'ka innymi drogami. Tak więc zwracam sie do Was: jakie narzedzia polecacie oprócz w/w Code::Blocks oraz jak kompilowac programy z C do hexa?

Postaw piwo autorowi tego posta
 
 
kocur_90 



Posty: 38
Otrzymał 2 piw(a)
Skąd: Wałbrzych
Programuję w:
C/C++
Wysłany: 15-07-2010, 23:38   

Ja używam programu geany. Wciskam F9 i makefile robi mi resztę.

A co do błędu podczas kompilacji to pewnie brak paczek dev takich jak:
Kod programu: Zaznacz cały
xserver-xorg-dev xorg-dev

Ostatnio zmieniony przez kocur_90 15-07-2010, 23:41, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
c2v4 



Posty: 4
Skąd: Gdańsk
Programuję w:
C, Asm
Wysłany: 15-07-2010, 23:54   

mam te paczki ;/ geany jest bardzo dobry ale mi nei kompiluje do hexa chyba bede musial go skonfigurowac dodajac te linijki do polecenia buduj :
Kod programu: Zaznacz cały
avr-gcc -Os -mmcu=atmega8 -c %f
avr-gcc -g -mmcu=atmega8 -o %e.elf %e.o
avr-objcopy -j .text -j .data -O ihex %e.elf %e.hex

czy u Ciebie tez trzeba bylo go konfigurowac jesli tak to napisz jak go skonfigurowales.
Dodatkowo mozna dodac pod wykonaj polecenie z avr-dude zeby wgrywalo program. rzeczywiscie po odpowiednim skonfigurowaniu geany wydaje sie dosyc przyzwoitym narzedziem ;)

Ostatnio zmieniony przez c2v4 15-07-2010, 23:58, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 
 
kocur_90 



Posty: 38
Otrzymał 2 piw(a)
Skąd: Wałbrzych
Programuję w:
C/C++
Wysłany: 16-07-2010, 23:36   

A co to konfiguracja? :E
Skopiowałem makefile z winavr'a. Lekko poprawiłem co by mi syf usuwał od razu i wgrywał do procka. Działa aż miło :)

Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: [Algorytmy] Sposoby ... [Mechanika] Jak prze... [Dla początkujących]... [Mechanika] Jak wyko...
lub przeszukaj forum po wybranych tagach: avr, linux, programowanie


Powered by phpBB modified by Przemo © 2003 phpBB Group
Polityka prywatności