OpenDCC - Zentrale für DCC

Wie kann ich beginnen und was brauche ich zum Selbstübersetzen der Software?

    Vorbemerkung: Neben der Benutzung der fertig compilierten Software bietet eine Open Source Software auch die Möglichkeit, das System für eigene Bedürfnisse zu optimieren. Nachfolgend sind die Werkzeuge beschrieben, die man dazu braucht.
    Neben der Veränderung von Grundeinstellungen und Konfigurationen (zumeist Konstanten in config.h oder config.c) kann man natürlich auf tiefer rumwühlen - da sollten dann aber schon Kenntnisse in C und den beteiligten Protokollen vorhanden sein.
  • Zuerst mal Infos über die AVR Microcontroller einsammeln. Hier kann man sich zuerst bei Atmel AVR umsehen und auch das entsprechende Forum AVRFreaks oder Mikrocontroller.net ist ein guter Startpunkt. Auf diesen Seiten finden sich Application Notes, Beispiele, Datenblätter und jede Tools. Auf AVRFreaks gibt auch ein gutes Tutorial zum C-Compiler GCC. Außerdem gibt es im Netz der Netze auch jede Menge Open Source, z.B. einen USB-Endpunkt, Open Source RTOS oder auch einen Webring.
  • Entwicklungssoftware:
    Vom der populären GNU Compiler Collection (GCC) gibt es eine Portierung für den AVR (AVR-GCC). Wer Windows benutzt, findet ein komplettes Install bei Sourceforge.net (WinAVR). In diesem Paket ist alles enthalten: kompletter GCC Compiler mit Tools und einem Editor, den Programmers Notepad, der auch eine minimale IDE mitbringt.

    Als Simulator kann ich AVR-Studio von Atmel empfehlen. WinAVR läßt sich auch in AVR-Studio integrieren, so daß eine komplette integrierte Entwicklungsumgebung vorhanden ist. AVR-Studio simuliert auch die Peripherie des Prozessors mit.

    Auf der Seite des Microwebservers ist eine integrierte Umbegung AVR und eclipse beschrieben.

    Eine Umgebung mit eclpise und gcc kann man auch bei makehackvoid finden.

    Achtung:
    Der GCC-Compiler 3.4.5 enthält einen Bug, welcher z.B. die Funktionsaufrufe bei Lokomotiven stört. Dieser wurde mit der Version 4.1.1 (20070122) behoben. Nur läuft dieser Compiler nicht zusammen mit der alten IDE, man braucht AVRstudio 4.13. Und bevor man das installieren kann, braucht man den neuen Windows Installer 3.1. Also:
    1. Microsoft Windows Installer 3.1.4000.2435 Redistributable installieren.
    2. WinAVR 20070122 installieren
    3. AVRstudio 4.13 (bei http://www.atmel.no/beta_ware/) installieren
  • Hardware:
    Zusätzlich zur Zielhardware (ich verwende dafür das OpenDCC-Board ;-) braucht man für die Erstprogrammierung man noch ein Programmiertool. Ich verwende ponyprog, der entsprechende Stecker ist bereits vorgesehen, aber empfehlenswerter ist die Lösung mit einem zusätzlichen Adapter; Selbstverständlich kann man auch andere Programmiertools verwenden, ein 6-poliger ISP-Stecker ist vorgesehen.

    USBprog ist ein OpenSource Tool, das auch ich selber einsetze.

    Ansonsten ist auch Atmel AVRISP mkII empfehlenswert.
    Später wird dann Flash und das EEPROM mit dem Bootloader geladen werden und der Programmierstecker kann entfallen.

    Dies ist die für OpenDCC adaptierte Version (aus Appnote AVR911): bootloader.zip
  • So geht's:
    Allgemeines Vorgehen: Es wird zuerst in AVR Studio ein neues Project angelegt, Prozessor ist ATmega32 mit 16MHz. Die folgenden Angaben werden im AVR Studio bei Project -> Configuration Options eingestellt:
    Allgemeine Einstellungen
    Als Optimierung ist -Os zu wählen, die Taktrate ist je nach Projekt einzustellen: für OpenDCC 16MHz, für die Decoder 8 oder 10MHz.

    Memory
    So werden die zusätzliche Speicherbereiche im EEPROM definiert. Diese Definition ist notwendig, um EEPROM Variablen an feste und vordefinierte Adressen zu binden. Leider werden diese Optionen nicht korrekt an WinAVR weitergegeben - deshalb ist speziell bei den Decodern der gesamte Inhalt des EEPROM in einer Struktur abgelegt. Bei OpenDCC_XP ist das externe Makefile 'Makefile_EECV' zu verwenden. Darin wird der CV-Inhalt gezielt auf den Beginn des EEPROM gelegt.

    Nun wird das Softwarepaket wird in diese Arbeitsverzeichnis entpackt. Alle header und c-Files werden nun mit "add existing source files" hinzugefügt. Nun sollte mit BUILD (=Taste F7) übersetzt werden können.
    Alle wesentlichen Einstellungen sind config.h zu finden.
    Hinweise:
    Einfacher geht es so: das im ZIP-File enthaltene OpenDCC.APS bei 'Project - Open' öffnen, dann sind alle Einstellungen vorhanden.
    Das file dccout_without_feedback.c ist eigentlich ein backup von dccout.c und sollte nicht included werden.
  • Fuses:
    http://www.engbedded.com ist ein geniales Werkzeug, um die Einstellung der Fuses zu berechnen.

Interessante AVR-Links

 

© Wolfgang Kufer 09.11.2006, update 22.11.2007