Bootloader AVR109

background image

24

Programowanie

E l e k t ro n i k a d l a Ws z y s t k i c h

PaŸdziernik 2008

PaŸdziernik 2008

Początek wakacji okazał się czasem inten-
sywnych pytań na mojej skrzynce mailowej,
związanych z zestawem AVT-3505. Okazuje
się, że wielu Czytelników wybrało ten okres
na zamówienie urządzenia. Jest dla mnie
miłym zaskoczeniem, że projekt przeżywa
aktualnie drugą młodość. Postanowiłem też
sprawdzić, jak mogę jeszcze uprzyjemnić
korzystanie z płytki.

W swoich listach Czytelnicy skarżą się

na utrudnienia związane z programowa-
niem przy pomocy komputera niewyposa-
żonego w porty LPT ani COM, przy czym
okazuje się także, że przejściówki z portu
USB nie umożliwiają stosowania prostych
programatorów. Problemowi temu da się
zaradzić w prosty sposób. W tym artyku-
le pokażę zaimplementować bootloader z
noty aplikacyjnej AVR109. Jego ogromną
zaletą jest wsparcie ze strony AVRStudio.
Dla wielbicieli innych programów infor-
macja także jest dobra – wspiera go także
AVRdude oraz AVROSP.

Jeśli zechcesz, po prostu skorzystać z

wygody, jaką daje bootloader, nie wgłębiając
się na razie w jego konfigurację oraz kompi-
lację, będziesz mógł pobrać gotowe pliki ze
strony Elportalu. Wszystkich zapraszam do
lektury artykułu.

AVR109 – co to jest i skąd to wziąć?
AVR109 to nota aplikacyjna firmy Atmel opisują-
ca przykładowy bootloader dla procesorów AVR.
Mimo tego, że w sieci można znaleźć sporo pro-
jektów z bootloaderami pracującymi przez chyba
każdy możliwy interfejs, siłą wspomnianej noty
jest to, że tworzy pewien standard, obsługiwany
nie tylko przez oprogramowanie producenta.

Notę tę, w postaci opisu w pliku PDF oraz

kodów źródłowych dla kompilatora C firmy
IAR oraz kompilatora GCC, można pobrać
ze strony www.atmel.com. W dziale AVR
8-Bit RISC
wybieramy Application Notes.
Po odnalezieniu AVR109: Self Programming
pobieramy pliki programu (ikona płyty CD).
Mimo że nie jest to konieczne do zrozumienia
dalszej części opisu, warto zainteresować się
dostępną na stronie, solidnie przygotowaną,
dokumentacją w pliku PDF.

Co mamy?
Ze strony firmy ATMEL powinniśmy pobrać
plik AVR109.zip. Proponuję teraz rozpakować
go w dowolne miejsce. W jego wnętrzu znaj-
duje się katalog Source Code. Głębiej mamy
podział na podkatalogi IAR oraz GCC – wybie-
ramy ten drugi.

Ponieważ w ramach kursu C uczyliśmy się

korzystać z Pogrammers Notepada, dla włas-

nej wygody proponuję utworzyć z jego pozio-
mu nowy projekt. Jak to zrobić, przypomina
rysunek 1. Do projektu dodajemy wszystkie
potrzebne pliki źródłowe, są to:

Makefile, defines.h, flash.h, main.c, serial.

h, serial.c.

Plik link.xcl to pozostałość po wersji IAR

– GCC z niego nie korzysta.

Narzędzia pracy mamy już ustawione.

Możemy przejść do konfiguracji.

Konfiguracja
W katalogu znajdziesz jeszcze dwa interesujące
pliki: preprocesor.sh oraz preprocesor.xls. Każdy
z nich ułatwia skonfigurowanie programu do
wybranego typu procesora. Plik preprcesor.sh
może być wywołany z linii komend w środowisku
uniksowym (w tym z poziomu naszego Makefile)
i przeprowadza całą konfigurację automatycznie.
Plik preprocesor.xls ma dokładnie takie samo
przeznaczenie, ale konfiguracja odbywa się za
pomocą rodzaju programu napisanego w formie
arkusza kalkulacyjnego. Mimo natywnego for-
matu Exela, sprawdziłem, że arkusz działa zna-
komicie także w OpenOffice. Dalszy opis będzie
dotyczył konfiguracji za pomocą tego pliku.

Uruchom go teraz w używanym programie i

przejdź do pierwszej zakładki – Documentation.
W tym miejscu znajduje się wyjaśnienie, krok

Rys. 1 Zakładanie nowego projektu i dodawanie do niego istniejących plików

Bootloader AVR109

Bootloader AVR109

,,

czyli jeszcze raz

czyli jeszcze raz

Kurs C

Kurs C

oraz

oraz

AVT-3505

AVT-3505

background image

25

Programowanie

E l e k t ro n i k a d l a Ws z y s t k i c h

PaŸdziernik 2008

PaŸdziernik 2008

po kroku, jak przeprowadzić konfigurację.
Poniżej przedstawiam, jakie kroki powin-
niśmy wykonać w przypadku korzystania
z kompilatora GCC:

1. Przechodzimy na zakładkę o nazwie

defines_h. Komórki, które powinniśmy
ręcznie zmienić, są wyróżnione przez
czerwony tekst na żółtym tle.

2. W wierszu 7 zmieniamy tekst

_ATMEGAXXX na odpowiadający naszemu
procesorowi (_ATMEGA162).

3. W wierszu 8 zmieniamy tekst _Bxxxx na

wielkość odpowiadającą rozmiarowi, w sło-
wach, naszej sekcji bootloadera (_B1024).

4. W wierszach 17–19 znajduje się definicja

wyprowadzenia odpowiadającego za wejście
w tryb bootloadera. Wyprowadzenie to będzie
sprawdzane podczas startu. Jeśli będzie ono
zwarte do masy, wystartuje bootloader. Jeśli
chcemy aby uruchamiało go przytrzymanie w
chwili startu przycisku S1, wpisujemy kolejno
PORTE, PINE, PE0.

5. Dwa ostatnie wiersze do ustawienia

mają numery 22 i 23. Wpisujemy tutaj warto-
ści odpowiadające częstotliwości taktowania
procesora oraz używanej prędkości transmi-
sji. W związku z tymi parametrami wynika
pewien problem, związany z prędkością trans-
misji wymaganą przez AVRProga. Sprawę tą
wyjaśnimy sobie za chwilę.
Uwaga. Nie zmieniamy tutaj nic poza oznaczo-
nymi polami. Reszta pól zostanie wyliczona auto-
matycznie. Fragment prawidłowo wypełnionego
pliku, dla płytki AVT3505, pokazuje rysunek 2.

Co zrobić z wypełnionym plikiem prepro-
cessor.xls
Na czym polega idea utworzonej konfiguracji?
Sprawa jest bardzo prosta. Z otrzymanego pliku
skopiujemy potrzebne dane do dwóch innych pli-
ków. Pierwsze, na co zwracamy uwagę, to wiersz
2. Spójrz ponownie na rysunek 2. Pierwszą,

pojawiającą się liczbę szes-
nastkową za słowem CODE,
czyli w naszym przypadku
3800, wykorzystamy do pliku
Makefile. Otwórz teraz ten
plik. Liczbę tę przypiszemy
do BASEADDR, w pobliżu
14 linii. Jeśli jesteśmy już
w tym pliku, od razu usta-
wiamy odpowiedni procesor.
Po tych zabiegach, począ-
tek pliku Makefile, będzie
wyglądał jak na listingu 1.

Zauważ teraz, że w wier-

szu 4 na 2 mamy napis:
„Utwórz plik (defines.h) zawierający co następu-
je:”.
Zaznaczamy więc wiersze od 5, do końca
arkusza.
Kopiujemy i wklejamy do pliku defines.
h.
Nie zważamy na to, co w tym pliku już jest. Po
prostu kasujemy całość i wklejamy nasze dane.

Konfiguracja została praktycznie skoń-

czona. Jednak czekają tutaj pewne drobne
pułapki...

