Chciałbym użyć przykładowego bootloadera z AES z Microchipa AVR231 Link (oryginalnie dla Atmega 328PB)
Jednak chciałbym go używać na Atmega4809.
Najpierw zrobiłem drobne przeróbki i przeprowadziłem testy na 328P, wszystko działało poprawnie. Następnie przerobienie obsługi USART dostosowując do 4809, poszło bez problemów jednak nie umiem sobie poradzić z zapisem flasha przez bootloader, niby wszystko działa, program do uploadu po serialu ładuje, dochodzi do 100%, ale po restarcie mamy znów bootloader. Po odczytaniu pamięci widać że nic się nie zapisuje, podejrzewam że to przez nie odpowiednia obsługę kontrolera NVM, lub coś pomieszane w adresach. W przykładzie obsługa zapisu do flash jest zrobiona w ASM.
Zapis to jedno, chyba jest coś nie tak z ustawieniami fuse bitów, BOOTEND i APPEND, kiedy ręcznie wrzuciłem plik programu od 0x0 flasha to program startuje poprawnie. (dla ustawień boot i app na 0x0) W tym samym momencie bootloader zaczynał się od 0xAC00, i tak też był ustawiony linker (-Wl,-section-start=.text=0xAC00) kiedy wyczyszczę pamięć aż do 0xAC00 to startuje bootloader, przy takich samych ustawieniach BOOTEND i APPEND. Czyli niezależnie od położenia początku programu startuje od 0x0, a jak nic nie ma "po drodze" to jakby leci aż coś znajdzie?
Kolejną sprawą jest to że w 328P bootloader jest zlokalizowany na końcu pamięci, a start ustawiony jest poprzez fusebit np na 0x7800, z tego co widzę w 4809 jest chyba odwrotnie, przykładowy bootloader dla nowszych AVR, bez obsługi AES mam Tutaj,
Niestety nie mogę tego ogarnąć i proszę o pomoc, jeżeli to kogoś bardziej zmotywuje to może być odpłatna...
Poniżej projekt przerobionego bootloadera w AS7
Jednak chciałbym go używać na Atmega4809.
Najpierw zrobiłem drobne przeróbki i przeprowadziłem testy na 328P, wszystko działało poprawnie. Następnie przerobienie obsługi USART dostosowując do 4809, poszło bez problemów jednak nie umiem sobie poradzić z zapisem flasha przez bootloader, niby wszystko działa, program do uploadu po serialu ładuje, dochodzi do 100%, ale po restarcie mamy znów bootloader. Po odczytaniu pamięci widać że nic się nie zapisuje, podejrzewam że to przez nie odpowiednia obsługę kontrolera NVM, lub coś pomieszane w adresach. W przykładzie obsługa zapisu do flash jest zrobiona w ASM.
Zapis to jedno, chyba jest coś nie tak z ustawieniami fuse bitów, BOOTEND i APPEND, kiedy ręcznie wrzuciłem plik programu od 0x0 flasha to program startuje poprawnie. (dla ustawień boot i app na 0x0) W tym samym momencie bootloader zaczynał się od 0xAC00, i tak też był ustawiony linker (-Wl,-section-start=.text=0xAC00) kiedy wyczyszczę pamięć aż do 0xAC00 to startuje bootloader, przy takich samych ustawieniach BOOTEND i APPEND. Czyli niezależnie od położenia początku programu startuje od 0x0, a jak nic nie ma "po drodze" to jakby leci aż coś znajdzie?
Kolejną sprawą jest to że w 328P bootloader jest zlokalizowany na końcu pamięci, a start ustawiony jest poprzez fusebit np na 0x7800, z tego co widzę w 4809 jest chyba odwrotnie, przykładowy bootloader dla nowszych AVR, bez obsługi AES mam Tutaj,
Niestety nie mogę tego ogarnąć i proszę o pomoc, jeżeli to kogoś bardziej zmotywuje to może być odpłatna...
Poniżej projekt przerobionego bootloadera w AS7