Bascom, BootLoader i moduły Arduino.

5/5 - (1 vote)

ciekawie wyglądające moduły ArduinoArduino jest innowacją z ostatnich lat będącą platforma sprzętową zbudowaną na µC AVR. Moduły Arduino posiadające układy MPU są częściowo zaprogramowane i posiadają bootloader. Nie jest to nic innego jak „wstępny” kod umieszczony na końcu przestrzeni Flash umożliwiający zaprogramowanie µC kodem funkcjonalnym przez interfejs RS. Dzięki czemu z kolei wiedza i zaplecze sprzętowe „młodego programisty” może być na początku przygody skromniejsza. Ktoś kiedyś powiedział:

każdy język programowania jest taki dobry jak używający jego programista

obojętnie co by to nie było …

Z czym w pełni się zgadzam 😉 pomimo tego, że całą platformę Arduino, uważam za skonstruowaną tak by „za wiele” nie wymagać od projektanta układu elektronicznego. I pewno moje stanowisko może wynikać stąd, iż nie posmakowałem jeszcze do tej pory tego uniwersalnego środowiska.

ARDUINO BootLoader

Ta wersja bootloadera oparta  jest na  starym protokole STK500, i nie jest już wspierana przez środowisko Atmel Studio. Nie mniej istnieją różne programatory zgodne z Arduino, z pośród których Avrdude jest prawdopodobnie najbardziej wszechstronny.

Natomiast BASCOM AVR zapewnia wsparcie dla protokołu ARDUINO / STK500 v1, gdzie linie DTR / RTS są używane, aby zresetować moduł µC i rozpocząć proces programowania.
Funkcjonalność jaka jest oferowana to odczyt lub zapis pamięci Flash i EEPROM. Nie jest możliwy natomiast dostęp do bitów fuse/lock, ponieważ bootloader Arduino nie obsługuje tych funkcji.

W ramach opcji konfiguracji środowiska IDE wystarczy wybrać typ programatora i port COM użytego translatora z modułu Arduino. Większość modułów do translacji sygnałów używa układów FTDI FT232, i WCH CH340, które to tworzą w Windows wirtualny port COM. Które to z kolei występują w systemie komputera tylko wtedy, gdy podłączony jest kabel USB z modułu do komputera.

Tutaj do komunikacji należy wybrać szybkość transmisji 57600. Starsze moduły  Arduino pracowały z prędkością 19200 bodów.

ARDUINO v2

Arduino programmer w Bascom AVR IDETwórcy Arduino ostatecznie wdrożyli protokół STK500 v2. Protokół ten jest obsługiwany przez Atmel Studio i oczywiście przez Bascom.
Aby posłużyć się do programowania środowiskiem Bascom AVR należy przygotować odpowiednio konfigurację. W tym celu wybieramy programator (soft) ARDUINO STK500V2 do korzystania z tego protokołu, nie wolno zapomnieć o ustawieniu odpowiedniego portu COM i prędkości transmisji. Moduł MCU podłączamy bezpośrednio do komputera stosownym gniazdem (najczęściej USB), lub za pomocą osobnej przejściówki USB <-> RS232TTL.
Prawdopodobnie wszystkie nowsze moduły AVR Arduino obsługują protokół w tej wersji. Szybkość transmisji powinna być ustawiona na 115200.

Można by teraz opisać dokładnie po co to i jak postępować krok po kroku. Oraz w jakich warunkach funkcjonalność ta staje się niezastąpiona. Ja tego nie uczynię gdyż w internecie jest bardzo wiele artykułów i poradników na ten temat. Natomiast mogę polecić opis z czasopisma Elektronika Praktyczna 10/2007 ze strony 97, zatytułowany Bootloader w mikrokontrolerach AVR autorstwa Marcina Wiązani.

Minimum wiadomości dla duetu: Bascom BootLoader

By móc cieszyć się funkcjonalnością BootLoadera powinno się:
– Wybrać µC ze specjalną sekcją w pamięci Flash (Boot Flash Section). Pomijam tu fakt stworzenia swojego patentu i oprogramowania go.
– Wykonać niezbędną konfigurację Fuses –  bity BOOTRST i BOOTSZ0, BOOTSZ1.
– Przygotować interfejs do połączenia modułu MCU z komputerem osobistym bądź przez RS232 bądź USB.
– Najlepiej by µC był wyposażony w obwód zewnętrznego rezonatora kwarcowego, i z niego był taktowany. To dla uniknięcia błędów transmisji i z tym związanych problemów.
– wgrać jeden z dostępnych kodów bootloadera i kolejno przystąpić do programowania ulubionym narzędziem 🙂

Bardzo wygodne jest korzystanie z funkcjonalności bootloadera za pośrednictwem modułu BlueTooth.

Wersje BootLoader-ów dla µC AVR

Dedykowany do Arduino Optiboot, zgodny z Lilypad, Pro, Nano, Mega, Sanguino i Mighty. Dodatkowo można go wgrywać do ATmega88, ATmega32, Atmega8, ATmega168.
Przykładowy Bootloader USB USBAspLoader – może być używany z wszystkimi µC, które posiadają 2kB sekcję na bootloader w pamięci Flash. Jego innowacyjność polega na „emulacji” programatora USBasp
MCS Bootloader, pozwala na zapis Flash i EEPROM, oraz automatyczną obsługę reset.
Megaload godny polecenia, dedykowany do serii ATmega i komunikacji RS232, mały rozmiar kodu podstawowego (256 words),  osobny trochę większy kod (512 words) dla wsparcia obsługi EEPROM podczas programowania (słowo – word, zajmuje dwa bajty). Obsługuje różne szybkości programowania, generuje sumy kontrolne, posiada funkcję automatycznego wznawiania w przypadku błędu programowania. Potrafi zarządzać bitami kontrolnymi LOCKbit, jak i pozostałymi konfiguracyjnymi. Posiada swoje narzędzie programujące pod Windows.
I coś dedykowane dla ATtiny 😉 Micronucleus – ze wsparciem komunikacji USB. rozmiar kodu poniżej 2kB.

