Jak vypálím bootloader?

Dostal jsem pokyn, abych „vypálil bootloader“ na mé Arduino, abych opravil chybu, kterou jsem dostával. Jak to mohu udělat? (A co přesně je bootloader?)

Komentáře

Odpověď

Zavaděč je malý program, který je (téměř) vždy na Arduinu. Spravuje nahrávání a spouštění náčrtů, které vytvoříte, a bliká LED 13 pinů, kdykoli se deska resetuje.


Vypálení bootloaderu:

  1. Získejte AVR ISP, USBtinyISP , ParallelProgrammer nebo podobný; nebo použijte jinou desku Arduino . Toto bude váš ISP.
  2. Pokud není uvedeno jinak, připojte ISP k pinům ICSP na vaší desce.
  3. Napájejte svou desku buď kabelem USB, nebo externím zdrojem napájení.
  4. Otevřete IDE Arduino.
  5. Ujistěte se, že jste vybrali správnou desku, na kterou pálíte, na Tools ► Board ► v IDE. Znovu to zkontrolujte, i když byste mohli správně nahrávat programy; nahrávání vždy nevyžaduje správnou desku.
  6. Vyberte příslušného programátora na adrese Tools ► Programmer ►.
  7. Klikněte na Tools ► Burn Bootloader a počkejte. Nemělo by to trvat déle než minutu a často to trvá jen několik sekund.

Zdroje:

Komentáře

  • AVRISP je do značné míry EOL (konec života) v tomto bodě. Minimálně chcete AVRISPmk2. Existuje také spousta dalších skvělých nástrojů (například AVR One!). Pravděpodobně byste měli říct {line 1} or other dedicated ISP programmer.
  • na deskách, jako je Arduino Yun, pokaždé, když " nahrajete přes wifi ", ' znovu vypalujete bootloader sloučený s vaším náčrtem. To díky skutečnosti, že procesor Linux je připojen k MCU AVR prostřednictvím SPI, takže můžete napodobit ISP pomocí softwaru.
  • @FedericoFissore – proto to tak dlouho trvá?
  • Ano, to a skutečnost, že bitování pomocí GPIO je pomalejší. Stále se to snaží urychlit.

Odpovědět

Co je bootloader?

A co přesně je bootloader?

Zavaděč je malý kousek kódu, který se nachází ve „vysoké“ části programové paměti. Normálně se nevymaže, když nahrajete nové skici. Jeho účelem je aktivace okamžitě po resetu (pojistky jsou konfigurovány tak, aby zahájily kód na adrese bootloaderu, nikoli na adrese 0x0000). Zavaděč počká krátkou dobu (například jednu sekundu), aby zjistil, zda na sériový port přicházejí „programovací“ data.

  • Pokud ano, načte tato data a dekóduje přeprogramujte zbytek paměti flash. Ve spolupráci s programem pro nahrávání (obvykle avrdude) je nová skica odeslána přes sériový port. Bootloader vymaže stránky paměti flash a nahradí je novým kódem. Po dokončení provede nový kód.

  • Pokud nedorazí žádné pokyny, bootloader přeskočí na adresu 0x0000 a provede existující skicu na desce.


Jak vyměnit bootloader

Alternativní metodou k naprogramování bootloaderu je použití náčrtu, který jsem napsal před chvílí a který běží na:

  • Uno (nebo podobné, například Duemilanove)
  • Leonardo
  • Mega2560

Na desce „programování“ je spuštěna skica, která má bootloadery pro řadu desek pevně zakódovaných do něj. Programovací desku připojíte k cílové desce (deska, která chce bootloader) pomocí 6 připojovacích vodičů, jak je znázorněno.

Programátor bootloaderu pro Uno

Tato konkrétní fotka ilustruje jednu Uno, která programuje další.

Spustíte skicu (pomocí příkazů ze sériového monitoru). Nejprve identifikuje cílový čip:

Atmega chip programmer. Written by Nick Gammon. Entered programming mode OK. Signature = 0x1E 0x95 0x0F Processor = ATmega328P Flash memory size = 32768 bytes. LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Bootloader address = 0x7E00 Bootloader length = 512 bytes. Type "L" to use Lilypad (8 MHz) loader, or "U" for Uno (16 MHz) loader ... Type "G" to program the chip with the bootloader ... 

Stisknutím G programování.

Erasing chip ... Writing bootloader ... Committing page starting at 0x7E00 Committing page starting at 0x7E80 Committing page starting at 0x7F00 Committing page starting at 0x7F80 Written. Verifying ... No errors found. Writing fuses ... LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Done. Type "C" when ready to continue with another chip ... 

Uno to trvá jednu sekundu. Programování Mega2560 trvá 3 sekundy.

Podrobné pokyny na programátoru bootloaderu Atmega

Kód lze stáhnout z Github: nickgammon / arduino_sketches

Komentáře

  • Musíte vybrat typ čipu, na který pálíte (Tools- > Board ..)?Jakou desku vyberu, když vypaluji bootloader na samostatný čip?
  • Vyberete typ desky , kterou používáte k vypálení bootloaderu v IDE. Náčrt bootloaderu automaticky detekuje typ cílové desky.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *