Skocz do zawartości

Programowanie uC pod linuksem


Kemott

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:)

Link do komentarza
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.

Link do komentarza
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.

Link do komentarza
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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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;)

Link do komentarza
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
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.