RTV forum PL | NewsGroups PL

Bootloader w AVR: osobne projekty czy wspólne z aplikacją - co wybrać?

AVR - bootloader

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Bootloader w AVR: osobne projekty czy wspólne z aplikacją - co wybrać?

a_a
Guest

Wed Nov 22, 2006 10:37 am   



Dzień dobry,
Zamierzam pierwszy raz użyć bootloadera w urządzeniu z procesorem AVR
(program w avr-gcc). W związku z tym mam 2 koncepcje: aplikacja i
bootloader w osobnych projektach (1) lub w tym samym (2). Która z nich
jest lepsza i jakie zagrożenia mogą mnie czekać? Urządzenie będzie
domyślnie startować z bootloadera i w przypadku istnienia aplikacji
automatycznie do niej wskakiwać. Bootloader będzie też można wywołać już
z pracującej aplikacji. Zamierzam w obu sekcjach korzystać z tych samych
przerwań, przy czym ze zmienioną obsługą. W przypadku drugim czy jest to
w ogóle możliwe?

Pozdrawiam
antek

Adam Dybkowski
Guest

Thu Nov 23, 2006 12:49 am   



a_a napisał(a):

Quote:
Zamierzam pierwszy raz użyć bootloadera w urządzeniu z procesorem AVR
(program w avr-gcc). W związku z tym mam 2 koncepcje: aplikacja i
bootloader w osobnych projektach (1) lub w tym samym (2).

Co ma oznaczać w tym przypadku "w osobnych projektach"?
Bootloader to kawałek kodu, który musi być całkiem niezależnie od
aplikacji linkowany i z takiego punktu widzenia jest odrębnym projektem.
Ale nic nie stoi na przeszkodzie, abyś używał w nim tych samych
bibliotek, które stosujesz w aplikacji, np. funkcji do obsługi portu
szeregowego. Oczywiście muszą być one zlinkowane razem z bootloaderem,
który ma się zmieścić w przeznaczonym na niego obszarze (np. w ATmega128
bootloader może zająć max. 8 KB na końcu pamięci Flash). Jak to już
zorganizujesz to tylko kwestia plików makefile.

Bardzo skutecznym założeniem, które upraszcza konstrukcję bootloadera,
jest nieużywanie w nim przerwań. Wszystko da się zrobić w pollingu (np.
oczekiwanie na gotowość UARTu czy pamięci DataFlash) i takie specjalne
funkcje dostarcz bootloaderowi. Jak już wyżej wspomniałem, jest na niego
przeznaczone niewiele miejsca i dlatego często trzeba zrezygnować z
rozbudowanych wygodnych sterowników opartych na przerwaniach. A gdy
korzystasz z jakiegoś systemu operacyjnego to już całkiem odpada
wciśnięcie go też w bootloader.

Wbrew pozorom, bootloader dla ATmegi 128 bardzo wygodnie mi się pisało w
języku C, trzeba tylko pamiętać o zlinkowaniu kodu począwszy od wyższego
adresu (zależnie od rozmiaru obszaru zarezerwowanego na bootloader).
Wszystkie potrzebne funkcje do zapisywania pamięci Flash dostarczają
standardowe pliki nagłówkowe środowiska WinAVR (AFAIR boot.h).

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

a_a
Guest

Thu Nov 23, 2006 8:11 am   



Adam Dybkowski napisał(a):
Quote:
a_a napisał(a):

Zamierzam pierwszy raz użyć bootloadera w urządzeniu z procesorem AVR
(program w avr-gcc). W związku z tym mam 2 koncepcje: aplikacja i
bootloader w osobnych projektach (1) lub w tym samym (2).

Co ma oznaczać w tym przypadku "w osobnych projektach"?

Taki pomysł powstał w mej głowie ponieważ mam kilka urządzeń z tym samym
procesorem, i wszystkie hurtem bym mógł łatwo doposażyć w ten bootloader.

Quote:
Jak już wyżej wspomniałem, jest na niego
przeznaczone niewiele miejsca i dlatego często trzeba zrezygnować z
rozbudowanych wygodnych sterowników opartych na przerwaniach.

Tu akurat nie będzie problemu bo wszystkie sterowniki pisałem od zera
pod konkretny protokół, tak że zajmują niewiele miejsca.

dziękuję za odpowiedź i pozdrawiam

Adam Dybkowski
Guest

Fri Nov 24, 2006 12:14 am   



a_a napisał(a):

Quote:
Zamierzam pierwszy raz użyć bootloadera w urządzeniu z procesorem AVR
(program w avr-gcc). W związku z tym mam 2 koncepcje: aplikacja i
bootloader w osobnych projektach (1) lub w tym samym (2).

Co ma oznaczać w tym przypadku "w osobnych projektach"?

Taki pomysł powstał w mej głowie ponieważ mam kilka urządzeń z tym samym
procesorem, i wszystkie hurtem bym mógł łatwo doposażyć w ten bootloader.

No to zrób oddzielny projekt dla samego bootloadera i już. Będziesz miał
uniwersalny bootloader do wgrania w różne urządzenia.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Bootloader w AVR: osobne projekty czy wspólne z aplikacją - co wybrać?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map