DCC Schnüffel

Bootloader

    Zum schnellen und leichten Wechsel der Anwendungssoftware wird ein Bootloader benutzt. Um eine neue Software einzuspielen, ist folgendes zu tun:
    1. Vor dem Anstecken des Schnüffels die Taste drücken und während dem Einstecken gedrückt halten. Statt der normalen Software wird nun der Bootloader gestartet (erkennbar an dauerleuchtenden ON-LED (grün) und PRG-LED (orange)), welcher nun auf eine neue Software vom PC wartet und diese im Programmspeicher hinterlegt. Zur Kontrolle blinkt die LOC-LED bei der Datenübertragung.
    2. update_sniffer.bat, sniffer.hex, sniffer.eep und avrosp.exe (siehe unten) in ein (beliebiges) Verzeichnis kopieren und aus der Eingabeaufforderung update_sniffer COM1 (bzw. mit der richtigen Portnummer) starten. Wichtig: COM1 groß schreiben! Es erfolgt nun der Update.
      Hinweis: Der USB-Treiber zum Schnüffel gibt sich gegenüber dem Betriebssystem als serielle Schnittstelle aus, je nach Ausstattung und Vorgeschichte wird dieser Schnittstelle dann von Betriebssystem eine Nummer zugeteilt - z.B. COM8. Die Nummer kann sich ändern, wenn ein anderer USB-Port verwendet wird.
      Die aktuelle vergebene Nummer findet man über den Gerätemanager heraus - DCC Sniffer sollte dort korrekt eingetragen sein.
    3. Nach dem Download wird die Anwendung sofort gestartet.
    4. Beim normalen Anstecken wird die Anwendungssoftware sofort gestartet.

Funktionsweise

    Der Bootloader ist ein separates Programm, welches ganz an das Ende des Speichers geladen wird (hier: 0x3800). Durch entsprechendes Programmieren der Konfigurationsbits (sog. Fuses) wird nun der AVR angewiesen, beim Reset zuerst den Bootloader anzuspringen. Dieser prüft die Taste ab und springt auf den normalen Resetvektor 0x0000, wenn die Taste nicht gedrückt ist. Nähere Information finden sich bei Atmel in den Application Notes AVR109 und AVR911; Auf www.atmel.com darf man jedoch nicht nach diesen App-Notes suchen, sondern muß über das Menu zu den App-Notes navigieren, dann kann man die entsprechenden Quellen runterladen.

    Um den Bootloader für den Schnüffel zu erzeugen, müssen die geladenen Quellfiles angepasst werden. Hierzu ist das file preprocessor.xls zu öffnen und die Einstellungen gemäß Anleitung durchzuführen. Danach kann man den Bootloader mit "make" übersetzen. Unten ist der Download für ein bereits angepassten Bootloader.
    Hinweise:
      Das makefile nicht mit einem Editor bearbeiten, welcher TABs durch BLANKs ersetzt.
      Der Linker rechnet in Bytes, d.h. hier wird die doppelte Zahl wie bei den Fuses eingetragen.


    Damit der Bootloader auch angesprungen wird, sind diese Fuses und Einstellungen zu setzen:
  • BOOTRST = 0 (0=programmed): damit springt der ATmega nicht nach 0x0000, sondern auf den Bootloader;
  • BOOTSZ1 = 0 und BOOTSZ0 = 0: damit wird die Größe des Bootloaders festgelegt. Diese Einstellung bedeutet 1kWorte, d.h. der Bereich 0x0000 bis 0x1BFF ist für die Applikation (93,5%), der Bereich 0x1C00 bis 0x1FFF ist für den Loader.
  • BASEADDR = 0x3800: Diese Anweisung im Makefile des Bootloaders sorgt dafür, das dieser auch an richtige Stelle geladen wird. (Hinweis: der Linker rechnet in Bytes, also: 0x3800 = 2*0x1C00)
    So wird geladen:
    Auf der PC-Seite muß ein Programm geladen werden, das mit dem Bootloader reden kann. Hier gibt es mehrere Möglichkeiten:
  • avrosp:
    Dieses Tool verwende ich. Es ist bei der AppNote AVR911 dabei, der Aufruf sieht wie folgt aus:
    avrosp -dATmega162 -e -pf -vf -ifsniffer.hex -cCOM3
    Die Baudrate des Ports muß vorher richtig eingestellt sein:
    mode com3 baud=19200 parity=n data=8
  • avrdude:
    Dieses Tool ist bei WinAVR dabei, der Aufruf sieht wie folgt aus:
    avrdude -c avr910 -p m162 -P com8 -U flash:w:DCCsniffer.hex -U eeprom:w:DCCsniffer.eep -u -b 19200
  • Menüpunkt Tools in AVR Studio; ev. muß vorher in Options die Zahl der "Number of Comports to try" erhöht werden.

Unterlagen

    Hex-File des Bootloaders: bootloader.hex Dieses File muß zur Erstinstallation mit dem ISP-Programmer in den Atmel geladen werden. Bereits adaptierter Source Code hierzu: bootloader.zip

    Tool zum Programm und EEPROM-Update von Atmel: AVROSP.EXE

    Batch zum Programm-Update: update_sniffer.bat (falls *.bat nicht abrufbar: zip-file)
    Hinweis: Einfach sniffer.hex, sniffer.eep, avrosp.exe und diesen Batch in ein Verzeichnis kopieren und den Batch starten. Der Batch erledigt auch die Einstellung des COM-Ports.
    Um einen Batch zu starten, muß man die Eingabeaufforderung bemühen: Leider steht diese nach dem Start auf dem 'home'-Verzeichnis. Einfacher geht es, wenn man dem Kontextmenu des Explorers das Starten der Eingabeaufforderung beibringt. Hier steht, wie es geht.


    Link: HTerm gutes Terminalprogramm