Image92 (3)

Image92 (3)



Programowanie



•>


BOOTSZ

Rozmiar pamięci

11

256B

10

512B

01

1024B

00

204 8B


Tabela 9 Rozmiar sekcji BLS w procesorze ATmega162


BOOTSZ=01

BOOTSZ=10

BOOTSZ=11

Woktor rosołu

Początek eokcji bootloadera

(start programu)

(BSL,

Rys. 50 Konfiguracja bootloadera


W dzisiejszym odcinku napiszemy własny program bootloadera. Przedstawię podstawowe informacje o sekcjach pamięci, ich wykorzystaniu oraz sposobie tworzenia. Aby nasz bootloader był jak najmniejszy, część funkcji będzie utworzona w pełnym asemblerze -pojawią się więc informacje, o które pytano mnie w listach od Czytelników.

Ponieważ dla wielu osób pisania bootloa-dera jest czymś nowym, a w ramach kursu BASCOM temat ten nie był omawiany, zanim przejdziemy do pisania aplikacji, przedstawię skrótowo sposób, w jaki nasz procesor wspiera pisanie takiego programu.

Bootloader a procesory AVR

Aktualnie produkowane procesory AVR umożliwiają stworzenie własnej aplikacji ładującej. Producent nie umieszcza w nich żadnego domyślnego programu tego typu. Oznacza to, żc cały trud jego stworzenia spoczywa na programiście. Z drugiej strony, istnieje pełna dowolność jego działania. Do programowania możemy wykorzystać dowolny interfejs. Może to być zarówno interfejs już istniejący, jak i dowolny wymyślony przez nas samych.

Spójrz na rysunek 50. Pokazuje on pewne podstawowe możliwości konfiguracji boot-loadera oraz ideę jego działania. Pamięć programu jest podzielona na dwie części. Pierwsza z nich to sekcja RWW (Read-While-Write). Ten, nieco mylący, skrót w praktyce oznacza, że w chwili zapisywania sekcji RWW możemy wykonywać program z sekcji NRWW Jednak próba odczytu w tym czasie

Szczegóły techniczne Wsparcie dla Bootloadera a wsparcie dla samoprogramowania

W przypadku rodziny procesorów AVR spotkamy się z dwoma mechanizmami umożliwiającymi napisanie kodu programującego ich pamięć FLASH.

Wsparcie dla bootloadera (Boot Loader Support): Pamięć procesora podzielona jest na dwie części. Instrukcja zapisu do pamięci programu jest aktywna jedynie z poziomu sekcji bootloadera (BLS). Rozwiązanie to jest o tyle wygodne, że procesor można

z sekcji RWW może skończyć się zawieszeniem procesora. Druga sekcja nosi oznaczę nie NRWW (No-Read-While-Wnte), co jak łatwo się domyślić oznacza brak możliwości odczytu podczas zapisu. W praktyce oznacza to, żc na czas zapisu do tej części pamięci procesor jest zatrzymywany.

Podział na sekcje RWW i NRWW jest sztywny i skonstruowany w taki sposób, aby sekcja NRWW była w stanie zmieścić naj większy, możliwy dla danego procesora, program bootloadera. W przypadku naszego układu w ATmegal62 sekcja ta zajmuje ostatnie 2KB pamięci.

Kolejny podział pamięci jaki można przedstawić, to sekcja aplikacji oraz sekcja bootloadera (BLS). W odróżnieniu od podziału na sekcje RWW i NRWW, ten podział nie jest już sztywny. Ilość pamięci przeznaczonej na nasz program ładujący możemy ustawić jako 1/8,

1/4,    1/2 lub

całość sekcji NRWW. Związane z tym rozmiary sekcji BLS dla procesora ATine-gal62 pokazuje tabela 9.

W sekcji BLS znajdzie się nasz program ładujący. Istnieje możliwość zabezpieczenia przed zapisem lub odczytem oddzielnie sekcji BLS i aplikacji. Bootloader może wymienić nawet samego siebie. Wymaga to wielkiej ostrożności i jeśli możliwość taka nie jest konieczna, zaleca się ustawienie zabezpieczenia przed zapisem sekcji bootloadera.

skonfigurować w taki sposób, aby po rcsccic startował w trybie bootloadera. W takim przypadku możliwe jest zaprogramowanie procesora, w którym nic ma jeszcze aplikacji lub też w którym aplikacja została uszkodzona. co może się zdarzyć, jeśli podczas programowania zasilanie zostanie odłączone. W ten mechanizm wyposażone są wszystkie aktualnie produkowane „większe” procesory, w tym rodzina ATmega.

Wsparcie dla samoprogramowania (Self-Programming Support): W tym rozwiązaniu nie ma wydzielonej sekcji bootloadera. Instrukcja zapisu do pamięci programu

część 12

BOOTRST=1 -►

BOOTRST=0

NRWW

boo rsz=oo

Uruchomienie programu ładującego może nastąpić na dwa sposoby:

1.    Skok z aplikacji do programu ładującego znajdującego się w sekcji BLS.

2.    Reset procesora, w którym zaprogramowano bit BOOTRST.

Szczególnie interesująca jest druga możliwość. Dzięki temu istnieje możliwość uruchomienia bootloadera, nawet jeśli aplikacja jest uszkodzona. Przy stosowaniu takiego rozwiązania umawiamy się zwykle, ze nasz program ładujący powinien być uruchomiony, jeśli zaraz po zerowaniu procesora wystąpi jakiś specjalny sygnał. Może to być przykładowo zwarcie jednego z wyprowadzeń do masy czy też wysłanie odpowiedniego znaku przez wybrany interfejs. Jeśli taka sytuacja nie ma miejsca, powinniśmy wykonać skok pod adres 0. To rozwiązanie jest wygodne także może być wywołuna z dowolnego miejsca programu. W takim przypadku to na nas spoczywa odpowiedzialność napisania bootloa dera w taki sposób, aby nie uszkodził on sam siebie. Z drugiej strony daje to oardzo wygodną możliwość wykorzystania pamięci FLASH jako dodatkowej, nieulotnej pamięci danych. Rozwiązanie to jest stosowane w procesorach, takich jak ATtiny23l3 czy ATtinv25.

Nasz procesor wyposażony jest w bardziej rozbudowane rozwiązanie i nim właśnie będziemy się dziś zajmować.

39


Elektronika dla Wszystkich Październik2006



Wyszukiwarka

Podobne podstrony:
BIULETYN URZĘDU PATENTOWEGO Nr 1 (940) 2010 A1 (21) 385487 (22) 2008 06 23 (51) E05C 9/10 (2006.01)
Slajd4 (11) Modele programowania równoległego (3/4) ■    Model z pamięcią współdzielo
2. Macierze Program Matlab nie wymaga deklaracji typów danych i ich rozmiarów. Pamięć przydzielana j
79181 Image95 (3) ■ Programowanie Tabela 11 Znaczenie sekcji .initO-9 Sekcja Znaczenia .initO Jeś
10. 100/06 Obsługa programu Excel nauczyciele 30 1 11. 112/06 Tworzenie prezentacji
Program nauki w pierwszym roku szkolenia szachowego: T.1 T.2 T.3 T.4 T.5 T.6 T.7 T.8 T.9 10 11 12 13
Slajd4 (11) Modele programowania równoległego (3/4) ■    Model z pamięcią współdzielo
PROGRAM CZWARTEK 10.11.2011 r. Godł. DYSCYPUNA MIEJSCE 17 00- 21.00 ■HKA SIATKOWA
3. Teoretyczne podstawy programu Zakładając, że sinawa mierzony w radianach: (3.1.10) (3.1.11) •
67793 Slajd4 (11) Modele programowania równoległego (3/4) ■    Model z pamięcią współ
Image93 (4) Programowanie Napity w pamięci programu Podaj wyfafany Jfz^c WfbUntoc# Kontynuujemy dziś

więcej podobnych podstron