Witajcie
Zbudowałem niedawno dwa urządzenia oparte na Xmega128A4U i w obu jest taki sam problem. Wgrałem bootloader FLIP, który był dołączony do tego artykułu: http://www.atmel.com/images/doc8429.pdf (wgrałem skompilowany hex dla mojego procka). No i urządzenie zachowuje się dziwnie. To znaczy na początku działa normalnie, ale po kilku (od dwóch do kilkunastu) ponownych włączeniach zasilania ulega uszkodzeniu program wgrany do mikroprocka. Program po prostu przestaje działać. Gdy po tym "zepsuciu" przeprowadzę weryfikację wgranego programu, to wyskakuje, że jest niezgodność pod adresem 0x400, czyli okrąglutkie 1024 (być może w późniejszych komórkach też są błędy).
Natomiast bootloader nie ulega uszkodzeniu i po wciśnięciu przycisku odpowiedzialnego za jego wywołanie zgłasza się prawidłowo i łączy z kompem. Po ponownym wgraniu programu do procka jest znowu to samo - program działa przez kilka włączeń, a potem się "uszkadza".
Wykluczam problem z samym procesorem, bo dzieje się to w dwóch podobnych urządzeniach opartych na nim. Piny reset i PDI są podłączone prawidłowo.
Gdy wywalę bootloader i wgram mój kod programatorem, to problem nie występuje.
Wcześniej testowałem mój kod na prototypie wykonanym w oparciu o ten moduł: http://botland.com.pl/moduly-avr/2054-modul-x3-dil64-atxmega128a3u-au.html, gdzie jest ciut inny, ale podobny procesor - końcówka A3U. Tutaj bootloader jest fabryczne wgrany i nie było tu żadnych problemów.
W związku z tym wszystkim moje podejrzenie spada na wgrany bootloader. Myślę, że zawiera on jakiś błąd i bez powodu zmienia niektóre komórki pamięci flash, niszcząc program.
Co myślicie o tym? Czy to dobry trop? Czy można to jakoś naprawić? Są chyba dostępne źródła do bootloadera, ale nie czuję się na siłach do ich przeglądania.
Zbudowałem niedawno dwa urządzenia oparte na Xmega128A4U i w obu jest taki sam problem. Wgrałem bootloader FLIP, który był dołączony do tego artykułu: http://www.atmel.com/images/doc8429.pdf (wgrałem skompilowany hex dla mojego procka). No i urządzenie zachowuje się dziwnie. To znaczy na początku działa normalnie, ale po kilku (od dwóch do kilkunastu) ponownych włączeniach zasilania ulega uszkodzeniu program wgrany do mikroprocka. Program po prostu przestaje działać. Gdy po tym "zepsuciu" przeprowadzę weryfikację wgranego programu, to wyskakuje, że jest niezgodność pod adresem 0x400, czyli okrąglutkie 1024 (być może w późniejszych komórkach też są błędy).
Natomiast bootloader nie ulega uszkodzeniu i po wciśnięciu przycisku odpowiedzialnego za jego wywołanie zgłasza się prawidłowo i łączy z kompem. Po ponownym wgraniu programu do procka jest znowu to samo - program działa przez kilka włączeń, a potem się "uszkadza".
Wykluczam problem z samym procesorem, bo dzieje się to w dwóch podobnych urządzeniach opartych na nim. Piny reset i PDI są podłączone prawidłowo.
Gdy wywalę bootloader i wgram mój kod programatorem, to problem nie występuje.
Wcześniej testowałem mój kod na prototypie wykonanym w oparciu o ten moduł: http://botland.com.pl/moduly-avr/2054-modul-x3-dil64-atxmega128a3u-au.html, gdzie jest ciut inny, ale podobny procesor - końcówka A3U. Tutaj bootloader jest fabryczne wgrany i nie było tu żadnych problemów.
W związku z tym wszystkim moje podejrzenie spada na wgrany bootloader. Myślę, że zawiera on jakiś błąd i bez powodu zmienia niektóre komórki pamięci flash, niszcząc program.
Co myślicie o tym? Czy to dobry trop? Czy można to jakoś naprawić? Są chyba dostępne źródła do bootloadera, ale nie czuję się na siłach do ich przeglądania.
