XEBOOT – mały bootloader dla Atmega8 obsługujący xmodem

Historia

Parę lat temu pracowałem nad pewnym urządzeniem na sprzedaż opartym na procesorze Atmega8. Jedną z ważnych części było oczywiśćie oprogramowanie. Wiadomo, że czasem trzeba coś dodać, czasem poprawić, więc oprogramowanie musiało się dać aktualizować. I musiało to być robione przez nabywcę tego urządzenia.

Wrzucenie gotowego bootloader obsługującego protokół STK albo inny zamknięty było nie do przyjęcie. Klient miał do dyspozycji tylko port szeregowy i to wzystko. Nie mogło to być również zależne od systemu operacyjnego.

Był jeszcze jeden problem – urządzenie było dosyć proste w budowie i większość jego siły tkwiła w oprogramowaniu. Czyli nowy firmware dostarczany do klienta nie powinien również chodzić na kopii 🙂
W ten sposób kolejnym wymaganiem bootloadera była obsługa deszyfrowania.

I ostatnie wymaganie – rozmiar. Sam program zawierał dosyć spore tablice, więc poświęcenie 2KB z 8 dostępnych byłoby dużą stratą.

W ten sposób nie pozostało mi nic innego jak samemu taki napisać 🙂

Ostatnio postanowiłem podzielić się tym kodem, bo go już nie wykorzystuję i widzę, że w ciągu tych lat nadal nic takiego nie powstało, co obsługiwałoby protokół xmodem i deszyfrację obrazu.

Możliwości

  • mały rozmiar (mniej niż 512B)
  • obsługiwany protokół: xmodem
  • czyste wykorzystanie transmisji szeregowej (bez dodatkowych linii sterujących czy innych połączeń niż tx/rx)
  • obsługa prostego szyfrowania (nie jest mocne, ale wystarczające, żeby niedoświadczony użytkownik nie mógł tego prosto wgrać do skopiowanego sprzętu)
  • jest już za darmo (GPL v3) 🙂

Kod

Kod jest do ściągnięcia z Githuba: https://github.com/majekw/xeboot
Szczegóły techniczne (kompilacja, użycie itp.) opisane są w README w repozytorium.

Fork

Tak, projekt ewoluował 🙂
Został użyty jako podstawa do bootloadera dla Atmega88/168/328. Niestety musiałem poświęcić szyfrowanie, żeby nadal mieścić się w 0.5KB, więc nie jest to już xEboot.
Nowy bootloader jest obecnie częścią mojego innego projektu: LCD88 – kodera dla nadajnika R/C, a źródła są dostępne również na Githubie: https://github.com/majekw/lcd88

This entry was posted in Elektronika and tagged . Bookmark the permalink.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.