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
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
Plik z chomika:
serialiki-i-filmiki
Inne pliki z tego folderu:
Wielopoziomowe menu w C.pdf
(114 KB)
AVR-owe fusy cz.1.pdf
(401 KB)
AVR-owe fusy cz.2.pdf
(245 KB)
Biblioteka AVRUSB - Programowy interfejs USB w AVR.pdf
(204 KB)
Bity blokujące i bezpieczniki konfiguracji w mikrokontrolerach AVR.pdf
(136 KB)
Inne foldery tego chomika:
ARDUINO
Evil Genius Collection (31 ebooks)
Zrób to sam
Zgłoś jeśli
naruszono regulamin