logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] XMEGA32C4 Bootloader: Brak zapisu w pamięci flash po self programming

Mac3k 15 Kwi 2019 11:21 432 1
REKLAMA
  • #1 17907218
    Mac3k
    Poziom 20  
    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.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 17907291
    Mac3k
    Poziom 20  
    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.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dodano po 42 [minuty]:

    Problem rozwiązany, przyczyną był zły adres w skrypcie linkera który ładował program w złą sekcję. (adres słowowy zamiast bajtowego)
REKLAMA