Wymagana prędkość transmisji i związane
z tym problemy

Jeśli koniecznie chcesz korzystać z AVRProga
wbudowanego w AVRStudio, natkniesz się na

pewien problem. Aktualnie
AVRProg wymaga, aby
prędkość, z jaką układ poro-
zumiewa się z programem
wynosiła 115,2kbps. Nie da
się niestety z wystarczającą
dokładnością uzyskać takiej
prędkości na wewnętrznym
generatorze RC. Konieczne
będzie zastosowanie kwarcu
o jednej z podanych wartości:
1,8432MHz; 3,6864MHz;
7,3728MHz; 11,0592MHz;
14,7456MHz; 18,4320MHz.
W czasie prac prototypo-
wych wybrałem wartość
11,0592MHz i program dla
tej wartości został przeze
mnie sprawdzony.

Jeśli nie chcesz korzy-

stać z AVRProga, a jedynie
z AVRdude, sytuacja jest o
tyle komfortowa, że można
skonfigurować program do
pracy z prędkością 38,4kbps.
Prędkość taka jest możliwa
do uzyskania z wystarczającą
dokładnością na wewnętrz-
nym generatorze RC 8MHz.
Kosztem zmniejszenia szyb-
kości transmisji programu
unikamy konieczności stoso-
wania zewnętrznego oscyla-
tora.

Udajemy ATmega169
Zakładka Part_definitions
w pliku preprocessor.xls
zawiera dane poszczegól-
nych typów procesorów. Z
niej kopiowane są odpowied-
nie dane do zakładki defi-
nes_h.
Znajdziesz tutaj w
kolumnie F nagłówek Part
code (AVRProg)
. Tutaj nasz

ATmega162 posiada kod 0x63. Okazuje się
jednak, że aktualna wersja (1.40) nie obsługu-
je tego kodu. Pełną listę obsługiwanych przez
ten program kodów, znalezioną na forum stro-
ny www.avrfreaks.net, zebrałem w tabeli 1.

Mimo tego, że ATmega162 zastępuje

wycofany już ATmega161, pojawiają się tutaj
znaczne różnice w bitach ustawień (fusach).

O ile procesor ATmega169 pod względem funk-

cjonalnym różni się dość znacznie od ATmega162,
to od strony wielkości posiadanych pamięci są
identyczne. Ponadto, „fusy” ATmega169 róż-
nią się tylko tym, że w bajcie rozszerzonym
(Extended Fuse Byte) brak bitu kompatybilności
z ATmega161. Tak naprawdę AVR109 nie wspiera
możliwości programowania fusów. Umożliwia
jedynie ustawianie bitów zabezpieczeń, więc jeśli
wybierzemy kod BOOT procesora ATmega169,
możemy bezpiecznie przeprowadzić programo-
wanie naszego ATmega162.

Po skończonej konfiguracji może okazać

się, że jeśli teraz skompilujesz program,
nasza płytka nie będzie prawidłowo widzia-
na przez AVRProg i nie da się zaprogramo-
wać. Zwróć baczną uwagę na dwa kolejne
podtytuły.

Po skończonej konfiguracji może okazać

się, że jeśli teraz skompilujesz program,
nasza płytka nie będzie prawidłowo widzia-
na przez AVRProg i nie da się zaprogramo-
wać. Zwróć baczną uwagę na dwa kolejne
podtytuły.

MCU

= atmega162

FORMAT

= ihex

TARGET

= bootloader

SRC

= main.c serial.c

ASRC

=

OPT

= s

BASEADDR

= 0x3800

Rys. 2 Konfiguracja dla AVT3505

Listing 1 Zmiany w Makefile

Tab. 1 Lista układów

obsługiwanych przez
AVRProg 1.40

Kod

Obsugiwany ukad

0x10

AT90S1200rev.A

0x11

AT90S1200rev.B

0x12

AT90S1200rev.C

0x13

AT90S1200

0x20

AT90S2313

0x28

AT90S4414

0x30

AT90S4433

0x34

AT90S2333

0x38

AT90S8515

0x3A

ATmega8515

0x3B

