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
Komentarze
XEBOOT – mały bootloader dla Atmega8 obsługujący xmodem — Brak komentarzy
HTML tags allowed in your comment: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>