description | Arduino Bootloader (Nano-1284, Nano-644, Arduino Nano, Sure AVR-DEM1) |
owner | www-data |
last change | Thu, 31. Oct 2024, 17:14:28 |
Infos on markdown to HTML conversion
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 |
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.
Die Anpassung der Quelltext-Datei umfasst:
avr/boot.h
ersetztFolgende 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
.
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
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...
avrdude -c arduino -p m1284p -P /dev/ttyUSB0 -b 115200 -e -U flash:w:programm.elf
avrdude -c arduino -p m644p -P /dev/ttyUSB0 -b 115200 -e -U flash:w:programm.elf
avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 38400 -e -U flash:w:programm.elf
avrdude -c arduino -p m16 -P /dev/ttyUSB0 -b 115200 -e -U flash:w:programm.elf
Entsprechende Informationen sind in der README.md Datei in den µC-Board Ordnern zu finden: