Witam,
chciałbym przedstawić napisany przeze mnie ostatnio program na PC.
m-gen automatycznie tworzy makra do obsługi gpio (wejść - wyjść) w mikrokontrolerach.
O co chodzi:
- ściągamy binarki z repozytorium github.com/Leopardus4/m-gen (zakładka release) lub kompilujemy ze źródeł
- dla wygody kopiujemy program do PATH - github.com/Leopardus4/m-gen/blob/master/README.md#installation
- uruchamiamy terminal / konsolę / jak-to-się-inaczej-nazywa / shell-a
- wpisujemy:
- tworzymy nowy arkusz:
- otwieramy ten plik w ulubionym edytorze tekstu - wygląda mniej więcej tak:
Najważniejsza jest dla nas sekcja $m - tutaj "tworzymy" nowe makra. Mode - tryb pinu - opis na dole pliku. PORT,PIN - który to fizycznie pin mikrokontrolera. Name - symboliczna nazwa (bez spacji).
Przykładowo możemy go wypełnić tak:
- następnie wywołujemy program który stworzy odpowiednie makra:
nowy plik .h będzie zawierał makra wyglądające tak:
Teraz nie pozostaje nic innego jak wykorzystać makra w naszym projekcie.
Jeśli w trakcie prac nad systemem okaże się, że np. trzeba zmienić projekt PCB i diodka lepiej by pasowała na pinie PD1 zamiast PC5, wystarczy poprawić to w pliku .gm i ponownie wywołać m-gen - nic więcej. Nie trzeba zmieniać ani jednej linijki kodu.
Taka pokrótce jest idea aplikacji. Powstała ona na własny użytek, ale ponieważ może być użyteczna, postanowiłem upublicznić ją na licencji GPL.
Czym to na pewno nie jest:
Nie jest to (i nie ma być) kolejne Arduino czy CUBE- z co najmniej 2 względów:
- szybkość - tworzony jest natywny kod, co oznacza, że nie tracimy szybkości programu (można zajrzeć do generowanego assemblera - kod wynikowy jest taki jak bez makr)
- to nie jest nakładka dla "wygodnego" programowania i nie zwalnia ze znajomości platformy - nie używaj tych makr jeśli nie wiesz co robią. Program ma jedynie ułatwić utrzymanie kodu warstwy sprzętowej, który może być łatwiej i szybciej portowalny.
Aktualnie obsługiwane:
- AVR8
- (edit: ) LPC111x
w przyszłości będa rozwijane porty na inne mikrokontrolery (ARM, ...).
Jeśli jest ktoś chętny do współpracy, tworzenie nowego "targeta" jest stosunkowo proste - opis tutaj: github.com/Leopardus4/m-gen/blob/master/CONTRIBUTORS.md
Za wszelkie sugestie i informacje o błędach (zawsze się mogą zdarzyć) oraz konstruktywną krytykę dziękuję, jednak proszę o powstrzymanie się od komentarzy w stylu "to jest źle zrobione, bo JA bym zrobił lepiej". Jeśli tak - kod jest otwarty, więc można się wykazać...
Pozdrawiam
Larus
chciałbym przedstawić napisany przeze mnie ostatnio program na PC.
m-gen automatycznie tworzy makra do obsługi gpio (wejść - wyjść) w mikrokontrolerach.
O co chodzi:
- ściągamy binarki z repozytorium github.com/Leopardus4/m-gen (zakładka release) lub kompilujemy ze źródeł
- dla wygody kopiujemy program do PATH - github.com/Leopardus4/m-gen/blob/master/README.md#installation
- uruchamiamy terminal / konsolę / jak-to-się-inaczej-nazywa / shell-a
- wpisujemy:
Kod: Bash
- tworzymy nowy arkusz:
Kod: Bash
- otwieramy ten plik w ulubionym edytorze tekstu - wygląda mniej więcej tak:
Kod: C / C++
Najważniejsza jest dla nas sekcja $m - tutaj "tworzymy" nowe makra. Mode - tryb pinu - opis na dole pliku. PORT,PIN - który to fizycznie pin mikrokontrolera. Name - symboliczna nazwa (bez spacji).
Przykładowo możemy go wypełnić tak:
Kod: C / C++
- następnie wywołujemy program który stworzy odpowiednie makra:
Kod: Bash
nowy plik .h będzie zawierał makra wyglądające tak:
Kod: C / C++
Teraz nie pozostaje nic innego jak wykorzystać makra w naszym projekcie.
Jeśli w trakcie prac nad systemem okaże się, że np. trzeba zmienić projekt PCB i diodka lepiej by pasowała na pinie PD1 zamiast PC5, wystarczy poprawić to w pliku .gm i ponownie wywołać m-gen - nic więcej. Nie trzeba zmieniać ani jednej linijki kodu.
Taka pokrótce jest idea aplikacji. Powstała ona na własny użytek, ale ponieważ może być użyteczna, postanowiłem upublicznić ją na licencji GPL.
Czym to na pewno nie jest:
Nie jest to (i nie ma być) kolejne Arduino czy CUBE- z co najmniej 2 względów:
- szybkość - tworzony jest natywny kod, co oznacza, że nie tracimy szybkości programu (można zajrzeć do generowanego assemblera - kod wynikowy jest taki jak bez makr)
- to nie jest nakładka dla "wygodnego" programowania i nie zwalnia ze znajomości platformy - nie używaj tych makr jeśli nie wiesz co robią. Program ma jedynie ułatwić utrzymanie kodu warstwy sprzętowej, który może być łatwiej i szybciej portowalny.
Aktualnie obsługiwane:
- AVR8
- (edit: ) LPC111x
w przyszłości będa rozwijane porty na inne mikrokontrolery (ARM, ...).
Jeśli jest ktoś chętny do współpracy, tworzenie nowego "targeta" jest stosunkowo proste - opis tutaj: github.com/Leopardus4/m-gen/blob/master/CONTRIBUTORS.md
Za wszelkie sugestie i informacje o błędach (zawsze się mogą zdarzyć) oraz konstruktywną krytykę dziękuję, jednak proszę o powstrzymanie się od komentarzy w stylu "to jest źle zrobione, bo JA bym zrobił lepiej". Jeśli tak - kod jest otwarty, więc można się wykazać...
Pozdrawiam
Larus
