Witam.
Domyślam się że mój temat zostanie przyjęty niezbyt chętnie bo w Internecie są już jakieś informacje na ten temat, ale ja niestety ciężko potrafię to zrozumieć.
Z programowaniem procesorów 8-bitowych od Atmela mam już jakieś doświadczenie, jednak nigdy nie interesowałem się kwestią bootloaderów.
Mam kilka pytań które chce zadać, ale najpierw napisze to co samemu się dowiedziałem. Wiem tylko tyle że bootloader to tak naprawdę jakąś część pamięci mikrokontrolera wydzielona z pamięci Flash, a więc tej do której wygrywamy nasze programy.
Do tego obszaru wygrywa się osobny program który wykonuje się przed naszym programem głównym. Dodatkowo trzeba ustawić odpowiednie fuse bity.
Tyle się dowiedziałem. Nie znalazłem jednak odpowiedzi na pytania które chce zadać. Jako przykładowy mikrokontrolery wybierzmy Atmega8.
1. Wiem że należy fusebitami określić rozmiar pamięci jaki będzie dostępny dla bootloadera. Ale czy udostępniając tą pamięć, pomniejszamy tym samym pamięć Flash do której możemy wgrać nasz program główny? Atmega ma 8KB pamięci Flash, tworząc bootloader mam wtedy już mniej niż 8KB na swój główny program?
2. Skoro bootloader to tak naprawdę podprogram to czy tworząc kod bootloadera mam do dyspozycji wszystkie instrukcje ze zwykłego programu? Np. Czy mogę stworzyć bootloader który będzie używał tunera aby przez np. 10 sekund migać diodą Led w odstępie 0,2 sekundy?
3. Pytanie powiązane z poprzednim: Chcąc aby bootloader tak jak w przykładzie poprzednim migał jakąś diodą, trzeba tak samo konfigurować timer, jego przerwania, rejestry, itp jak to się robi normalnie?
4. Czy program bootloadera pisze się w tym samym języku co główny kod? Ja programuję w C, więc w C też piszę program bootloadera?
Domyślam się że mój temat zostanie przyjęty niezbyt chętnie bo w Internecie są już jakieś informacje na ten temat, ale ja niestety ciężko potrafię to zrozumieć.
Z programowaniem procesorów 8-bitowych od Atmela mam już jakieś doświadczenie, jednak nigdy nie interesowałem się kwestią bootloaderów.
Mam kilka pytań które chce zadać, ale najpierw napisze to co samemu się dowiedziałem. Wiem tylko tyle że bootloader to tak naprawdę jakąś część pamięci mikrokontrolera wydzielona z pamięci Flash, a więc tej do której wygrywamy nasze programy.
Do tego obszaru wygrywa się osobny program który wykonuje się przed naszym programem głównym. Dodatkowo trzeba ustawić odpowiednie fuse bity.
Tyle się dowiedziałem. Nie znalazłem jednak odpowiedzi na pytania które chce zadać. Jako przykładowy mikrokontrolery wybierzmy Atmega8.
1. Wiem że należy fusebitami określić rozmiar pamięci jaki będzie dostępny dla bootloadera. Ale czy udostępniając tą pamięć, pomniejszamy tym samym pamięć Flash do której możemy wgrać nasz program główny? Atmega ma 8KB pamięci Flash, tworząc bootloader mam wtedy już mniej niż 8KB na swój główny program?
2. Skoro bootloader to tak naprawdę podprogram to czy tworząc kod bootloadera mam do dyspozycji wszystkie instrukcje ze zwykłego programu? Np. Czy mogę stworzyć bootloader który będzie używał tunera aby przez np. 10 sekund migać diodą Led w odstępie 0,2 sekundy?
3. Pytanie powiązane z poprzednim: Chcąc aby bootloader tak jak w przykładzie poprzednim migał jakąś diodą, trzeba tak samo konfigurować timer, jego przerwania, rejestry, itp jak to się robi normalnie?
4. Czy program bootloadera pisze się w tym samym języku co główny kod? Ja programuję w C, więc w C też piszę program bootloadera?