MkBootloader

Oprogramowanie
49
PLN
MkBootloader
in_stock
Dostępność:
duża ilość
Wysyłka w:
24 godziny
Cena: 49,00 zł
Cena netto: 39,84 zł
szt.

Wersja testowa programu

(ograniczenie wielkości wsadu do 1kB)

Bootloader (ang. boot loader) - program rozruchowy.

Uwaga! program nawet w pełnej wersji może zawierać reklamy "google adwords". Jeśli nie zgadzasz się na wyświetlanie reklam, nie dokonuj zakupu pełnej licencji.

Każdy kto zajmuje się programowaniem mikrokontrolerów niezależnie jakiego typu, wcześniej czy później spotka się z potrzebą podmiany wersji wsadu (firmware) u swojego klienta, na nowszą wersję pozbawioną błędów. Nie zawsze taka konieczność powstaje w przypadku podmiany u klienta. Często bywa, że tworzymy własne sterowniki, pracujące w trudnodostępnych warnukach jeśli chodzi o możliwość podłączenia programatora sprzętowego. Wystarczy podać przykład sterownika oświetlenia (popularny ściemniacz/dimmer), pracującego przy zasilaniu 230V. Typowo w celu każdorazowej podmiany wsadu, zmuszeni jesteśmy do deinstalacji całego urządzenia, rozłączenia obwodów, przerwy w pracy z powodu braku oświetlenia itp. Podobnie rzecz się ma z dowolnym własnym sterownikiem stworzynym na potrzeby klienta. Zwykle po sprzedaży dochodzi, nie tylko w wyniku błędnego działania urządzenia ale także z powodu chęci poszerzenia jego funkcjonalności przez samego klienta, do momentu, że trzeba zaktualizować wsad. I znowu, typowe działania bez opisanego tu mechanizmu "bootloadera", musiałyby polegać na odbyciu wyjazdu do siedziby klienta, deinstalacji urządzenia, wstrzymania pracy i przeprogramowania mikrokontrolera przy użyciu sprzętowego programatora. Z tego powodu zdecydowana większość mikrokontrolerów na rynku posiada bardziej lub mniej zaawansowane opcje i możliwości implementacji własnego oprogramowania w tzw. sekcji BLS (Boot Loader Section).

Ogólna zasada działania zwykle jest podobna w każdym przypadku. Polega ona na tym, iż programista/twórca sterownika typu (embedded) wbudowanego posiada możliwość przygotowania własnego programu rozruchowego. Często także taki mechanizm zapewniony jest już od strony sprzętowej bez konieczności pisania własnego programu, ograniczeniem bywa jednak dostępność interfejsu w oparciu o który będzie można dokonać aktualizacji. Ponieważ jednak zajmujemy się rodziną AVR8 w tym przypadku, to przedstawiony zostanie mechanizm pozwalający na aktualizację wsadów dla mikrokontrolerów serii ATmega. Zostały one wyposażone w szereg instrukcji, które pozwalają zaprogramować pamięć FLASH oraz EEPROM z poziomu aplikacji umieszczonej w dedykowanym obszarze pamięci programu. Nie ma tutaj sprzętowego wsparcia, jednakże obsługa od strony programu dla procesora nie stanowi dużej komplikacji. W zamian za niewielki wysiłek przy jej napisaniu, mamy możliwość wyboru praktycznie dowolnego interfejsu za pomocą którego zechcemy mieć możliwość przesyłania danych (zaktualizowanego wsadu) do procesora. Najbardziej rozpowszechnionym interfejsem do tego celu jest RS232. Pomimo to nic nie stoi na przeszkodzie, aby aktualizację wsad wykonać za pośrednictwem np.: magistrali I2C, SPI, RS485/422, kart pamięci MMC/SD czy też łączy USB, radiowych jak Bluetooth lub nawet sieciowych Ethernet.