ATmega8515 BOOT

0x41

ATmega103

0x42

ATmega603

0x43

ATmega128

0x44

ATmega128 BOOT

0x45

ATmega64

0x46

ATmega64 BOOT

0x48

AT90S2323

0x4C

AT90S2343

0x50

ATtiny11

0x51

ATtiny10

0x55

ATtiny12

0x56

ATtiny15

0x58

ATtiny19

0x5C

ATtiny28

0x5E

ATtiny26

0x60

ATmega161

0x61

ATmega161 BOOT

0x64

ATmega163

0x65

ATmega83

0x66

ATmega163 BOOT

0x67

ATmega83 BOOT

0x68

AT90S8535

0x69

ATmega8535

0x6C

AT90S4434

0x70

AT90C8534

0x71

AT90C8544

0x72

ATmega32

0x73

ATmega32 BOOT

0x74

ATmega16

0x75

ATmega16 BOOT

0x76

ATmega8

0x77

ATmega8 BOOT

0x78

ATmega169

0x79

ATmega169 BOOT

background image

26

Programowanie

E l e k t ro n i k a d l a Ws z y s t k i c h

PaŸdziernik 2008

PaŸdziernik 2008

Zdecydowałem się

więc, dla AVRProga
przedstawić układ jako
ATmega169. W całej
„sztuczce” chodzi o
to, aby przestawić się
odpowiednio tylko dla
programu

AVRProg.

Reszta ustawień bootlo-
adera powinna pozostać
bez zmian. Zrobimy to
przez zmianę jednej linii
bezpośrednio w pliku
defines.h. Odnajdź sek-
cję oznaczoną komen-
tarzem /* definitions
for device recognition
*/.
Na samym począt-
ku pojawia się defi-
nicja

PARTCODE.

Zmieniamy przypisaną
tutaj liczbę na 0x79 –
kod dla procesora ATmega169. Natomiast bajty
sygnatury pozostawimy bez zmian. Pokazuje
to listing 2.
Zmiany w kodzie dla prawidłowej pracy
także z AVRdude
Wygląda na to, że w oryginalnym kodzie
AVR109 powstał błąd, który uniemożliwia
sprawną współpracę w AVRdude. Informacja
na ten temat została przeze mnie przesłana do
odpowiedniego działu firmy ATMEL, jednak
trudno powiedzieć, czy zostanie ona uwzględ-
niona. Problem polega na tym, że bootloader
w czasie czyszczenia pamięci Flash odpowiada
sygnałem gotowości już w trakcie czyszczenia
ostatniego bloku pamięci. AVRdude zaczy-
na natychmiast wypełniać bufor tymczasowy
pamięci Flash, ale ponieważ pamięć ta jest
zajęta, pierwsze wpisane do niej bajty zostają
uszkodzone (mają wartość 0xff). A problem
można rozwiązać naprawdę bardzo łatwo.

Otwórz plik main.c bootloadera w edy-

torze. W okolicy 105 linii zaczyna się frag-
ment odpowiedzialny za kasowanie pamięci
FLASH. Możesz znaleźć go, szukając słów
„Chip erase”. Zmieniamy go tak, aby wyglą-
dał jak na listingu 3. Dodany fragment został
specjalnie oznaczony. Teraz wszystko
będzie działało prawidłowo.

Kompilacja
Po opisanej konfiguracji, kompila-
cję przeprowadzamy standardowo,
jak do tej pory. Jeśli posiadasz
Programmers Notepada skonfi-
gurowanego zgodnie z kursem,
kompilacja powinna zadziałać
po wybraniu F7. Przy domyśl-
nych ustawieniach WinAVR jest
ona także możliwa przez wydanie
polecenia Tools->(WinAVR) make
albo przez wpisanie komendy
make z konsoli z poziomu katalo-
gu projektu.

Programowanie procesora
skompilowanym kodem
W tej chwili konieczne jest
jeszcze posiadanie stan-
dardowego programatora.
Pocieszające jest jednak to,
że jeśli teraz uda nam się

zaprogramować procesor,
w przyszłości będzie można
na nim wykonać masę eks-
perymentów bez koniecz-

ności wpinania się do złącza ISP.

Na stronie Elportalu znajdą się wygodne

pliki dla PonyProga, które automatycznie prze-
prowadzą cały proces wraz z odpowiednim
ustawieniem bitów konfiguracyjnych. W innym
przypadku konieczne jest ręczne ustawienie
rozmiaru sekcji bootloadera na 1024 słowa,
włączenie skoku do sekcji bootloadera po zero-
waniu oraz, zależnie od wybranej wersji, odpo-
wiednie wybranie źródła taktowania procesora.

Uruchomienie bootloadera
Jeśli program bootloadera został skonfiguro-
wany zgodnie z opisem, jego uruchomienie
następuje przez przytrzymanie przycisku S1
w chwili startu procesora. W praktyce ozna-
cza to albo trzymanie przycisku w chwili
włączania zasilania płytki, albo przytrzymanie
przycisku S1 w czasie i chwilę po zerowaniu

procesora przyciskiem RESET na
płytce głównej. Po takim zabie-
gu przycisk S1 można zwolnić.
Procesor teraz wykonuje program
bootloadera i czeka na polecenia z
portu szeregowego.

Korzystanie z bootloadera –

AVRProg
Jeśli nasz procesor jest zaprogra-
mowany programem bootloadera,

który porozumiewa się z prędkością 115,2kbps
oraz udaje procesor ATmega169, możemy
posłużyć się wygodnym programatorem wbu-
dowanym w środowisko AVRStudio.

Po uruchomieniu bootloadera przechodzi-

my do komputera. Uruchamiamy AVRStudio.
Nie musimy otwierać żadnego projektu. Z
menu głównego wybieramy: Tools->AVR
Prog.
Jeśli wszystko przebiegło prawidło-
wo, zobaczysz okno widoczne na rysunku
3.
Możesz teraz wybrać plik do zapisania
i zaprogramować procesor. Po naciśnięciu
przycisku Advanced ujrzymy okienko pokazu-
jące aktualną konfigurację bitów ustawień (nie
można jednak ich zmieniać) oraz uzyskamy
możliwość konfiguracji bitów zabezpieczeń.

Jeśli program się nie uruchomi, tylko

wyświetli komunikat widoczny na rysunku 4,
oznacza to albo złe połączenie, albo nieprawid-
łowe ustawienie prędkości transmisji w pro-
cesorze – pamiętaj o konieczności stosowana
zewnętrznego kwarcu. Może oznaczać także,
że program bootloadera nie działa – spróbuj
ponownie uruchomić płytkę, trzymając S1.

Zwróć uwagę, że w polu Device, na 3,

znajduje się nazwa wybranego procesora
(ATmega169 BOOT). Jeśli jej nie ma, ozna-
cza to, że procesor nie został prawidłowo
rozpoznany i jego programowanie okaże
się niemożliwe. W takim przypadku świad-
czy to o nieprawidłowym ustawieniu stałej
PARTCODE w pliku defines.h. Zajrzyj do
części o udawaniu ATmega169.

Bootloader z poziomu AVRdude
Część osób zauważa zapewne, że im dłużej
pracuje się na komputerze, tym bardziej lubi się
programy konsolowe. Po prostu często łatwiej i
szybciej jest wpisać z konsoli kilka komend niż
sięgać po myszkę i wybierać odpowiednie opcje z
menu. Inną sprawą jest możliwość łatwego pisa-
nia skryptów. Wtedy, po wybraniu odpowiednie-
go pliku wsadowego, cały proces programowania
zostanie przeprowadzony automatycznie. Jest to
istotny powód, dla którego coraz bardziej prze-
konuję się do AVRdude.

AVRdude jest programem o otwartym

kodzie, więc nie ma co się obawiać, że
pewnego dnia straci wsparcie producenta.
W moim odczuciu ma on większe możli-
wości niż promowany przez firmę ATMEL
podobny program, także z otwartym kodem
AVROSP (AVR Open Source Programmer).
Ponadto, obsługa AVRdude jest domyślnie

/* defi nitions for device recognition */

#defi ne PARTCODE 0x79
#defi ne SIGNATURE_BYTE_1 0x1E
#defi ne SIGNATURE_BYTE_2 0x94
#defi ne SIGNATURE_BYTE_3 0x04

Listing 2 Udawanie ATmega169 przed AVRProg

//

Chip

erase.

else

if

(val==

’e’

)

{

for

(address =

0

; address < APP_END;

address

+=

PAGESIZE)

{

_WAIT_FOR_SPM();

#ifdef __ICCAVR__
#pragma diag_suppress=Pe1053
#endif

_PAGE_ERASE(

address

);

#ifdef __ICCAVR__
#pragma diag_default=Pe1053
#endif

}

_WAIT_FOR_SPM();
sendchar(

‘\r’

);

// Send OK back.

}

Listing 3 Naprawa kasowania w AVR109

Rys. 3 Okno główne pracującego

programu AVRProg

Rys. 4 Brak wykrycia bootloadera

przez AVRProg

background image

27

Programowanie

E l e k t ro n i k a d l a Ws z y s t k i c h

PaŸdziernik 2008

PaŸdziernik 2008

wbudowana w plik Makefile z WinAVR...
znacznie ułatwia to pierwsze eksperymenty.

Aby nie przedłużać sprawy, skonfiguru-

jemy Makefile jednego z programów kursu
C w taki sposób, aby można było swo-
bodnie korzystać z bootloadera AVR109.
Wybrałem program LCD_dynamic z części
9.
Identycznie jednak można postąpić z każ-
dym udostępnionym na Elportalu programem
– patrz też przypis na końcu artykułu.

Otwieramy do edycji plik Makefile. W pliku

tym, przed linią 200, znajduje się sekcja ozna-
czona Programming Options (avrdude). Listing
4
pokazuje konieczne zmiany. Odpowiednio
ustawiamy typ programatora. Nazwę portu
ustawiamy na port, do którego rzeczywiście
podłączyliśmy naszą płytkę. Dodana została
także stała określająca prędkość transmisji.
Tuż przed końcem sekcji ustawień programa-
tora znajdziemy ustawianie odpowiednich flag.
Skorzystamy tutaj z dodanej stałej AVRDUDE_
BOUD
zgodnie z listingiem 5.

Teraz jeszcze jedno: jeśli zainstalowałeś

WinAVR bez dodawania jego ścieżki do syste-
mowego PATH-a, konieczne jest też utworze-
nie odpowiedniego pliku wsadowego. Plik,
którego zawartość pokazuje listing 6, należy
wywołać z poziomu katalogu projektu. U sie-
bie plik ten nazwałem program.bat i umieści-
łem w katalogu instalacyjnym WinAVR.

Możesz wywołać go z linii poleceń,

możesz także dodać odpowiednie narzędzie

do Programmers Notepada. Przypominam
skrótowo, jak to zrobić: Z menu głównego
wybierz opcję Tools->Options. Dalej postępuj
zgodnie z rysunkiem 5.

Warto korzystać z AVRdude z poziomu

Makefile. Został on napisany w taki sposób,
że jeśli w programie dokonaliśmy zmian i
jeśli bez wybierania opcji kompilacji wybie-
rzemy opcję programowania, narzędzie make
wykryje, że istnieją kody źródłowe o dacie
nowszej niż plik wynikowy i automatycznie
wywoła kompilację – nie będzie więc przy-
padku, że zapomnimy coś skompilować i
załadujemy do procesora kod bez poprawek.
Dlatego też dobrze jest, zgodnie z rysunkiem
5, zaznaczyć w opcjach naszego narzędzia
programowania opcję zapisu zmienionych
plików przed jego wywołaniem.

