Witam!
Jakiś czas temu zacząłem bawić się procesorami AVR. Jako programatora wykorzystywałem moduł FT232. Po jakimś czasie gdy zacząłem ów moduł wykorzystywać również do transmisji danych między procesorem a komputerem (UART) pomyślałem, że aby zmniejszyć kabelkologię (FT232 podłączony jako programator + RX +TX) do programowania wykorzystam bootloader.
Długo szukałem takiego, który spełniał by moje oczekiwania, ale te bootloadery które znalazłem, albo nie działały, albo były płatne, albo nie potrafiłem z nich skorzystać.
Dlatego ucieszyłem się, gdy znalazłem ten wątek:
https://www.elektroda.pl/rtvforum/topic1698801-0.html
Programator kolegi TokamakPl działał bez problemu! Prawie.
Niestety w miarę użytkowania, okazało się, że co kilka programowań program nie nawiązywał połączenia z procesorem i wykrzaczał się niemiłosiernie. Poza tym nie akceptował plików hex, tylko pliki binarne!
Po pewnym czasie te cechy zaczęły mnie doprowadzać do szału i postanowiłem napisać swój program obsługujący bootloader, przy okazji ucząc się nowego dla mnie języka C#.
Przy okazji wprowadziłem kilka poprawek w samym kodzie bootloadera i dodałem obsługę kilku nowych procesorów (mam zamiar dodać więcej). Na dzień dzisiejszy obsługiwane są:
- Atmega48
- Atmega8
- Atmega8A
- Atmega88
- Atmega16
- Atmega162
- Atmega168
- Atmega169
- Atmega3250
- Atmega328
- Atmega32
- Atmega3290
- Atmega644
Zalety programu:
- zajmuje mniej niż 512 bajtów (256 słów) pamięci procesora
- Komunikacja przez RS232, lub przejściówkę USB <-> RS232
- Odczyt i zapis pamięci Flash
- Podczas przesyłania danych w czasie zapisu pamięci flash sprawdzana jest suma kontrolna (XOR)
- Odczyt i zapis pamięci EEPROM
- Weryfikacja poprawności zapisu pamięci FLASH oraz EEPROM
- Odczyt Fusebitów i Lockbitów
- Sam inicjuje reset procesora
- Graficzny interfejs (program z interfejsem konsolowym w drodze)
- Ta sama wersja programu działa pod Windowsem(.Net Framework) jak i Linuxem (potrzebne Mono)
- obsługa plików hex
TODO:
- sprawdzanie czy program zmieści się w urządzeniu;
- odczyt i zapis EEPROM stronami, na razie jest bajt po bajcie, co jest mało efektywne;
- offset dla plików hex - na razie program obsługuje tylko pliki hex zaczynające się od adresu 0;
W załączniku program, i źródła zarówno bootloadera jak i samego programu obsługującego.
Z góry dziękuję za wszelkie sugestie!
Więcej informacji na stronie programu.
Pozdrawiam.
Changelog:
- poprawiony makefile
- naprawiony błąd przy zapisie ustawień na linuksie, związany z niewłaściwym separatorem w ścieżce pliku
Fajne? Ranking DIY