Witam
Dręczy mnie jeszcze kilka spraw dotycząca procesorów Atmega serii 8...
Wedle dokumentacji, odnosząc się do procesora 168. Jest określone jako by bootloader miał się znajdować w obszarze pamięci 0x1C00-0x1F80 gdzie pamięć procesora jest do 0x3FFF, do tego AVRisp z AVR studio też interpretuje to w fuse bitach. Lecz wgrywając bootloadera w ten obszar nie daje się zapisać pamięci flash, zaś dopiero po wpisaniu w obszar 0x3800 jest to możliwe...
Pytania:
1 Jak to faktycznie powinno być z umiejscowieniem kodu bootloadera dla procesorów atmega 88/168 jakie to będą obszary?
2 Czy po wgraniu bootloadera w obszar 0x3800 dla Atmegi168 i ustawieniu fusebitów BOOTSZ na "Flasz size=1024 ...start=0x1C00.." i BOOTRST procesor będzie wskakiwał na adres 0x3800 czy 0x1c00 ? bo gdy wgram jakiś program którego fragment będzie w adresie 0x1C00 to nie dość, że bootloader się nie uruchomi to jeszcze procesor zgłupieje...
3 troszkę mnie to dziwi, używam Avr-gcc kod bootloadera z obsługą transmitera 485 zajmuje 0x2a1 ,a po usunięciu obsługi transmitera program zajmuje około 0x331 wartości są zbliżone bo nie jestem teraz w stanie tego dokładnie sprawdzić, optymalizacja jest ustawiona na "s" skąd to się bierze ? czasami zdarzało mi się, że jakieś dodawanie czy mnożenie na zmiennej 8 bitowej potrafiło zwiększyć kod programu o nawet 3k
Pozdrawiam
Dręczy mnie jeszcze kilka spraw dotycząca procesorów Atmega serii 8...
Wedle dokumentacji, odnosząc się do procesora 168. Jest określone jako by bootloader miał się znajdować w obszarze pamięci 0x1C00-0x1F80 gdzie pamięć procesora jest do 0x3FFF, do tego AVRisp z AVR studio też interpretuje to w fuse bitach. Lecz wgrywając bootloadera w ten obszar nie daje się zapisać pamięci flash, zaś dopiero po wpisaniu w obszar 0x3800 jest to możliwe...
Pytania:
1 Jak to faktycznie powinno być z umiejscowieniem kodu bootloadera dla procesorów atmega 88/168 jakie to będą obszary?
2 Czy po wgraniu bootloadera w obszar 0x3800 dla Atmegi168 i ustawieniu fusebitów BOOTSZ na "Flasz size=1024 ...start=0x1C00.." i BOOTRST procesor będzie wskakiwał na adres 0x3800 czy 0x1c00 ? bo gdy wgram jakiś program którego fragment będzie w adresie 0x1C00 to nie dość, że bootloader się nie uruchomi to jeszcze procesor zgłupieje...
3 troszkę mnie to dziwi, używam Avr-gcc kod bootloadera z obsługą transmitera 485 zajmuje 0x2a1 ,a po usunięciu obsługi transmitera program zajmuje około 0x331 wartości są zbliżone bo nie jestem teraz w stanie tego dokładnie sprawdzić, optymalizacja jest ustawiona na "s" skąd to się bierze ? czasami zdarzało mi się, że jakieś dodawanie czy mnożenie na zmiennej 8 bitowej potrafiło zwiększyć kod programu o nawet 3k
Pozdrawiam