Instrukcja do bootloadera dla sterownika SU 1.2
Schemat blokowy połączenia
Niniejsza instrukcja opisuje stosowanie bootloadera dla sterownika SU 1.2, w którym jednostką centralną jest procesor ATMEGA32.
Opisany bootloader umożliwia programowanie procesora ATMEGA32 w sterowniku SU 1.2, za pomocą interefejsu szeregowego RS-232.
Za pomocą dowolnego programu terminalowego (np. Tera Term) i złącza RS-232 można przesłać plik programu w postaci *.bin do sterownika. W ten sposób program bootloader-a umożliwia aktualizację oprogramowania w sterowniku, bez konieczności jego demontażu.
Za pomocą złącza ISP lub JTAG należy zaprogramować procesor programem bootloader-a (plik bootloader12.hex) oraz odpowiednio ustawić bity konfiguracyjne:
- wektor inicjalizacji programu bootloader-a ustawić tak, aby zaczynał się od adresu $3F00, ponieważ program bootloader-a zajmuje ostatnie 256 słów (512 bajtów) pamięci programu procesora (BOOTSZ1=1, BOOTSZ0=1),
- wektor zerowania procesora przenieść do początku programu bootloader-a (BOOTRST=0).
Program bootloader-a programuje pamięć programu aplikacji procesora ATmega32 od adresu $0000 do adresu $3EFF (32256 bajtów). Pozostałą część pamięci programu (od adresu $3F00 do adresu $3FFF – 512 bajtów) zajmuje program bootloader-a. Aby zapewnić komunikację sterownika z komputerem, należy połączyć porty RS-232 obu urządzeń za pomocą kabla 3-żyłowego. Wszystkie komunikaty bootloader-a wyświetlane są w programie terminalowym na monitorze komputera.
Parametry interfejsu RS-232, jakie należy ustawić w programie terminalowym na komputerze PC (np. Tera Term):
- prędkość transmisji 4800 baud,
- 8 bitów danych,
- bit parzystości typu odd (nieparzysty),
- 1 bit stopu,
- brak sterowania przepływem.
Wejście w tryb programowania sterownika za pomocą programu bootloader-a następuje poprzez przytrzymanie wciśniętych jednocześnie dwóch klawiszy sterownika ESC i OK oraz wykonanie jednej z następujących czynności:
- reset sprzętowy sterownika (np. wyłączenie i załączenie zasilania sterownika),
- z poziomu aplikacji wykonanie instrukcji skoku pod adres $3F00.
Szczegółowa instrukcja obsługi programu bootloader-a:
- KROK 1: Po wejściu w program bootloader-a, sterownik wyśle zapytanie: Programować flash ?
- KROK 2: W tym miejscu należy potwierdzić bądź zrezygnować z programowania pamięci procesora:
- aby zrezygnować z programowania pamięci należy wcisnąć klawisz ESC sterownika. Sterownik wyśle komunikat: Wyjscie. Następnie program bootloader-a wykona instrukcje skoku w pamięci programu pod adres $0000.
- aby potwierdzić programowanie pamięci należy wcisnąć jednocześnie klawisze UP i DOWN sterownika. Sterownik wyśle komunikat: Wyslij plik *.bin … Sterownik będzie oczekiwał na wysłanie pliku z programem.
- KROK 3: Należy uruchomić procedurę wysyłania pliku typu ASCII z programu terminalowego i wysłać plik programu aplikacji w formacie *.bin (postać binarna). Plik programu w formacie *.bin, bez względu na rozmiar aplikacji, powinien zawsze mieć objętość 32768 bajtów. Podczas transmisji pliku programu, sterownik wysyła zwrotnie pasek postępu: 1 wysłany znak █ równy jest 128 odebranych bajtów. Jeśli podczas programowania wystąpi błąd transmisji, sterownik wyśle komunikat Blad transmisji ! i program booloader-a zostanie zatrzymany.
- KROK 4: Sterownik po zaprogramowaniu pamięci programu wyśle komunikat Weryfikacja, ponownie wyślij plik *.bin … Sterownik będzie oczekiwał na ponowne wysłanie pliku z programem aplikacji, które pozwoli na zweryfikowanie zaprogramowanej pamięci programu. Podczas ponownej transmisji pliku programu, sterownik wysyła zwrotnie pasek postępu: 1 wysłany znak ▒ równy jest 128 odebranych bajtów. Jeśli podczas weryfikacji wystąpi niezgodność pamięci programu aplikacji z zawartością pliku programu, sterownik wyśle komunikat Blad weryfikacji ! i program boolader-a przejdzie do kroku nr 1 niniejszej instrukcji.
- KROK 5: Jeśli weryfikacja pamięci programu przebiegnie pomyślnie, sterownik wyśle komunikat Sukces i wykona instrukcję skoku w pamięci programu pod adres $0000.