Samoprogramowanie AVR cz.2. Opis bootloadera zgodnego z AVR109

Samoprogramowanie AVR cz.2. Opis bootloadera zgodnego z AVR109
Pobierz PDF Download icon
Kontynuujemy cykl artykułów poświęconych bootloaderom do mikrokontrolerów AVR. W artykule opiszemy bootloader udostępniany przez firmę 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.
82 ELEKTRONIKA PRAKTYCZNA 12/2009 NOTATNIK KONSTRUKTORA 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. Samoprogramowanie 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 firmę 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. 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ą konfigurację oraz kompilację bootloadera wykonano dla mikrokontrolera ATmega8. Kon?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 defines.h. Należy go otworzyć do edycji (rys. 7). Jest to plik konfiguracyjny, w  któ- rym ustalamy typ procesora, rozmiar sekcji bootloadera, definiujemy 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 defines_h (rys. 6) automatycznie jest generowany potrzebny kod. Należy pa- miętać, aby modyfikować 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 zerowaniuRys. 6. 83ELEKTRONIKA PRAKTYCZNA 12/2009 Samoprogramowanie AVR 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 zdefiniować, 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 defines.h zamiast danych, które tam są. Dalszej konfiguracji 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?>Configuration 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ę konfiguracje (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. Rys. 7. Rys. 8. R E K L A M A Wgranie bootloadera Podłączamy procesor do równoległego bądź szeregowego programatora. Nim wgra- my program, trzeba jeszcze ustalić odpowied- nie bity konfiguracyjne, mianowicie chodzi o  ustawienie odpowiedniej wielkości sekcji bootloadera oraz ustawienie bitu Bootrst (Boot Reset Vector). Konfigurację Fuse Bits dla naszego przykładu możemy zobaczyć na rys.? 8. Po dokonaniu tych rzeczy zostaje już tylko zaprogramowanie pamięci Flash. 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 weryfikują zapisaną pa- mięć, dlatego mamy pewność, że pamięć Flash lub eeprom została dobrze zaprogramowana. Paweł Klaja, pklaja@o2.pl
Artykuł ukazał się w
Grudzień 2009
DO POBRANIA
Pobierz PDF Download icon
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio październik 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich wrzesień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów