descriptionArduino Bootloader (Nano-1284, Nano-644, Arduino Nano, Sure AVR-DEM1)
ownerwww-data
last changeThu, 31. Oct 2024, 17:14:28

Infos on markdown to HTML conversion

  1. started as process 663335: /usr/bin/pandoc -f gfm -t html5 --highlight-style pygments

Arduino-Bootloader (STK500 Protokoll)

Dieser Bootloader ermöglicht die Programmierung über das "Arduino-System". Als Kommunikationsprotokoll kommt das STK500 Protokoll zur Anwendung (Kommunikationsablauf siehe Datei docs/protocol).

Beim Bootloader-Quelltext in src/main.c handelt es sich um eine Anpassung von https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/atmega/ATmegaBOOT_168.c an die Hardware der hier unterstützten Boards (Speicherangabe Flash, SRAM, EEPROM in KiB):

Board README.md µC Speicher Frequenz Spannung
Nano-1284 nano-1284/README.md ATmega1284P 128, 16, 4 12MHz 3.3V
Nano-644 nano-644/README.md ATmega644P 64, 4, 2 12MHz 3.3V
Arduino Nano nano-328/README.md ATmega328P 32, 2, 1 16MHz 5V
Sure AVR-DEM1 sure-m16/README.md ATmega16 16, 1, 0.5 12MHz 5V

Programmdateien

Der Bootloader kann entweder aus der Quelltextdatei selbst erzeugt werden (siehe Übersetzung), oder es wird eine der bereits fertigen Dateien im Ordner { Link-Error: release } (im Ordner des Boards) verwendet:

Als Versionskennung dient Datum und Zeit der Übersetzung. Diese Information ist im Flash und somit in der ELF-Datei zu finden. Durch hexdump -C <datei>.elf kann die Version überprüft werden. Mit einem ISP-Programmiergerät oder den Bootloader lässt sich auch das Flash aus dem µC auslesen (make flash-hexdump) und so die Bootloader-Version kontrollieren.

Quelltextanpassungen

Die Anpassung der Quelltext-Datei umfasst:

Übersetzung

Folgende Tools sind erforderlich:

Auf einem Linux-Debian System müssen daher folgende Pakete installiert sein:

sudo apt update
sudo apt install gcc-avr avr-libc binutils-avr avrdude

Die Übersetzung erfolgt dann mit dem Kommando make.

Download auf den µC

Zunächst muss mit cd in den Unterordner des richtigen Boards gewechselt werden. Danach kann die korrekte µC-Programmierung (Fuses sowie Download des Bootloaders in den Bootloader-Bereich des µC-Flash) mit Hilfe eines USBasp-Programmiergeräts mit folgenden Kommandos erfolgen:

cd nano-m16
make isp-fuse
make isp-flash

Falls die release-Version programmiert werden soll, muss nach dem make die elf-Datei zuvor in den Ordner dist kopiert werden.

Beispiel für ein Arduino Nano µC-Board:

cd nano-328
make
cp release/v2024-10-31_130840/bootloader-arduino_nano-m328p_16mhz-38400bps.elf dist/
make isp-fuse
make isp-flash

Download von Programmen mit Hilfe des Bootloaders

Sobald sich am µC ein Bootloader befindet ist kein Programmiergerät mehr erforderlich. Das Programm wird über die serielle UART-Schnittstelle (via USB-Schnittstelle) in den Flash gespeichert.

UART-Schnittstelle (Option -P) und Name der ELF-Programmdatei (nach flash:w:) sind anzupassen...

Einbindung in die Arduino IDE

Entsprechende Informationen sind in der README.md Datei in den µC-Board Ordnern zu finden: