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

ATXMEGA128A3 - Bootloader - samoczynne kasowanie strony

funak 06 Lip 2015 09:41 621 0
REKLAMA
  • #1 14827206
    funak
    Poziom 26  
    Witam

    Mam problem z bootloaderem, mianowicie bootloader działa prawidłowo.
    Sprawdza sumę kontolną FLASH'a, jeśli jest nieprawidłowa przechodzi do programowania z UART w formacie HEX.

    I sprawa jest następująca:
    - co jakiś czas po przyłożeniu zasilania mikroprocesor stwierdza błąd FLASH'a i przechodzi do trybu programowania. I nie wiem co się dzieje, gdyż nie kasuję FLASH'a celowo.

    W chwili obecnej ustawiłem FUSE-BITY, aby najpierw uruchamiał się bootloader.
    Bootloader sprawdza FLASH'a i podejmuje decyzję: czy wykonać skok pod 0x0000, czy przejść do pobierania kodu HEX.

    Hipotezę mam taką, że po podaniu napięcia zasilania mikroprocesor najpierw wykonuje przypadkowy kod, następnie po przekroczeniu 3,0V następuje jego reset i wówczas wykonuje się prawidłowy kod.

    Soft wydaje się być prawidłowy, dlatego nie podaję go tu, gdyż nie widzę sensu.
    Nawet celowo dodałem opóźnienie _delay_ms(4000) ale nie pomaga.

    Gdy bootloader czeka na pobranie softu z UART, odczytałem z ciekawości cały FLASH i okazało się, że jest skasowana jedna strona, całe 512 bajtów, ale różnie, czasami zerowa, a przed chwilą była to nawet piąta strona.


    -Edit:
    Dodałem teraz funkcję sprawdzania rozmiaru to co przychodzi z UART, brakło niestety miejsca na sprawdzenie sumy kontrolnej wiersza HEX. Nieco pomogło, ale nie przeciwdziała wykonaniu przypadkowego kodu.

    Jak mogę zaobserwować po komunikatach, kasowanie strony raczej następuje po wyłączeniu zasilania, niż jak sądziłem dotychczas w momencie załączenia.

    ROZWIĄZANIE:
    - Ustawione FUSE-BITY:
    BODPD = CONTINUOUS
    SUT = 64MS
    BODACT = CONTINUOUS
    BODLVL = 3V0

    Nie wiem jak to się stało, przeoczyłem BODPD, BODACT - były ustawione DISABLED

    Teraz się już prawidłowo ładuje, sprawdzę jeszcze 100x i zobaczymy co z tego wyniknie.

    Jak do tej pory już się nie kasuje :)
    Zatem uważam za problem rozwiązany.
  • REKLAMA
REKLAMA