Jste zde

ATmega - uvolnění programové paměti (FLASH) - smazání BOOTLOADERu

K uvolnění paměti je třeba použít programátor (např. druhé arduino s nahraným firmwarem Arduino as ISP).

Pro kompletní uvolnění paměti je třeba nastavit hodnotu BOOTRST pojistky HFUSE na hodnotu 1 (nenaprogramováno, odškrtnuto). Tím se při spuštění skočí rovnou na adresu 0x0000 namísto na adresu bootloaderu, která je definována pomocí hodnot BOOTSZ (BOOTSZ1 a BOOTSZ0) (bootloader sídlí až na konci flash paměti). Hodnotu HFUSE zjistíme ze souboru <arduino>\hardware\arduino\avr\boards.txt (bootloader.high_fuses) a použijeme ji do kalkulátoru pojistek.

Pokud nahráváme bootloader zpět, tak není třeba pojistky nastavovat. Stačí v menu zvolit „Tools->Burn Bootloader“ a arduino si samo pojistky nastaví a nahraje bootloader (bootloader musíme nahrávat pomocí programátoru (např. Arduino as ISP)).

Firmware, který je větší než povolená velikost včetně bootloaderu získáme tak, že v menu zvolíme „Sketch->Export compiled Binary“ a tím se nám do adresáře, kde máme uložen sketch vytvoří *.HEX soubor, který poté můžeme nahrát do procesoru (export pravděpodobně skončí chybou „Sketch too big“, ale *.HEX soubor se vytvoří).

 

Program avrdude najdeme v adresáři <arduino>\hardware\tools\avr\bin\

Přečtení pojistek

avrdude -c avrisp -P COM1 -b 19200 -p m328p -C "../etc/avrdude.conf" –v

Výsledek: lfuse=0xFF, hfuse=0xDE, efuse=0x05 pro procesor ATmega328p (Arduino UNO)

 

Zápis pojistek

avrdude -c avrisp -P COM1 -b 19200 -p m328p -C "../etc/avrdude.conf" -u -U hfuse:w:0xDF:m

 

Zápis testovacího firmware

avrdude -c avrisp -P COM1 -b 19200 -p m328p -C "../etc/avrdude.conf" -u -U flash:w:TEST_HUGE_SKETCH_BIG.hex

 

Soubory: