Bootloader w mikrokontrolerach AVR.pdf

(1025 KB) Pobierz
097-100_bootloader_avr.indd
KURS
Bootloader
w mikrokontrolerach AVR
Przywykliśmy do tego, że aby
zaprogramować pamięć Flash
mikrokontrolera potrzebny
jest specjalny programator
szeregowy lub równoległy.
Niektóre mikrokontrolery potrafią
jednak modyfikować swoją
własną pamięć programu, co
przy zastosowaniu specjalnego
(wpisanego wcześniej do Flash’a)
bootloadera umożliwi również
programowanie układu bez
dodatkowych narzędzi – przez
port szeregowy.
Rekomendacje:
opisana metoda programowania
mikrokontrolerów AVR będzie
przydatna dla każdego
praktykującego elektronika,
w większości przypadków
umożliwi programowanie
układów bez dodatkowego
wyposażenia sprzętowego.
Wykorzystując specjalny program
bootloader – rezydujący w pa-
mięci Flash mikrokontrolera można
dokonywać zmiany jego programu
sterującego poprzez interfejs RS232
lub bardziej popularny USB. Nada-
ją się do tego oczywiście również
i inne interfejsy. W artykule zostanie
przedstawiony przykład uniwersalne-
go bootloadera napisanego w języku
Bascom AVR, który można umie-
ścić w większości mikrokontrolerów
ATmega. Środowisko Bascom AVR
posiada również wbudowaną opcję
aktualizacji programu za pomocą
bootloadera . Zapisanie do mikro-
kontrolera AVR programu bootloade-
ra umożliwi nie tylko jego progra-
mowanie bez użycia zewnętrznego
programatora, ale i nieskompliko-
waną aktualizację oprogramowania.
Choć bootloader ma zalety, to do
jego wad można zaliczyć brak moż-
liwości zmiany bezpieczników mi-
krokontrolera AVR ( Fuse Bits ). Pro-
ducent mikrokontrolerów AVR nie
udostępnia ich z zaprogramowanym
bootloaderem , należy więc go we
własnym zakresie jednokrotnie za-
pisać do wydzielonego obszaru pa-
mięci Flash mikrokontrolera AVR.
Po zapisaniu programu bootloadera
do pamięci mikrokontrolera AVR,
nie będzie już potrzebny zewnętrz-
ny programator. Przykład wykorzy-
stania programu bootloadera zo-
stanie pokazany z wykorzystaniem
mikrokontrolera ATmega8 i pakietu
Bascom AVR.
Program bootloadera
Na rys. 1 pokazano obszar pa-
mięci Flash mikrokontrolera AT-
mega8. Program bootloadera nale-
ży umieścić w obszarze Boot Flash
Section . W przypadku mikrokon-
trolera ATmega8, w zależności od
ustawień Fuse Bits , obszar na boot-
loader może posiadać pojemności
128, 256, 512 lub 1024 słowa. Pro-
gram bootloadera został napisany
przez firmę MCS Electronics. Przez
niewielkie modyfikacje kodu pro-
gramu, można go umieścić w róż-
nych typach mikrokontrolerów AVR.
PODSTAWOWE PARAMETRY
• Możliwość programowania pamięci Flash
i EEPROM mikrokontrolera przez port
szeregowy lub USB (po zastosowaniu
konwertera FT232R)
• Prędkość transmisji max. 115200 bodów
• Zdalne zerowanie mikrokontrolera linią DTR
interfejsu RS232
• Wielkość obszaru pamięci bootloadera:
128, 256, 512 lub 1024 słowa
• Możliwość bezpośredniego korzystania
z bootloadera w pakiecie Bascom AVR
Rys. 1. Obszar pamięci Flash mikro-
kontrolera ATmega8
Elektronika Praktyczna 10/2007
97
686084584.050.png 686084584.058.png 686084584.059.png 686084584.060.png 686084584.001.png
KURS
Rys. 2. Sposób połączenia mikrokontrolera do portu COM komputera podczas programowania z wykorzystaniem bootlo-
adera
Rys. 3. Sposób połączenia mikrokontrolera do portu USB komputera podczas programowania z wykorzystaniem bootlo-
adera
Umożliwia on modyfikowanie za-
równo pamięci Flash, jak i pamięci
EEPROM, która jest programowana
za pomocą bascomowej instrukcji
Writeeeprom . Program bootloade-
ra został zamieszczony na list. 1 .
Maksymalna prędkość transmisji
interfejsu szeregowego RS232 pod-
czas współpracy z bootloaderem jest
równa 115200 bodów. Prędkość tę
można ustawić w programie bootlo-
adera , ale będzie ona zależała od
częstotliwości oscylatora mikrokon-
trolera. W celu uzyskania poprawnej
transmisji przez interfejs RS232, mi-
krokontroler należy taktować z wy-
korzystaniem rezonatora kwarcowe-
go, gdyż wewnętrzny oscylator RC
nie posiada zbyt dużej stabilności.
W programie bootloadera dla danego
typu mikrokontrolera należy odblo-
kować dwie instrukcje. W przypadku
mikrokontrolera ATmega8 będą to:
$regfile = „m8def.dat”
Const Loaderchip = 8
Pierwsza z nich określa typ mi-
krokontrolera, a druga jest stałą,
od której zależy liczba stron ob-
liczanych w dalszej części progra-
mu. W przykładzie mikrokontro-
ler jest taktowany częstotliwością
8 MHz, a prędkość transmisji wyno-
si 38400 bod. W ramach przykładu
wykorzystania bootloadera , mikro-
kontroler został podłączony do kom-
puterowego portu COM1 w sposób
pokazany na rys. 2 . Konwerter MAX
232 jest wymagany ze względu na
rożne poziomy napięć w interfejsie
RS232 komputera i mikrokontrolera.
Dioda D1 sygnalizuje pracę bootlo-
adera . Bootloader może być wywo-
ływany na dwa sposoby: poprzez
instrukcję skoku pod adres bootlo-
adera lub poprzez zerowanie mikro-
kontrolera. Aby zautomatyzować ze-
rowanie, oprogramowanie sterujące
bootloaderem wykorzystuje do tego
celu linię DTR portu COM. Bardzo
ułatwia to wymianę oprogramowa-
nia mikrokontrolera. Linia DTR, po
zmianie poziomu przez układ MAX
232, steruje wejściem zerowania
mikrokontrolera (rys. 2). Zamiast in-
98
Elektronika Praktyczna 10/2007
686084584.002.png 686084584.003.png 686084584.004.png 686084584.005.png 686084584.006.png 686084584.007.png 686084584.008.png 686084584.009.png 686084584.010.png 686084584.011.png 686084584.012.png 686084584.013.png 686084584.014.png 686084584.015.png 686084584.016.png 686084584.017.png 686084584.018.png 686084584.019.png 686084584.020.png 686084584.021.png 686084584.022.png 686084584.023.png 686084584.024.png 686084584.025.png 686084584.026.png 686084584.027.png 686084584.028.png 686084584.029.png 686084584.030.png 686084584.031.png 686084584.032.png 686084584.033.png 686084584.034.png 686084584.035.png 686084584.036.png 686084584.037.png 686084584.038.png 686084584.039.png 686084584.040.png 686084584.041.png 686084584.042.png 686084584.043.png
 
