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

Zastąpienie bootloadera przez program z karty SD w urządzeniu z Xmegą384 - możliwe?

kons 16 Wrz 2020 09:24 567 4
REKLAMA
  • #1 18925858
    kons
    Poziom 11  
    Witam.
    Jest sobie urządzenie z Xmegą384 .. daleko ode mnie i działa dla kogoś kto nie ma pojęcia o programowaniu. Jest tam bootloader, który muszę zmienić. Bootloader oczywiście wpuści program z karty SD i go uruchomi. Czy można napisać taki program który będzie miał w sobie kod nowego bootloadera i wgra go w miejsce starego bootloadera ? Zrobiłbym plik .hex bootloadera i kod z niego zamieściłbym w programie. Następnie program podobnie jak bootloader wgrałby go do flasha w sekcje bootloadera.
    Niedługo będę miał takie same urządzenie i programator do testów, ale na razie żeby nie tracić czasu chciałbym się upewnić czy jest to możliwe. Wydaje mi się że program ( w sensie nie bootloader) może nadpisać flash w sekcji bootloadera, ale może jest jakiś kruczek ...
    Program chyba może zmieniać fusebity, nie może zmienić tylko lockbitów - dobrze pamiętam ?
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #3 18926738
    tmf
    VIP Zasłużony dla elektroda
    kons napisał:
    Niedługo będę miał takie same urządzenie i programator do testów, ale na razie żeby nie tracić czasu chciałbym się upewnić czy jest to możliwe. Wydaje mi się że program ( w sensie nie bootloader) może nadpisać flash w sekcji bootloadera, ale może jest jakiś kruczek ...
    Program chyba może zmieniać fusebity, nie może zmienić tylko lockbitów - dobrze pamiętam ?

    Aby móc programować FLASH instrukcja SPM musi być w obszarze bootloadera. I tu jest problem. Bo istniejący bootloader po napotkaniu twojego hexa musiałby sam się nadpisać, ładując w ten sposób kod nowego bootloadera. Sama aplikacja potem bootloadera nie nadpisze, bo SPM z obszaru FLASH aplikacji zostanie zignorowane. Tak więc da się to zrobić, ale:
    - istniejący bootloader musi być na tyle beznadziejnie napisany, że pozwala na nadpisanie samego siebie,
    - musisz dysponować kodem tego bootloadera, aby tak napisać swój bootloader, aby jego kod we właściwy sposób nadpisał kod istniejącego bootloadera - w przeciwnym przypadku skończysz z mixem starego i nowego kodu, który raczej nie będzie działać,
    - lockbity muszą być tak ustawione, aby zezwolić na zapis bootloadera - małoprawdopodobne, jeśli to nie jest twoje urządzenie.
  • REKLAMA
  • #4 18927555
    kons
    Poziom 11  
    tmf napisał:
    Aby móc programować FLASH instrukcja SPM musi być w obszarze bootloadera. (...) Sama aplikacja potem bootloadera nie nadpisze, bo SPM z obszaru FLASH aplikacji zostanie zignorowane.

    Czyli pozamiatane nie da się tego zrobić bo właśnie chciałem aplikacją to zrobić.
    Wielkie dzięki za tę odpowiedź. Pewnie sam bym do tego doszedł ALE ... zaoszczędziłeś mi trochę czasu :)
  • #5 18927610
    tmf
    VIP Zasłużony dla elektroda
    kons napisał:
    Czyli pozamiatane nie da się tego zrobić bo właśnie chciałem aplikacją to zrobić.

    Da się, ale... musisz znać kod bootloadera. W tym kodzie musi być instrukcja SPM, jeśli masz szczęście i jest to kod zawierający SPM, a potem np. RET to możesz ten kod wywołać z aplikacji, w ten sposób programując stronę. Trochę to hackowanie, ale przy odrobinie szczęścia się to uda. Wystarczy, że będziesz mógł zaprogramować chociaż jeden sektor w obszarze bootloadera, to umieścisz w nim własną funkcję reprogramującą.
REKLAMA