Skocz do zawartości
Kemott

Programowanie uC pod linuksem

Pomocna odpowiedź

Witam, mam taką sprawę. Od kilku właściwie lat próbuję nauczyć się programowania mikrokontrolerów w języku C#. Przeszukiwałem internet ale jedyne co odnalazłem to kurs dostępny pod tym linkiem. http://hobby.abxyz.bplaced.net/index.php?pid=4&cid=1 Próbowałem na jego podstawie temat ogarnąć ale mam kilka problemów których nie umiem obejść. Po pierwsze, nie posiadam windowsa a linuxa a po drugie nie mam dostępu do komputera który posiadałby wejście lpt co bardzo mi utrudnia przełożenie wiedzy na praktykę bo nawet nie mam pojęcia czy to jak mi działa (a właściwie w ogóle nie działa) układ jest spowodowane złym zaprogramowaniem czy błędem w kodzie. I tu moje pytanie, czy zna ktoś jakiś w miarę przystępny kurs/stronę który by mi pomógł? Ewentualnie czy ktoś byłby w stanie mnie nakierować nieco w mojej nauce? Z góry dzięki za zainteresowanie tematem:)

Udostępnij ten post


Link to post
Share on other sites

Skoro używasz linuxa to może pomyśl o miniaturowym komputerze z linuxem pokroju raspberry pi?

Istnieje możliwość programowania specyficznych płytek embedded w C#, ale jest to mocno okrojona wersja języka i do tego nie wiem na ile to jest wykonywalne bez windowsa... - http://en.wikipedia.org/wiki/.NET_Micro_Framework

Miniaturowe system mikroprocesorowe zazwyczaj wymagają znajomości C lub nawet assemblera - mają zdecydowanie zbyt mało zasobów systemowych na C# czy jakiś poważny OS.

Udostępnij ten post


Link to post
Share on other sites

Jakich błędów nie potrafisz obejść?

Brak LPT nie jest problemem, za <50 PLN kupisz programator USB, który bez problemów śmiga na linuksie (Debian, Arch).

Kurs, do którego podajesz link, bardzo dobrze wprowadza w świat programowania uC w C, sam od niego zaczynałem.

Udostępnij ten post


Link to post
Share on other sites

Posiadam programator usb tylko problem zaczyna się z obsługą. Na różnych etapach moich prób pojawiały się różne błędy ale nawet nie jestem w stanie określić czy wynikają one ze złego kodu programu czy ze złego zaprogramowania. A odkąd mam linuksa to już w ogóle zaprogramować nawet nie jestem w stanie.

Udostępnij ten post


Link to post
Share on other sites

Strasznie ogólnie opisujesz swój problem. Podaj więcej szczegółów (target, programator, system operacyjny) oraz pokaż kod, który nie działa i wtedy może uzyskasz pomoc. Nie wydaje mi się, że ktoś z kolegów potrafił wróżyć z fusuów;)

Udostępnij ten post


Link to post
Share on other sites

Jeżeli chodzi o programowanie AVR pod linuxem. Mam nadzieję, że pomoże.

1. Potrzebne pakiety:

a) binutils-avr,
b) gcc,
c) gcc-avr,
d) avr-libc,
e) avrdude.

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

2. 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

3. 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

4. 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. Np. stk200, usbasp, stk500.

-nazwa kontrolera – to nazwa układu programowanego, a mogą to być:

m6450 = ATMEGA6450

m3250 = ATMEGA3250

m645 = ATMEGA645

m2561 = ATMEGA2561

m2560 = ATMEGA2560

m1281 = ATMEGA1281

m1280 = ATMEGA1280

m640 = ATMEGA640

m168 = ATMEGA168

m88 = ATMEGA88

m48 = ATMEGA48

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

m128 = ATMEGA128

m64 = ATMEGA64

m103 = ATMEGA103

5. Skrypt w bashu

a) ogólnie:

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

avr-objcopy -O ihex plik_wynikowy nazwa_pliku.hex

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

b) szczególnie(nazwa pliku np. avr.sh):

#!/bin/bash

avr-gcc -mmcu=atmega88p -Os falka.c -o falka.o

avr-gcc -mmcu=atmega88p -Os falka1.c -o falka1.o

avr-gcc -mmcu=atmega88p -Os falka2.c -o falka2.o

avr-gcc falka.o falka1.o falka2.o -o projekt.out

avr-objcopy -O ihex projekt.out falka.hex

sudo avrdude -c usbasp -p m88p -U flash:w:falka.hex

c) uruchomienie

w konsoli ./nazwa_pliku.sh

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...