Arduino Nano ATmega328P Bootloader Unterschied

7

Es gibt zwei alte und aktuelle ATmega328P-Bootloader. Was ist der Unterschied zwischen diesen Bootloadern?

Mir ist bekannt, dass von Arduino verkaufte Nanos die neuen Bootloader verwenden, aber ich konnte keine Versionshinweise zum Bootloader finden.

Claus
quelle
Soweit ich sehen kann, ist der "alte" Bootloader ???/bootloaders/atmega/ATmegaBOOT_168_atmega328.hexund der neue ???/bootloaders/optiboot/optiboot_atmega328.hex- ???hängt von Ihrem System ab, sollte aber leicht zu finden sein - online, siehe github.com/Optiboot/optiboot
Jaromanda X
1
Ich lade alle meine 328P-Chip-basierten Boards als 16-MHz-Arduino-Uno hoch, dann muss ich mir keine Gedanken über die Auswahl des richtigen Board-Typs machen.
CrossRoads

Antworten:

14

Der Bootloader, der derzeit auf den offiziellen Arduino Nano-Boards ausgeliefert und über die Tools> Prozessor> ATmega328P der Arduino IDE ausgewählt wird, nachdem Tools> Board> Arduino Nano ausgewählt wurde, ist dieselbe Version von Optiboot, die von Arduino / Genuino Uno verwendet wird: https://github.com /arduino/ArduinoCore-avr/blob/master/boards.txt#L152

nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt#L72

uno.bootloader.file=optiboot/optiboot_atmega328.hex

Der über Tools> Prozessor> ATmega328P (Alter Bootloader) ausgewählte Bootloader ist der Bootloader "ATmegaBOOT" .

Wie in der Nano-Hardwaredefinition verwendet, gibt es zwei signifikante Unterschiede zwischen den beiden Bootloadern:

  1. Optiboot geht nach einem Watchdog-Reset nicht in eine Endlos-Reset-Schleife. ATmegaBOOT wird .
  2. Optiboot erwartet die Upload-Kommunikation bei 115200 Baud . ATmegaBOOT, 57600 . Dies ist der Grund, warum die alten Karten nicht mit der Auswahl Extras> Prozessor> ATmega328P funktionieren und umgekehrt.

Es gibt einen weiteren sehr signifikanten Unterschied zwischen den beiden Bootloadern, von dem Sie mit der neuen Arduino Nano-Board- / Hardware-Definition leider nicht profitieren werden: Optiboot passt in einen 0,5-kB-Boot-Bereich, während ATmegaBOOT einen 2-kB-Boot-Bereich benötigt. Leider hat Arduino vergessen, die BOOTSZ-Sicherung entsprechend auszutauschen, und so ging die Möglichkeit, 1,5 kB wertvollen Flash-Speicher für die Benutzer des Nano freizugeben, verloren. Die Bereitschaft von Arduino, wissentlich fehlerhafte Hardware freizugeben, hat einen historischen Präzedenzfall .

Ich konnte keine Versionshinweise zum Bootloader finden.

Die Versionshinweise von Arduino haben sich noch nicht an die Tatsache angepasst, dass Hardwarepakete seit Arduino IDE 1.6.2 unabhängig von IDE-Versionen veröffentlicht werden können. In den IDE-Versionshinweisen für die nächste IDE-Version finden Sie einen Hinweis zur Bootloader-Änderung:

https://github.com/arduino/Arduino/commit/ec179e5af67b7f1eeb5e46d22034798f8b24b7cb

Ansonsten können Sie den Commit-Verlauf einsehen:

https://github.com/arduino/ArduinoCore-avr/commit/1b14cc07331268e95eddcce2cc67e29ed667e62f

per1234
quelle
Kann der Nano entweder mit Bootloadern geflasht werden oder gibt es Hardwareunterschiede, von denen der Booloader abhängt?
Claus
3
Es gibt keine Hardwareunterschiede. Wenn Sie den Bootloader flashen, empfehle ich, dies mit Tools> Board> Arduino / Genuino Uno zu tun, da Sie dann alle Vorteile von optiboot nutzen können, einschließlich des zusätzlichen Flash-Speichers von 1,5 kB. Denken Sie daran, dass Sie das Uno-Board benötigen, wenn Sie Ihren Nano danach verwenden.
per1234
1
* Uno Board ausgewählt
per1234