Difference between revisions of "U23 2005/Fnordlicht quickstart howto"
m (Reverted edits by Oxudocopaj (talk) to last revision by 194.105.102.251) |
|||
(56 intermediate revisions by 23 users not shown) | |||
Line 1: | Line 1: | ||
Dieses fnordlicht quickstart howto beschreibt die Schritte zur ersten Inbetriebnahme. | Dieses fnordlicht quickstart howto beschreibt die Schritte zur ersten Inbetriebnahme. | ||
− | == Kabel == | + | == Benötigte Kabel == |
− | + | === Stromversorgung === | |
− | + | Für die Stromversorgung wird ein zweipoliges Kabel mit 2.54mm Doppelbuchse benötigt. | |
− | + | ||
− | + | === Erstprogrammierung === | |
+ | Für die Erstprogrammierung (Bootloader) wird ein ISP-Kabel (In-System-Programming) benötigt. Diese gibt es u.a. für den Parallelport (einfache Schaltung von [http://ldp.rtin.bz/linuxfocus/English/November2004/article352.shtml] ) | ||
+ | '''ACHTUNG: Diese Schaltung trennt den Parallelport des programmierenden Rechners nicht sauber vom fnordlicht (keine galvanische Trennung); d.h. wenn das fnordlicht nicht korrekt aufgebaut ist, ist es möglich, dass der Parallelport oder gleich das Mainboard des programmierenden Rechners beschädigt wird!''' Es empfiehlt sich dringend, ein selbst aufgebautes fnordlicht mit dem Programmer und dem alten, im Labor zur Verfügung gestellten, Laptop der Tutoren auszuprobieren! | ||
+ | |||
+ | Details: | ||
+ | {| border="1" | ||
+ | !Pin am ISP | ||
+ | !Pin am AVR | ||
+ | !Schutzwiderstand | ||
+ | !Pin am Parallelport | ||
+ | |- | ||
+ | |1 | ||
+ | | +5v | ||
+ | | | ||
+ | | (wird hier nicht benoetigt) | ||
+ | |- | ||
+ | |2 | ||
+ | |GND | ||
+ | | -- | ||
+ | |GND (18) | ||
+ | |- | ||
+ | |3 | ||
+ | |SCK (19) | ||
+ | |470 Ohm | ||
+ | |Strobe (1) | ||
+ | |- | ||
+ | |4 | ||
+ | |MISO (18) | ||
+ | |220 Ohm | ||
+ | |Busy (11) | ||
+ | |- | ||
+ | |5 | ||
+ | |MOSI (17) | ||
+ | |470 Ohm | ||
+ | |D0 (2) | ||
+ | |- | ||
+ | |6 | ||
+ | |Reset (1) | ||
+ | | -- | ||
+ | |Init (16) | ||
+ | |} | ||
+ | |||
+ | === Serielle Kommunikation und Programmierung=== | ||
+ | |||
+ | Für die serielle Kommunikation mit dem fnordlicht ist eine Schaltung mit einem MAX232 Pegelkonverter erforderlich. Damit kann - sofern der Bootloader bereits aufgespielt wurde - das fnordlicht programmiert werden. | ||
== Benötigte Software == | == Benötigte Software == | ||
Um dem fnordlicht Leben einzuhauchen bedarf es einiger Software. Die folgende Beschreibung bezieht sich auf die Verwendung von Linux. Diese ist kein Zwang; wir ermutigen jeden, auch Werkzeuge auf anderen Betriebsystemen zu benutzen. | Um dem fnordlicht Leben einzuhauchen bedarf es einiger Software. Die folgende Beschreibung bezieht sich auf die Verwendung von Linux. Diese ist kein Zwang; wir ermutigen jeden, auch Werkzeuge auf anderen Betriebsystemen zu benutzen. | ||
Folgende Softwarepakete sind zu besorgen: | Folgende Softwarepakete sind zu besorgen: | ||
− | * uisp: Micro In-System Programmer für Atmels AVR MCUs | + | * [http://freshmeat.net/projects/uisp/ uisp]: Micro In-System Programmer für Atmels AVR MCUs (damit kann man mit dem Parallelkabel von oben den Atmel initial programmieren) |
− | ** Benötigt Kernel-Support für ppdev und parport; ist bei den meisten | + | ** Benötigt Kernel-Support für ppdev und parport; ist bei den meisten Distributionskerneln dabei, |
− | * avra: Assembler für Atmel AVR Microcontroller | + | * avra: Assembler für Atmel AVR Microcontroller (damit kompiliert man die Firmware) |
− | * avrdude: In-System-Programmer: Download/Upload/Ändern des Inhalts von ROM und EEPROM | + | ** Hinweis für Gentoo-Benutzer: Es gibt ein [http://wiki.koeln.ccc.de/index.php/U23_2005/avra_ebuild?action=raw avra ebuild]. (Hinweis an alle, wenn jemand rausfindet wie man das vernünftig verlinkt, dann macht es bitte... danke...) |
− | * | + | * [http://freshmeat.net/projects/avrdude/ avrdude]: In-System-Programmer: Download/Upload/Ändern des Inhalts von ROM und EEPROM (damit kann der Atmel nachher seriell (ueber das Kabel mit dem max232 Pegelkonverter) programmiert werden) |
− | * ein beliebiges Terminalprogramm, z.b. minicom oder screen oder hyperterm | + | * [http://freshmeat.net/projects/subversion/ subversion]: Versionskontrollsystem, mit dem die fnordlicht-Firmware verwaltet wird. |
+ | * ein beliebiges Terminalprogramm, z.b. [http://freshmeat.net/projects/minicom/ minicom] oder screen oder hyperterm | ||
Ausserdem werden für das Übersetzen des Bootloaders benötigt: | Ausserdem werden für das Übersetzen des Bootloaders benötigt: | ||
* gcc-avr: Der GNU C Compiler (Crosscompiler für AVR). | * gcc-avr: Der GNU C Compiler (Crosscompiler für AVR). | ||
* avr-libc: Standard C Bibliothek für Atmel AVR Entwicklung | * avr-libc: Standard C Bibliothek für Atmel AVR Entwicklung | ||
+ | |||
+ | Zur Installation unter Mac OSX (getestet mit Tiger) sollte die Paketsammlung Fink [http://finkproject.org/] genutzt werden. Hier kann man nun einfach durch fink install avr-binutils avr-gcc avr-libc avrdude die benötigte Software installieren. | ||
== Parallele Verbindung zum Atmel prüfen (ISP) == | == Parallele Verbindung zum Atmel prüfen (ISP) == | ||
− | Bevor der Atmel das erste mal über den ISP am Parallelport mit Firmware programmiert werden kann, sollte die Verbindung funktionieren. Folgendes Kommando sollte die nachstehende Ausgabe erzeugen: | + | Bevor der Atmel das erste mal über den ISP am Parallelport mit Firmware programmiert werden kann, sollte die Verbindung funktionieren. Folgendes Kommando sollte (etwa) die nachstehende Ausgabe erzeugen: |
− | + | ||
− | $ uisp -dprog=dapa --rd_fuses | + | $ uisp -dprog=dapa --rd_fuses |
− | Atmel AVR ATmega8 is found. | + | Atmel AVR ATmega8 is found. |
+ | |||
+ | Fuse Low Byte = 0xe0 | ||
+ | Fuse High Byte = 0xd8 | ||
+ | Fuse Extended Byte = 0xff | ||
+ | Calibration Byte = 0xaf -- Read Only | ||
+ | Lock Bits = 0xff | ||
+ | BLB12 -> 1 | ||
+ | BLB11 -> 1 | ||
+ | BLB02 -> 1 | ||
+ | BLB01 -> 1 | ||
+ | LB2 -> 1 | ||
+ | LB1 -> 1 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Ein beliebter Fehler sind mangelnde Schreibrechte für den Devicenode /dev/parport0. | Ein beliebter Fehler sind mangelnde Schreibrechte für den Devicenode /dev/parport0. | ||
− | == fnordlicht Quelltext | + | == fnordlicht Firmware Quelltext == |
− | + | Die letzte stabile Version bekommt man hier: | |
− | + | * 0.1: http://koeln.ccc.de/prozesse/running/fnordlicht/fnordlicht-0.1.tar.gz | |
− | + | * 0.2: http://koeln.ccc.de/prozesse/running/fnordlicht/fnordlicht-0.2.tar.gz | |
+ | |||
+ | Einen Development-Snapshot (Development meint hier wirklich ATM "non-working") checkt man per Subversion so aus: | ||
+ | |||
+ | $ svn co http://svn.lochraster.org/fnordlicht-ng/trunk fnordlicht | ||
== Prozessor für die Hardware einrichten == | == Prozessor für die Hardware einrichten == | ||
Line 60: | Line 111: | ||
== Bootloader installieren == | == Bootloader installieren == | ||
− | Im Gegensatz zur fnordlicht Firmware ist der Bootloader für den ATmega in C geschrieben. Der Bootloader muss erst übersetzt und dann via das parellele ISP-Kabel auf den Atmel geschrieben werden. Auch für diesen Vorgang gibt es einen Eintrag im Makefile. Voraussetzung für die | + | Im Gegensatz zur fnordlicht Firmware ist der Bootloader für den ATmega in C geschrieben. Der Bootloader muss erst übersetzt und dann via das parellele ISP-Kabel auf den Atmel geschrieben werden. Auch für diesen Vorgang gibt es einen Eintrag im Makefile. Voraussetzung für die Übertragung zum Atmel ist natürlich, dass das fnordlicht über das ISP-Kabel an den Rechner angeschlossen ist. Der Bootloader befindet sich im Verzeichnis boot, der folgende make-Befehl wird jedoch aus dem obersten Verzeichnis des Quelltexts ausgeführt: |
<pre>make install-bootloader</pre> | <pre>make install-bootloader</pre> | ||
Der Bootloader war ursprünglich der Atmel Butterfly - die hier benutzte Version wurde nachprogrammiert. Das Hochladen des Bootloaders ist der letzte Schritt, für den das parallele ISP-Kabel benötigt wird. Von nun an werden alle Schritte mit dem seriellen Kabel ausgeführt. | Der Bootloader war ursprünglich der Atmel Butterfly - die hier benutzte Version wurde nachprogrammiert. Das Hochladen des Bootloaders ist der letzte Schritt, für den das parallele ISP-Kabel benötigt wird. Von nun an werden alle Schritte mit dem seriellen Kabel ausgeführt. | ||
Line 68: | Line 119: | ||
=== Serielle Verbindung zum Atmel überprüfen === | === Serielle Verbindung zum Atmel überprüfen === | ||
− | Das fnordlicht mit dem Rechner über das serielle Kabel verbinden und ein Terminalprogramm für 19200 Baud, (8N1, 8 Datenbit, keine Parität, 1 Stopbit) | + | Das fnordlicht mit dem Rechner über das serielle Kabel verbinden und ein Terminalprogramm für 19200 Baud, (8N1, 8 Datenbit, keine Parität, 1 Stopbit) konfigurieren. Nun das Fnordlicht an eine passende Spannungsquelle (zwischen 12 und 16V) anschliessen. Energie! Solang der Atmel noch nicht programmiert ist und der Jumper PGM (bzw. PGSE) auf die Pins 1-2 gesetzt ist sollte der Atmel nun ununterbrochen die Zeichenkette "ba" (boot application) senden. |
=== Jumper setzen (Programmiermodus) === | === Jumper setzen (Programmiermodus) === | ||
Line 79: | Line 130: | ||
=== Firmware hochladen === | === Firmware hochladen === | ||
Das folgende Target im Makefile überträgt die Firmware in den Flash-Speicher des Microcontrollers: | Das folgende Target im Makefile überträgt die Firmware in den Flash-Speicher des Microcontrollers: | ||
− | <pre>make install-fnordlicht | + | <pre>make install-fnordlicht SERIAL_DEV=/dev/ttyS0</pre> |
− | '' | + | ''SERIAL_DEV gibt die zu benutzende Schnittstelle an.'' |
− | === i²c Adresse im EEPROM setzen === | + | === i²c Adresse im EEPROM setzen === |
Ist die i²c Adresse im EEPROM nicht gesetzt, wird das fnordlicht nach dem Einschalten dauerhaft rot leuchten. Die Standardadresse lässt sich mit folgendem Kommando setzen: | Ist die i²c Adresse im EEPROM nicht gesetzt, wird das fnordlicht nach dem Einschalten dauerhaft rot leuchten. Die Standardadresse lässt sich mit folgendem Kommando setzen: | ||
− | <pre>make install-eeprom | + | <pre>make install-eeprom SERIAL_DEV=/dev/ttyS0</pre> |
− | '' | + | ''SERIAL_DEV gibt die zu benutzende Schnittstelle an.'' |
== Einschalten! == | == Einschalten! == | ||
− | Zunächst darauf achten, dass der Jumper auf die Position "2 | + | Zunächst darauf achten, dass der Jumper auf die Position "1-2" gesetzt ist. (Probe: Atmel meldet beim Einschalten "ba" (boot application) über die serielle Verbindung). Nun einschalten - das fnordlicht führt das Programm aus. |
+ | Unter [[Atmel_Mikrocontroller_Kickstart|Kickstart]] gibts nen Hinweis dazu, wie man mit "screen" dieses "ba" denn auch wirklich empfangen/sehen kann. | ||
+ | |||
+ | == Really Quick Howto == | ||
+ | |||
+ | * Parallel anschließen | ||
+ | * Modul laden | ||
+ | # modprobe ppdev | ||
+ | * Überprüfen, ob /dev/parport0 besteht und funktioniert | ||
+ | * Überprüfen, ob sich der Atmel meldet | ||
+ | $ uisp -dprog=dapa --rd_fuses | ||
+ | * Wenn sich der Atmel nicht meldet, Lötstellen und Kabel checken, ansonsten | ||
+ | $ make fuse | ||
+ | $ make install-bootloader | ||
+ | * Seriell anschließen, Jumper auf EN | ||
+ | $ make fnordlicht.hex | ||
+ | $ make install-fnordlicht | ||
+ | $ make install-eeprom | ||
+ | * Per screen drauf | ||
+ | $ screen -c /dev/null -m /dev/ttyS0 19200 8N1 | ||
+ | * Lampen testen | ||
+ | * Im screen eingeben | ||
+ | X456 | ||
+ | [[Category:U23 2005]] |
Latest revision as of 17:37, 24 November 2010
Dieses fnordlicht quickstart howto beschreibt die Schritte zur ersten Inbetriebnahme.
Contents
Benötigte Kabel
Stromversorgung
Für die Stromversorgung wird ein zweipoliges Kabel mit 2.54mm Doppelbuchse benötigt.
Erstprogrammierung
Für die Erstprogrammierung (Bootloader) wird ein ISP-Kabel (In-System-Programming) benötigt. Diese gibt es u.a. für den Parallelport (einfache Schaltung von [1] ) ACHTUNG: Diese Schaltung trennt den Parallelport des programmierenden Rechners nicht sauber vom fnordlicht (keine galvanische Trennung); d.h. wenn das fnordlicht nicht korrekt aufgebaut ist, ist es möglich, dass der Parallelport oder gleich das Mainboard des programmierenden Rechners beschädigt wird! Es empfiehlt sich dringend, ein selbst aufgebautes fnordlicht mit dem Programmer und dem alten, im Labor zur Verfügung gestellten, Laptop der Tutoren auszuprobieren!
Details:
Pin am ISP | Pin am AVR | Schutzwiderstand | Pin am Parallelport |
---|---|---|---|
1 | +5v | (wird hier nicht benoetigt) | |
2 | GND | -- | GND (18) |
3 | SCK (19) | 470 Ohm | Strobe (1) |
4 | MISO (18) | 220 Ohm | Busy (11) |
5 | MOSI (17) | 470 Ohm | D0 (2) |
6 | Reset (1) | -- | Init (16) |
Serielle Kommunikation und Programmierung
Für die serielle Kommunikation mit dem fnordlicht ist eine Schaltung mit einem MAX232 Pegelkonverter erforderlich. Damit kann - sofern der Bootloader bereits aufgespielt wurde - das fnordlicht programmiert werden.
Benötigte Software
Um dem fnordlicht Leben einzuhauchen bedarf es einiger Software. Die folgende Beschreibung bezieht sich auf die Verwendung von Linux. Diese ist kein Zwang; wir ermutigen jeden, auch Werkzeuge auf anderen Betriebsystemen zu benutzen. Folgende Softwarepakete sind zu besorgen:
- uisp: Micro In-System Programmer für Atmels AVR MCUs (damit kann man mit dem Parallelkabel von oben den Atmel initial programmieren)
- Benötigt Kernel-Support für ppdev und parport; ist bei den meisten Distributionskerneln dabei,
- avra: Assembler für Atmel AVR Microcontroller (damit kompiliert man die Firmware)
- Hinweis für Gentoo-Benutzer: Es gibt ein avra ebuild. (Hinweis an alle, wenn jemand rausfindet wie man das vernünftig verlinkt, dann macht es bitte... danke...)
- avrdude: In-System-Programmer: Download/Upload/Ändern des Inhalts von ROM und EEPROM (damit kann der Atmel nachher seriell (ueber das Kabel mit dem max232 Pegelkonverter) programmiert werden)
- subversion: Versionskontrollsystem, mit dem die fnordlicht-Firmware verwaltet wird.
- ein beliebiges Terminalprogramm, z.b. minicom oder screen oder hyperterm
Ausserdem werden für das Übersetzen des Bootloaders benötigt:
- gcc-avr: Der GNU C Compiler (Crosscompiler für AVR).
- avr-libc: Standard C Bibliothek für Atmel AVR Entwicklung
Zur Installation unter Mac OSX (getestet mit Tiger) sollte die Paketsammlung Fink [2] genutzt werden. Hier kann man nun einfach durch fink install avr-binutils avr-gcc avr-libc avrdude die benötigte Software installieren.
Parallele Verbindung zum Atmel prüfen (ISP)
Bevor der Atmel das erste mal über den ISP am Parallelport mit Firmware programmiert werden kann, sollte die Verbindung funktionieren. Folgendes Kommando sollte (etwa) die nachstehende Ausgabe erzeugen:
$ uisp -dprog=dapa --rd_fuses Atmel AVR ATmega8 is found. Fuse Low Byte = 0xe0 Fuse High Byte = 0xd8 Fuse Extended Byte = 0xff Calibration Byte = 0xaf -- Read Only Lock Bits = 0xff BLB12 -> 1 BLB11 -> 1 BLB02 -> 1 BLB01 -> 1 LB2 -> 1 LB1 -> 1
Ein beliebter Fehler sind mangelnde Schreibrechte für den Devicenode /dev/parport0.
fnordlicht Firmware Quelltext
Die letzte stabile Version bekommt man hier:
- 0.1: http://koeln.ccc.de/prozesse/running/fnordlicht/fnordlicht-0.1.tar.gz
- 0.2: http://koeln.ccc.de/prozesse/running/fnordlicht/fnordlicht-0.2.tar.gz
Einen Development-Snapshot (Development meint hier wirklich ATM "non-working") checkt man per Subversion so aus:
$ svn co http://svn.lochraster.org/fnordlicht-ng/trunk fnordlicht
Prozessor für die Hardware einrichten
Zuerst muss der Mikrocontroller für seine Hardwareumgebung eingerichtet (die Fuse Bits gesetzt) werden. Dazu gibt es einen Eintrag im Makefile und wird durch folgendes Kommando erledigt:
$ make fuse uisp -dprog=dapa --wr_fuse_h=d8 Atmel AVR ATmega8 is found. Fuse High Byte set to 0xd8 uisp -dprog=dapa --wr_fuse_l=e0 Atmel AVR ATmega8 is found. Fuse Low Byte set to 0xe0
Dokumentation zu diesem Vorgang findet sich im Datenblatt zum ATmega8 und in boot/readme im Quelltextverzeichnis.
Bootloader installieren
Im Gegensatz zur fnordlicht Firmware ist der Bootloader für den ATmega in C geschrieben. Der Bootloader muss erst übersetzt und dann via das parellele ISP-Kabel auf den Atmel geschrieben werden. Auch für diesen Vorgang gibt es einen Eintrag im Makefile. Voraussetzung für die Übertragung zum Atmel ist natürlich, dass das fnordlicht über das ISP-Kabel an den Rechner angeschlossen ist. Der Bootloader befindet sich im Verzeichnis boot, der folgende make-Befehl wird jedoch aus dem obersten Verzeichnis des Quelltexts ausgeführt:
make install-bootloader
Der Bootloader war ursprünglich der Atmel Butterfly - die hier benutzte Version wurde nachprogrammiert. Das Hochladen des Bootloaders ist der letzte Schritt, für den das parallele ISP-Kabel benötigt wird. Von nun an werden alle Schritte mit dem seriellen Kabel ausgeführt.
Firmware installieren
Die Firmware wird über die serielle Leitung zum fnordlicht übertragen.
Serielle Verbindung zum Atmel überprüfen
Das fnordlicht mit dem Rechner über das serielle Kabel verbinden und ein Terminalprogramm für 19200 Baud, (8N1, 8 Datenbit, keine Parität, 1 Stopbit) konfigurieren. Nun das Fnordlicht an eine passende Spannungsquelle (zwischen 12 und 16V) anschliessen. Energie! Solang der Atmel noch nicht programmiert ist und der Jumper PGM (bzw. PGSE) auf die Pins 1-2 gesetzt ist sollte der Atmel nun ununterbrochen die Zeichenkette "ba" (boot application) senden.
Jumper setzen (Programmiermodus)
Bevor Firmware über das serielle Kabel in den Atmel übertragen werden kann, muss dem Bootloader mitgeteilt werden, dass er nicht das Programm ausführen, sondern auf den Upload von Firmware warten soll. Dazu das Fnordlicht von der Spannungsquelle trennen und den Jumper PGM (bzw. PGSE) auf die Pins 2-3 setzen. Beim Einschalten meldet der Atmel über die serielle Schnittstelle "bp" (boot programming). Senden eines einzelnen Zeilenumbruches (Enter drücken) quittiert der Atmel mit "?" (unknown command).
Firmware übersetzen
Das folgende Target im Makefile übersetzt die fnordlicht Firmware:
make fnordlicht.hex
Firmware hochladen
Das folgende Target im Makefile überträgt die Firmware in den Flash-Speicher des Microcontrollers:
make install-fnordlicht SERIAL_DEV=/dev/ttyS0
SERIAL_DEV gibt die zu benutzende Schnittstelle an.
i²c Adresse im EEPROM setzen
Ist die i²c Adresse im EEPROM nicht gesetzt, wird das fnordlicht nach dem Einschalten dauerhaft rot leuchten. Die Standardadresse lässt sich mit folgendem Kommando setzen:
make install-eeprom SERIAL_DEV=/dev/ttyS0
SERIAL_DEV gibt die zu benutzende Schnittstelle an.
Einschalten!
Zunächst darauf achten, dass der Jumper auf die Position "1-2" gesetzt ist. (Probe: Atmel meldet beim Einschalten "ba" (boot application) über die serielle Verbindung). Nun einschalten - das fnordlicht führt das Programm aus. Unter Kickstart gibts nen Hinweis dazu, wie man mit "screen" dieses "ba" denn auch wirklich empfangen/sehen kann.
Really Quick Howto
- Parallel anschließen
- Modul laden
# modprobe ppdev
- Überprüfen, ob /dev/parport0 besteht und funktioniert
- Überprüfen, ob sich der Atmel meldet
$ uisp -dprog=dapa --rd_fuses
- Wenn sich der Atmel nicht meldet, Lötstellen und Kabel checken, ansonsten
$ make fuse $ make install-bootloader
- Seriell anschließen, Jumper auf EN
$ make fnordlicht.hex $ make install-fnordlicht $ make install-eeprom
- Per screen drauf
$ screen -c /dev/null -m /dev/ttyS0 19200 8N1
- Lampen testen
- Im screen eingeben
X456