A. D. 2016-04-24 niedawno natrafiłem na jeszcze jeden bootloader, który zwrócił moją uwagę. A to dlatego, że nie wymaga programu ładującego, a całą obsługę łącznie z programowaniem wykonamy przez terminal. Przez co rozwiązanie staje się bardzo wszechstronne. HEXLoader – bootloader AVR z obsluga HEX (bez softu na PC!).


Eeech, łatwo i sprawnie miało być – a nie było … więc mała ściągawka pojawić się musi  😉 Zamieszanie przez mnóstwo informacji rozbieżnych powstało.  :mrgreen:
konwertery USB-RS i moduły Arduino biorące udział w teście Dla uściślenia podczas testów posługiwałem się wersją środowiska IDE [2.0.7.9]. Do testów posłużyły moduły Arduino w dwóch wersjach z mostkiem USB wbudowanym, oraz bez, dołączanym jako osobny moduł. Oczywiście podłączałem sobie różne posiadane konwertery USB RS232TTL, dla rozpoznania sytuacji.  😉
Konwertery: pełny RS – MCP2200, CP2102 w dwóch wersjach, PL2303HX też w dwóch wersjach.
Moduły Arduino: Pro Mini Atmega328P, Nano Atmega328P (z mostkiem CH340). Na uwagę zasługują konwertery z linią CTS, gdyż po podłączeniu jej do modułu µC uzyskujemy pełną automatyzację programowania (reset modułu z programu).

komunikacja do modułu MPU Bascom gada do Arduino przez MCP2200

Fotki przedstawiają działające moduły z bootloaderem Arduino sterowane ze środowiska Bascom AVR  🙂

menadżer urządzeń Windows By wszystko działało jak należy trzeba zdobyć sterownik do Adruino Nano, i oczywiście zainstalować. Ponieważ ja akurat posiadałem moduł Arduino Nano w wersji compatibility, wyposażony był w konwerter CH340. I do takiego wygrzebałem w internecie sterownik stosowny do posiadanej wersji Windows.
Kolejnym krokiem bez względu na wersję modułu z µC będzie zidentyfikowanie konwertera w Menadżerze Urządzeń systemu Windows. Należy w stosownej pozycji odczytać numer wirtualnego portu COM, będzie potrzebny do skonfigurowania programatora w Bascom AVR. Obrazek obok pokazuje widok nowego urządzenia w różnych wariantach, zależnych od podłączonego modelu konwertera.

nastawa programatoraNastępnie dokonać trzeba niezbędnych nastaw w środowisku IDE Bascom AVR. W tym celu należy z listy Programmer wybrać typ programatora ARDUINO!, z listy BAUD nastawę 57600!, a w polu COM-port nastawić port odczytany w kroku poprzednim z Menadżera Urządzeń Windows.
Od tych nastaw zależeć będzie powodzenie obsługi przez program programatora modułu Arduino z bootloaderem Arduino!
Po wykonaniu korekty ustawień, zatwierdzamy nową konfigurację i zamykamy okno. W ściśle określonych warunkach mogą nastąpić rozbieżności, co do podanych informacji. Jak już wiemy występują różne wersje bootloadrea Arduino, i od tego oprogramowania uzależnione są nastawy. Niestety najczęściej rozpoznanie wersji bootloadera Adruino, będzie polegało na wykonaniu serii prób, z różnymi wariantami nastaw.

W tym momencie przytoczę po raz kolejny istotną uwagę. O ile podłączać będziemy moduł Nano (z portem USB na pokładzie) lub dowolny inny moduł przez konwerter z dodatkowym wyprowadzeniem w postaci linii CTS (którą należy dołączyć w module Arduino do wyprowadzenia BLK) inicjacja programowania przebiegać będzie w pełni automatycznie. I nie wymagać będzie żadnej dodatkowej akcji po stronie użytkownika, oczywiście poza kliknięciem ikony uruchamiającej proces programowania.

W przeciwnym wypadku jeśli do modułu podłączymy konwerter ubogo wyposażony w linie portu RS, niezbędne będzie manualne posługiwanie się przyciskiem reset, w który wyposażony został moduł Arduino. Bez tego ani rusz … Przykład takiej konfiguracji sprzętu można oglądać na fotce obok.
Ja najpierw klikałem akcję w programie, a potem szybciutko resetowałem przyciskiem moduł. Komunikacja przebiegała poprawnie.

Klikając na ikonkę Identify Chip można wygodnie sprawdzić czy wszystko funkcjonuje prawidłowo  😉 Przykład poprawnej komunikacji da spodziewane komunikaty w okienku konsoli programatora:programator ARDUINO w Bascom AVR

Moduł z µC został prawidłowo obsłużony a nasz MPU rozpoznany. Dzięki takiej konfiguracji możemy wgrywać nowy kod do pamięci FLASH i programować zawartość EEPROM. Nie będzie działała obsługa Fuse Bits.


Temat Bootloadera jest bardzo ciekawy i być może będę go  kontynuować w szerszym zakresie.

Opracowane między innymi na podstawie wiadomości z:
wiki.mcselec.com
oraz doświadczeń swoich, kolegi Grzenio73 i Wojciecha, BARTek też coś dopowiedział :mrgreen: .

Otagowano , , , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

dziewiętnaście − osiem =

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.