Program rozruchowy raz napisany, obojętnie w jakim języku, pozwala dokonywać aktualizacji całej pozostałej wolnej pamięci FLASH. Istotne jest to, że mechanizm ten jest z kolei, absolutnie niezależny od tego w jakim języku został napisany wsad/firmware. Nieco bardziej skoplikowana jest kwestia oprogramowania np. na komputer PC, który miałby służyć do transmisji danych w tym celu. Jednak komplikacja sprowadza się tylko i wyłącznie do braku możliwości napisania efektywnie pracującej aplikacji na PC.

Wychodząc naprzeciw tym zagadnieniom i trudnościm powstał program MkBootLoader. Jest to aplikacja przeznaczona wyłącznie do pracy w środowisku Windows i umożliwia komunikację z mikrokontrolerm w celu aktualizacji wsadu za pomocą trzech różnych interfejsów.

  1. Bluetooth - możliwość wykorzystania z przejściówki USB/BT podłączonej do komputera oraz modułów BTM-112 lub BTM-222 połączonych ze sterownikiem.
  2. USB - możliwość wykorzystania dowolnej przejściówki USB/RS232, opartej np. na popularnym układzie FT232RL.
  3. RS232 - możliwość wykorzystania standardowych portów komunikacyjnych COM, znajdujących się praktycznie w każdym koputerze PC.

Program MkBootLoader został napisany z użyciem techniki wielowątkowej i w oparciu o własne komponenty do obsługi portu szeregowego w środowisku Delphi2006. Na dzień dzisiejszy obsługuje wspomniane wyżej interfejsy, jednak w planach jest rozbudowa o możliwość wykorzystania USB w trybie HID oraz łączy sieciowych Ethernet. Obecnie jednak podstawowym medium jest transmisja szeregowa. Istotną funkcją programu jest możliwość przesyłania programowego polecenia (definiowanego także przez użytkownika), którego obsługę można zaimplementować we własnym programie ładowanym za pomocą bootloadera. Technika ta umożliwia dokonanie resetu procesora bez konieczności posługiwania się w tym celu fizycznymi łączami. Dlatego jest tak bardzo przydatna szczególnie przy transmisji radiowej z udziałem Bluetooth. Domyślnie poleceniem tym jest ciąg znaków: "AT+RST?" zakończony znakiem ENTER (0x0D). Poza tym program oferuje także wykorzystanie w tym celu sprzętowych linii RS232 takich jak: DTR lub RTS jeśli zachodzi taka potrzeba i jest możliwość skorzystania z nich w celu podłączenia do pinu RESET mikrokontrolera. Jest to jednak mniej polecana metoda niż opisane wyżej resetowanie programowe. Obsługa polecenia programowego, może się sprowadzać do kilku poleceń, które można wydać w dowolnym języku.

  1. Wyłączenie przerwań globalnych - cli();
  2. Załączenie WatchDog'a z możliwie najkrótszym czasem oczekiwania.
  3. Zastosowanie pętli nieskończonej, np.: while(1);

W efekcie czego, procesor w prawidłowy sposób zostanie zresetowany. Ponowne uruchomienie odbędzie się od programu sekcji BLS, dzięki czemu zacznie działać przez określony czas (definiowany przez użytkownika) bootloader. Będzie on oczekiwał na transmisję danych z aplikacji MkBootLoader pracującej na komputerze PC. Aby była możliwa taka sytuacja, trzeba uprzednio wgrać do mikrokontrolera "bootloader" do sekcji BLS. W tym celu wraz z programem pobrany zostaje kod źródłowy programu bootloadera dla dowolnych mikrokontrolerów ATmega. Jest on w pełni otwarty i można wprowadzać do niego własne modyfikacje jeśli zajdzie taka konieczność. Kod zapisany jest w pliku "main.c". Napisany jest on w języku C i po kompilacji zajmuje w pamięci mikrokontrolera jedynie 256słów! Jest to szczególnie istotne w przypadku procesorów z niewielką ilością pamięci programu jak np. ATmega8 czy ATmega88. Wraz z nim dostarczany jest także plik projektu o nazwie "makefile". To w nim należy dokonać ustawienia kilku istotnych parametrów, od których zależy na jakim konkretnie mikrokontrolerze chcemy uruchomić bootloader, adres sekcji BLS, jaka będzie częstotliwość jego taktowania, prędkość transmisji RS232 oraz czas zgłaszania się po resecie. Poniżej lista parametrów z przykładowymi wartościami dla ATmega8:

  • MCU = atmega8
  • F_CPU = 11059200
  • BLS_START = 0x1E00
  • BOOT_WAIT = 1 (czas wyrażony w sekundach)
  • BAUD_RATE = 115200

