Bootloader AVR cz.2.pdf

(421 KB) Pobierz
652390877 UNPDF
NOTATNIK KONSTRUKTORA
AVR (2)
Opis bootloadera
zgodnego z AVR109
Dodatkowe materiały na CD i FTP:
host: ep.com.pl , user: 12235 , pass: 60u61csy
• pierwsza część artykułu
Kontynuujemy cykl artykułów poświęconych bootloaderom do
mikrokontrolerów AVR. W  artykule opiszemy bootloader udostępniany
przez i rmę Atmel w  nocie aplikacyjnej AVR109. Umożliwia on
samoprogramowanie różnych mikrokontrolerów z  rodziny ATmega.
Podany niżej użyteczny przykład będzie dotyczył ATmega8.
W  tej części artykułu weźmiemy na
warsztat darmowy bootloader udostępniony
przez Atmela. Do kompilacji i uruchomienia
będzie potrzebne AVR Studio, które można
pobrać ze strony http://www.atmel.com oraz
nota aplikacyjna AVR109 ( http://www.atmel.
com/dyn/products/app_notes.asp?family_
id=607 ). W nocie oprócz kodu źródłowego
znajduje się przydatny arkusz kalkulacyjny.
można też ściągnąć program AVR-OSP II
( http://www.esnips.com/web/AtmelAVR ), dzię-
ki któremu będziemy mogli programować
także nowsze mikrokontrolery.
Po pobraniu niezbędnych plików należy
zainstalować programy oraz rozpakować kod
źródłowy. Opisaną w tym artykule przykłado-
wą koni gurację oraz kompilację bootloadera
wykonano dla mikrokontrolera ATmega8.
Konfi guracja bootloadera
Na początku należy otworzyć kod źródło-
wy w AVR Studio. Po otwarciu, w bocznym
panelu w folderze Header Files znajdziemy
plik dei nes.h. Należy go otworzyć do edycji
( rys. 7 ). Jest to plik koni guracyjny, w któ-
rym ustalamy typ procesora, rozmiar sekcji
bootloadera, dei niujemy porty, do którego
podłączono przycisk włączający bootloader,
podajemy częstotliwość taktowania mikro-
kontrolera oraz prędkość komunikacji przez
port szeregowy (UART). W tym pliku rów-
nież przypisujemy odpowiednim rejestrom
nazwy. Wynika to z faktu, że wraz z pojawia-
niem się nowych modeli AVR-ów zmieniały
się nazwy niektórych rejestrów (oczywiście
nie tylko nazwy, ale to już wykracza poza
ramy tego artykułu). Na szczęście nie trzeba
tego robić ręcznie, skrypt w Excelu sam wy-
generuje odpowiednie nazwy i dodatkowo
sprawdzi, czy bootloader zmieści się w pa-
mięci.
Arkusz kalkulacyjny wykonujący wspo-
mniane obliczenia zapisano w  pliku pre-
processor.xls . Aby go otworzyć, należy
oczywiście dysponować komputerem z za-
instalowanym programem Excel. Arkusz po
otwarciu ustawia się na pierwszej zakładce,
w której jest umieszczona instrukcja posługi-
wania się kalkulatorem. W drugiej zakładce
o nazwie dei nes_h ( rys. 6 ) automatycznie
jest generowany potrzebny kod. Należy pa-
miętać, aby modyi kować tylko żółte pola!
W pierwszym polu ustawia się typ mikro-
kontrolera, następnie wielkość sekcji bo-
otloadera (w słowach!). W kolejnych trzech
polach należy wpisać oznaczenie portu, re-
jestru pin oraz numer pinu, dzięki któremu
bootloader będzie się włączał. Chodzi o to,
że po włączeniu zasilania lub zerowaniu
Rys. 6.
82
ELEKTRONIKA PRAKTYCZNA 12/2009
Samoprogramowanie
652390877.002.png 652390877.003.png
Samoprogramowanie AVR
Rys. 8.
rys. 8 . Po dokonaniu tych rzeczy zostaje już
tylko zaprogramowanie pamięci Flash.
Rys. 7.
Zasada działania
Teraz możemy już odłączyć programator
i wypróbować samoprogramowanie. Po pod-
łączeniu układu do portu szeregowego należy
go wyzerować, podając jednocześnie „0” na
zadeklarowaną wcześniej nóżkę mikrokontro-
lera. Teraz trzeba uruchomić program Avr-Osp
II lub z Avr Studio program AVR prog (menu
Tools–>AVR prog ). Programy same wykrywają,
jaki układ jest podłączony. Oba programy są
bardzo intuicyjne, dlatego nie będę opisywał
ich obsługi. Wszystko sprowadza się do otwar-
cia pliku hex i naciśnięcia przycisku Write lub
Program . Programy weryikują zapisaną pa-
mięć, dlatego mamy pewność, że pamięć Flash
lub EEPROm została dobrze zaprogramowana.
Paweł Klaja, pklaja@o2.pl
program sprawdza, czy na tym wejściu mi-
krokontrolera jest stan „0”, jeśli tak, to włą-
cza boot loader, jeśli nie, to skacze do sekcji
aplikacji. W kolejnym polu można ustalić
wartość kwarcu jakim jest taktowany mikro-
kontroler, wartość podajemy w hercach, na-
leży zdeiniować, z jaką prędkością ma dzia-
łać port szeregowy (ale jeśli ustawimy inną
niż 115.200, to bootloader nie będzie już
mógł wspólpracować z AVR Studio, pozosta-
nie „tylko” Avr-Osp II). Po ustawieniu tych
wszystkich opcji należy skopiować wszystko
od wiersza 5 do 50, a następnie wkleić do
pliku deines.h zamiast danych, które tam są.
Dalszej koniguracji możemy dokonać w pli-
ku main.c (boczny panel w „folderze” Source
Files), programiści zaoferowali nam „regula-
cje” funkcjonalności bootloadera po linijce /*
Uncomment the following to save code spa-
ce */ można wyłączyć niektóre możliwości
programu, np. możliwość programowania
pamięci EEPROm. Dzięki temu możemy
zmniejszyć rozmiar programu i „zmieścić”
się w sekcji o rozmiarze 512 słów zamiast
1024 (bo tyle potrzeba na bootloader z peł-
ną funkcjonalnością). Przed kompilacją trze-
ba jeszcze zakomunikować linkierowi, aby
program nie znajdował się od adresu 0, lecz
od początku sekcji bootloadera. Robi się to
w następujący sposób: uruchamiamy z menu
Project–>Coniguration Options . Ukaże się
okienko, w którym należy wskazać typ pro-
cesora oraz w zakładce Custom Options dla
linkiera należy dodać następującą regułę –
Ttext=0x1800 , gdzie 0x1800 to adres po-
czątku sekcji bootloadera, np. można go
wziąć z pliku, w którym przygotowywało
się koniguracje ( preprocessor.xls ), na górze
można znaleźć następującą linikę: Z(CODE)
INTVEC, FAR_F,SWITCH, CODE=1800-1FFF.
To właśnie z niej można wziąć adres. Pod do-
konaniu tych zmian można już skompilować
program.
Wgranie bootloadera
Podłączamy procesor do równoległego
bądź szeregowego programatora. Nim wgra-
my program, trzeba jeszcze ustalić odpowied-
nie bity koniguracyjne, mianowicie chodzi
o ustawienie odpowiedniej wielkości sekcji
bootloadera oraz ustawienie bitu Bootrst
(Boot Reset Vector). Konigurację Fuse Bits
dla naszego przykładu możemy zobaczyć na
R
E
K
L
A
m
A
ELEKTRONIKA PRAKTYCZNA 12/2009
83
652390877.004.png 652390877.005.png 652390877.001.png
 
Zgłoś jeśli naruszono regulamin