Cześć,
piszę bootloader do xmega32c4 i mam następujący problem,
poprzez uart ładuje sobie bajty do buforka o rozmiarze takim jak strona pamięci,
nastepnie kasuję bufor flash, pamięć aplikacji, ładuję do bufora flash a potem do pamięci flash oczywiście czekając na zwolnienie SPM.
Do mojego bufora jestem w stanie zapisać bo rządanie odczytania jego zawartości zwraca poprawne bajty, po cyklu zapisu w buforze memsetem ustawiam zera i to też się wykonuje. Niestety zgrywając flash z mikroprocka cała sekcja app (adresy od zera aż do sekcji bootloadera) to po prostu 0xFF. Mogę też przeczytać SP flash'a i dostaję ciąg FF więc coś działa. Niestety nie jestem w stanie nic zapisać.
Próbuję różnych wariacji poniższego kodu, kasując, nie kasując, testując różne adresy, ale niestety nie mam żadnych zmian w ściągniętym pliku hex.
Nie specjalnie wiem w czym jest problem, że nie mogę niczego zapisać. Próbuję pisać na początek pierwszej strony pamięci, porównywałem kod piszący z bootloaderami dostępnymi w sieci i nie widzę co robię źle.
piszę bootloader do xmega32c4 i mam następujący problem,
poprzez uart ładuje sobie bajty do buforka o rozmiarze takim jak strona pamięci,
nastepnie kasuję bufor flash, pamięć aplikacji, ładuję do bufora flash a potem do pamięci flash oczywiście czekając na zwolnienie SPM.
Do mojego bufora jestem w stanie zapisać bo rządanie odczytania jego zawartości zwraca poprawne bajty, po cyklu zapisu w buforze memsetem ustawiam zera i to też się wykonuje. Niestety zgrywając flash z mikroprocka cała sekcja app (adresy od zera aż do sekcji bootloadera) to po prostu 0xFF. Mogę też przeczytać SP flash'a i dostaję ciąg FF więc coś działa. Niestety nie jestem w stanie nic zapisać.
Próbuję różnych wariacji poniższego kodu, kasując, nie kasując, testując różne adresy, ale niestety nie mam żadnych zmian w ściągniętym pliku hex.
Nie specjalnie wiem w czym jest problem, że nie mogę niczego zapisać. Próbuję pisać na początek pierwszej strony pamięci, porównywałem kod piszący z bootloaderami dostępnymi w sieci i nie widzę co robię źle.
Kod: C / C++