Do prawidłowej kompilacji wymagana jest jedynie podstawowa instalacja pakietu WinAVR (najnowsza wersja) do pobrania z internetu. Po tym wystarczy jedynie przejść do konsoli DOS w systemie Windows, za pomocą polecenia "cd" przejść do folderu w którym znajdują się wyżej wspomniane pliki a następnie należy wydać jedno polecenie: make i nacisnąć enter. To wszystko, w efekcie powstanie nam plik *.HEX z gotowym wsadem, który należy wgrać do mikrokontrolera. Po prawidłowo przeprowadzonej operacji można zacząć już swobodnie korzystać z programu na PC - MkBootLoader w celu wgrywania nowych wersji wsadu zamiast programatora sprzętowego. Należy mieć na uwadze, iż mamy w takiej sytuacji możliwość zabezpieczenia mikrokontrolera przed odczytem wsadu przez niepowołane osoby, programując odpowiednie "Lock bity". A jednocześnie nadal pozostaje pełna możliwość wgrywania nowego wsadu. Z uwagi na często zadawane pytania, przedstawiony zostanie sposób programowania "Fuse bitów" w mikrokontrolerze bez których bootloader nie będzie działał. Przy tej okazji wyjaśnione zostanie zagadnienie wyznaczania adresu BLS w mikrokontrolerze (BLS_START). Poniżej zostaje zamieszczony zrzut ekranu ustawień Fuse bitów z programu MkAvrCalculator, dla procesora ATmega8 z zaznaczonymi opcjami do tego celu:

 

Jak widać podstawa to wybór wielkości BLS, 256 słów (words), i ustalenie na tej podstawie adresu BLS. Po prawej stronie wybranej opcji widoczny jest adres wyrażony w słowach, natomiast parametr musi być wyrażony w bajtach. Wystarczy, zatem przedstawioną wartość hexadecymalną pomnożyć x2. Dla ATmega8 będzie to: $0F00 * 2 = $1E00 (czyli zapis hex w języku C, 0x1E00). Tę wartość podajemy dokładnie jako parametr BLS_START w pliku "makefile". Poza tym należy koniecznie ustawić bit konfiguracyjny o nazwie "Boot Reset vector Enabled". Dzięki temu po każdym zresetowaniu mikrokontroler będzie rozpoczynał program umieszczony w sekcji BLS zamiast od początku pamięci FLASH.

W związku z powyższym, przedstawione wyżej postępowanie jest do przeprowadzenia w zakresie każdego początkującego programisty nie znającego nawet języka C. Od tej pory można się bez problemu posługiwać pełnosprawnym mechanizmem bootloadera we wszystkich własnych projektach. Działanie oprogramowania można w pełni sprawdzić przed zakupem za pomocą aplikacji, która posiada tylko jedno ograniczenie. Dotyczy ono wyłącznie wielkości wgrywanego wsadu.

Sklep jest w trybie podglądu
 
  •  sklep@atnel.pl
  •  tel. 91 46 35 683
  •  fax. -- -- -- ---
  •  kom. 501 008 523
  •  sklep_atnel
  •  ul. Uczniowska 5A
  • 70-893 Szczecin
Gadżety ATNEL
Sklep internetowy Shoper.pl