KURS
zależał od sprzętowej, jak i pro-
gramowej budowy projektowanego
urządzenia. W przykładzie jest wy-
korzystywany pierwszy sposób akty-
wacji bootloadera , czyli za pomocą
wejścia zerującego.
Rys. 4. Konfiguracja programu pozwalająca skorzystać z automatycznego uak-
tywniania bootloadera przy każdym włączeniu mikrokontrolera
Programowanie
mikrokontrolera
z wykorzystaniem bootloadera
Mikrokontroler z zapisanym pro-
gramem bootloadera można zapro-
gramować własnym programem
za pomocą programu Bootloader.
exe lub bezpośrednio w pakiecie
Bascom AVR. Na rys. 5 pokaza-
no okno programu bootloader . Za
jego pomocą można wysłać plik
o rozszerzeniu .BIN do mikrokon-
trolera. W menu Options można
wybrać numer portu COM oraz
prędkość transmisji, która powin-
na być zgodna z prędkością usta-
wioną w bootloaderze mikrokontro-
lera. W przypadku programowania
pamięci EEPROM mikrokontrolera,
Rys. 5. Okno programu bootloader
kości obszaru pamięci zajmowanego
przez bootloader . W tym przypadku
ustawiono maksymalny obszar 1024
słów. Z tego sposobu wywoływania
korzysta program obsługujący bootlo-
ader ( Bootloader.exe ) oraz pakiet Ba-
scom AVR. Mikrokontroler jest zero-
wany automatycznie za pomocą linii
DTR. Gdy nie będzie wykorzystywa-
ne automatyczne zerowanie w celu
uaktywnienia bootloadera , można je
przeprowadzić ręcznie za pomocą
przycisku dołączonego do wejścia
zerującego mikrokontro-
ler. Innym sposobem
wywołania bootloadera
jest wydanie rozkazu
skoku pod adres, pod
którym został zapisany
bootloader . Taki skok
może być zainicjowany
przez dowolnie wybra-
ne przez programistę
zdarzenie (np. wciśnię-
cie przycisku). Przykład
programowego wywoła-
nia bootloadera przed-
stawiono na list. 2.
W programie tym
skok do bootloadera
nastąpi, gdy z portu
COM zostanie ode-
brany znak o kodzie
ASCII równym 27
(ESC). Za pomocą in-
strukcji Goto , nastąpi
wówczas skok do po-
czątku programu boot-
loadera . Aktywacja
bootloadera jest sy-
gnalizowana miganiem
diody LED dołączonej
do portu PB.2 mikro-
kontrolera. Linia por-
tu, do której została
dołączona dioda LED
może być skonfigu-
rowana w programie
bootloadera . Sposób
aktywacji bootloadera
w dużej mierze będzie
terfejsu RS232 można również za-
stosować konwerter USB–RS232, na
przykład w postaci układu FT232R,
jak to pokazano na rys. 3 . Diody
D1, D2 sygnalizują przepływ infor-
macji przez port szeregowy, a dioda
D3 sygnalizuje pracę bootloadera .
Oczywiście dla układu FT232R na-
leży zainstalować sterowniki wirtual-
nego portu COM. Po skoku do pro-
gramu bootloadera , oczekuje on na
otrzymanie wartości 123 lub 124.
Po otrzymaniu wartości 123 będzie
programowana pamięć Flash, a po
otrzymaniu wartości 124 pamięć
EEPROM. Pamięć Flash jest zapisy-
wana z wykorzystaniem asemblero-
wej instrukcji SPM. Skonfigurowany
i skompilowany program bootloadera
należy umieścić w mikrokontrolerze
za pomocą dowolnego programatora
mikrokontrolerów AVR. Dodatkowo
w przypadku wykorzystania rezona-
tora kwarcowego należy skonfiguro-
wać jego bezpieczniki ( Fuse Bits ).
Rys. 6. Okno wyświetlające informację o postępie
programowania
Sposoby uaktywniania
bootloadera
Aby skorzystać z automatycznego
uaktywniania bootloadera przy każ-
dym włączeniu mikrokontrolera, na-
leży ustawić fusebit BOOTRST (Fu-
sebit D), jak to pokazano na rys. 4 .
Po ustawieniu tego bitu, najpierw
jest wykonywany skok do programu
bootloadera . Gdy nie zostanie prze-
słana wartość 123 lub 124 w okre-
ślonym czasie, bootloader kończy
działanie i zaczyna być wykonywa-
ny program główny mikrokontrolera.
Fusebity BOOTSZ0 i BOOTSZ1 (Fu-
sebit FE) umożliwiają wybór wiel-
Rys. 7. Konfiguracja środowiska Bascom AVR do
programowania mikrokontrolerów z wykorzystaniem
bootloadera
Elektronika Praktyczna 10/2007
99
686084584.044.png 686084584.045.png 686084584.046.png 686084584.047.png
KURS
plik posiada rozszerzenie .EEP. Pro-
gramowanie mikrokontrolera rozpo-
czyna się od naciśnięcia przycisku
Upload . Wcześniej mikrokontroler
jest zerowany za pomocą sygnału
DTR. Gdy nie jest wykorzystywany
sygnał DTR, należy ręcznie wyze-
rować mikrokontroler. Do mikro-
kontrolera wysłano prosty program
testowy, który pokazano na list. 3.
Powoduje on miganie diody
LED dołączonej do portu PB.4 mi-
krokontrolera. Podczas programowa-
nia mikrokontrolera poprzez pro-
gram bootloader.exe , wyświetlane
jest okno z informacją o postępie
programowania ( rys. 6 ). Programo-
wanie mikrokontrolera z poziomu
Bascom AVR polega na wybraniu
w menu Programmer , typu progra-
matora – MCS bootloader , zgodnie
z rys. 7 . W zakładce Serial można
skonfigurować numer portu oraz
prędkość transmisji, a w zakładce
MCS Loader wielkość bootloadera
oraz sposób jego aktywacji (poprzez
linię DTR). Skompilowany program
można załadować do mikrokontro-
lera naciskając klawisz F4 . Podczas
programowania mikrokontrolera zo-
staje wyświetlone okno pokazane
na rys. 8 . Można również przy-
gotować własną aplikację obsłu-
gującą bootloader dostosowaną do
własnych potrzeb. Po zastosowaniu
konwertera USB–RS232 programo-
wanie mikrokontrolera przy użyciu
bootloadera przebiega identycznie.
List. 2. Przykład programowego wywołania bootloadera
Do ‘pętla do–loop
Print „test” ‘wysłanie przykładowego tekstu
Waitms 1000 ‘opóźnienie 1000 ms
If Inkey() = 27 Then‘jeśli odebrano znak 27, to
Print „boot” ‘wysłanie tekstu boot
Goto &HC00 ‘skok do bootloadera
End If
Loop ‘koniec pętli do–loop
List. 3. Prosty program testowy
$crystal = 8000000 ‚częstotliwość oscylatora
$regfile = „m8def.dat” ‚typ mikrokontrolera
Config Pinb.4 = Output
Do
Toggle Portb.4
Waitms 250
Loop
End
końcowych. Mogą
oni sami je wymie-
nić, bez wysyłania
zakupionego urzą-
dzenia do serwisu.
W przypadku pa-
kietu Bascom AVR,
wgrany wcześniej
do mikrokontrolera
bootloader można
wykorzystywać za-
miast dodatkowego
programatora. Wy-
starczy nacisnąć
klawisz F4 , a skom-
pilowane oprogra-
mowanie zostanie
przesłane do mikro-
kontrolera. We wła-
snych aplikacjach
sposób aktywacji bootloadera w du-
żej mierze będzie zależeć od budo-
wanego urządzenia. Wykorzystując
uniwersalny bootloader firmy MCS
Electronics komunikacja przebiega
za pomocą interfejsu RS232, Sto-
sując konwerter USB–RS232 można
uzyskać układ programowany za
pomocą interfejsu USB. Oczywiście
Rys. 8. Okno wyświetlane podczas programowania
mikrokontrolera
załadowanie bootloadera będzie
możliwe tylko w mikrokontrolerach
AVR, które posiadając wydzielony
dla niego obszar pamięci. Więk-
szość mikrokontrolerów ATmega
posiada tę możliwość .
Marcin Wiązania, EP
marcin.wiazania@ep.com.pl
Podsumowanie
Wykorzystując mikrokontro-
ler z załadowanym bootloaderem ,
w nieskomplikowany sposób uzy-
skujemy możliwość aktualizacji
oprogramowania, co ma duże zna-
czenie w przypadku użytkowników
R
E
K
L
A
M
A
100
Elektronika Praktyczna 10/2007
686084584.048.png 686084584.049.png 686084584.051.png 686084584.052.png 686084584.053.png 686084584.054.png 686084584.055.png 686084584.056.png 686084584.057.png
Zgłoś jeśli naruszono regulamin