Praca na przejściówce USB->RS232
Oba programy zostały sprawdzone przy współ-
pracy z przejściówką USB->RS232. Radzą sobie
znakomicie. Jedynie wbudowany w AVRStudio
AVRProg
sprawia drobny problem. Okazuje się,
że program ten po uruchomieniu automatycznie
przeszukuje porty w poszukiwaniu obsługiwa-
nego urządzenia. Jednak poszukiwania prowadzi
jedynie na portach COM1...COM4. W moim
przypadku przejściówka zainstalowała się jako
port COM8, co uniemożliwiło prawidłową współ-
pracę z tym programem. W systemie Windows
XP możemy przypisać dowolny numer portu
takiej przejściówce. Można to zrobić z pozio-
mu menadżera urządzeń, wybierając we właści-
wościach przejściówki w zakładce Ustawienia
portu
przycisk Zaawansowane... Ponieważ porty
COM1...COM4 są domyślnie przypisane do
fizycznej przestrzeni adresowej urządzeń wej-
ścia--wyjścia procesora, może pojawić się kilka

ostrzeżeń o możliwych problemach. Jednak w
nowych komputerach na przykład port COM4
nie istnieje, można więc bezpiecznie zignorować
pojawiające się okienka i kontynuować zmiany.
Po zmianie nazwy portu emulowanego przez
przejściówkę na jedną z zakresu COM1...COM4
AVRProg zacznie wykrywać naszą płytkę.

Należy zdawać sobie sprawę, że przejściówka

USB->RS232 ma złącze takie, jakby podłączyć
się do komputera kablem 1:1. Konieczny jest
więc jeszcze przewód Null Modem albo prosta
przejściówka krosująca odpowiednie sygnały.

Podsumowanie
Po wgraniu booloadera na płytkę komfort pracy
znacznie wzrasta. Niezależnie od posiadanej
wersji, znikają wszelkie problemy wynikające
ze współdzielenia linii interfejsu wyświetlacza
alfanumerycznego z liniami SPI. Program
ten znakomicie działa z przejściówką USB-
>RS232, co ucieszy na pewno posiadaczy
nowoczesnych komputerów pozbawionych
portów COM oraz LPT. Zauważyłem także
wzrost szybkości programowania w stosunku
do programatora STK200.

Osobiście, po przyzwyczajeniu się do tego

programu, niechętnie wracam do poczci-
wego STK200 podczas eksperymentów z
AVT3505.

Radosław Koppel

radoslaw.koppel@elportal.pl

Uwaga: Podany program nie jest prawidłowo
kompilowany przez GCC w wersji 4.3. Jedną
z głównych przyczyn takiego stanu rzeczy jest
fakt, że GCC w wersji 4.3 inaczej obsługuje
niestatyczne funkcje typu inline. Występują
jednak także inne problemy, w sprawie których
pozostaję w kontakcie z twórcami WinAVR.
Kody programów z kursu najlepiej kompilo-
wać w WinAVR w wersji 20071221.

AVRDUDE_FLAGS

= -p

$(MCU)

-P

$(AVRDUDE_PORT)

-c

$(AVRDUDE_PROGRAMMER)

-b

$(AVRDUDE_BOUD)

Listing 5 Modyfikacja flag AVRdude w celu wybrania prędkości transmisji

Rys. 5 Dodawanie narzędzia programowania do Programmers Notepad’a

AVRDUDE_PROGRAMMER

= avr109

# com1 = serial port. Use lpt1
# to connect to parallel port.

AVRDUDE_PORT

= com4

AVRDUDE_BOUD

= 115200

Listing 4 Ustawienia AVRdude w Makefile


Wyszukiwarka

Podobne podstrony:
Bootloader dla mikrokontrolerów AVR
Bootloader Errata Sheet
Bootloader dla mikrokontrolerów STM32 Aktualizacja oprogramowanie z zastosowaniem karty SD lub prze
Root ICS 4 0 4 zablokowany Bootloader
03 Locked i Unblocked Bootloader
In System Programming T89C51RD2 Bootloader
Bootloader AVR cz 2
Bootloader dla mikrokontrolerów AVR
Jak odblokować bootloader w smartfonach Huawei
an143 bootloader88bauds
Odblokowanie bootloadera za pomocą narzędzia od HTC White Fire S
Symbian PDA bootloader Update Manual
HC05 BOOTLOADER

więcej podobnych podstron