Firmware- und FPGA-Update: Unterschied zwischen den Versionen

Aus KeyboardPartner Wiki
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
 
(36 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Anleitung zum Aufspielen der unter '''[[Bugfixes]]''' beschriebenen Versionen ===
'''Achtung: Nur zur Dokumentation für ältere Boards. Beachten Sie bitte die neue Seite [[HX3 Remote/Update Application]]!'''


Die HX3-Platine erlaubt es, Updates über ein serielles USB-Adapterkabel selbst aufzuspielen. Keine Angst, Sie können die Hardware damit nicht beschädigen; falls doch etwas schief geht, können wir die Platine jederzeit wieder neu programmieren.
== Grundsätzliches ==


Ein Update besteht in der Regel aus vier Teilen:
'''Achtung: Nur zur Dokumentation für ältere Boards. Beachten Sie bitte die neue Seite [[HX3 Remote/Update Application]]!'''


* den Dateien '''HOAX_main.hex''' und '''HOAX_main.eep''' mit dem Steuerprogramm für den Microcontroller ATmega644P,
Die HX3-Platine erlaubt es, die unter '''[[Bugfixes]]''' beschriebenen Updates über ein serielles USB-Adapterkabel selbst aufzuspielen. Keine Angst, Sie können die Hardware damit nicht beschädigen; falls doch etwas schief geht, können wir Ihnen die Platine jederzeit wieder neu programmieren. Sollten Sie sich das Update nicht zutrauen, können Sie die Platine auch einsenden und im '''[http://shop.keyboardpartner.de/epages/13705466.sf/de_DE/?ObjectPath=/Shops/13705466/Products/bugfix Keyboardpartner-Shop]''' für 10 Euro zzgl. Rücksendung ein Update bestellen.
* der FPGA-Konfigurationsdatei '''main_midi.bit''', die im Prinzip das "Schaltbild" und das physikalische Modell der B3-Orgel enthält,
* der Datei '''hoax3rev.bin''' mit den Hallprogrammen und
* max. acht Scan-Routinen ''HX_xxx.dat''.


In der Regel sollten Sie bei jedem Update alle Teile auf die HX3-Platine laden. Während sich die letztgenannten Teile relativ einfach per XMODEM-Protokoll und einem Makro-fähgen Terminal-Programm hochladen lassen, verwendet man für '''HOAX_main.hex''' und '''HOAX_main.eep''' das Open-Source-Programm AVRdude oder eine ähnliche Lösung. Im folgenden haben wir die Vorgehensweise anhand der kostenlosen Tools AVRdude und Teraterm 4.7x beschrieben.
Wir empfehlen bei Updates und Bugfixes, stets das [https://github.com/heise/HOAX ganze HOAX-Repository] neu herunterzuladen (wenn GIT installiert ist, "clonen", wenn nicht, [https://github.com/heise/HOAX/archive/master.zip als ZIP herunterladen] - Button in der rechten GIThub-Spalte - und auf "C:/" entpacken); persönliche Einstellungen sind vor dem Überschreiben Ihres evt. vorhandenen HOAX-Ordners zu sichern.  


Der Update-Prozess setzt eine funktionierende Platine mit Bootloader voraus, der auf jeder Bausatz-Platine bereits vorhanden ist. Vorbereitung des USB-Kabels und Download der Firmware/Dokumentation wie unter [[Inbetriebnahme der Bausatz-Platine]] beschrieben. Das Upgrade/Update verlangt gewisse Kenntisse im Umgang mit Programmier-Tools; sollten Sie sich dies nicht zutrauen, können Sie die Platine auch einsenden und im '''[http://shop.keyboardpartner.de/epages/13705466.sf/de_DE/?ObjectPath=/Shops/13705466/Products/bugfix Keyboardpartner-Shop]''' für 10 Euro zzgl. Rücksendung ein Update bestellen.
Ein Komplett-Update besteht in der Regel aus zwei Datei-Gruppen. Die erste Gruppe besteht aus dem Steuerprogramm (Firmware) für den Mikrocontroller ATmega644P, der sich um die Abfrage der Bedienelemente kümmert. Die Firmware besteht aus den Dateien


[[Datei:ftdi_reset.jpg|450px|thumb|right|'''FTDI Kabel an HOAX-Platine angeschlossen, Reset-Jumper gesteckt für Firmware-Update über Bootloader''']]
* '''HOAX_main.hex''' (Flash-Inhalt) und
* '''HOAX_main.eep''' (EEPROM-Inhalt, z.B. Preset- und Parameter-Voreinstellungen).
 
Daneben gibt es verschiedene Firmware-Anpassungen für besondere Fälle (z.B. Expander, XB-2 Kit etc.). Zum Aufspielen dieser Dateien auf Ihren HX3 entweder in obiges Schema umbenennen oder die Dateinamen in der Batch-Datei (siehe unten) ändern. Zum Update der Controller-Firmware verwendet man das Open-Source-Programm '''AVRdude''' oder eine ähnliche Lösung, die mit einem Arduino-kompatiblen Bootloader funktioniert. Und dann gibt es noch
 
* die FPGA-Konfigurationsdatei '''main_midi.bit''', die im Prinzip das "Schaltbild" und das physikalische Modell der B3-Orgel enthält,
* die Datei '''hoax3rev.bin''' mit den Hallprogrammen für den kleinen Hall-DSP SPIN FV-1 und
* max. acht Scan-Cores '''HX_xxx.dat''', die wiederum im FPGA selbst von einer Art "Mini-Prozessor" ausgeführt werden und die Abfrage der Tastatur (bzw. MIDI) bewerkstelligen.
 
Die letztgenannten drei Teile lassen sich relativ einfach per XMODEM-Protokoll und einem Makro-fähgen Terminal-Programm hochladen, der ATmega644P kümmert sich dann weiter darum. In der Regel sollten Sie bei jedem Update alle Teile auf die HX3-Platine laden, zuerst immer das Firmware-Update. Im folgenden haben wir die Vorgehensweise anhand der kostenlosen Tools AVRdude und Teraterm 4.7x beschrieben.
 
Der Update-Prozess setzt eine funktionierende Platine mit Bootloader voraus, der auf jeder Bausatz-Platine bereits vorhanden ist. Vorbereitung des USB-Kabels wie unter [[Inbetriebnahme der Bausatz-Platine]] beschrieben. Das Upgrade/Update verlangt gewisse Kenntnisse im Umgang mit Kommandozeilen-Tools.
 
== Test der Kommunikation ==
 
TeraTerm-Setup ''HOAX.INI'' aus HOAX-Repo-Ordner in den TeraTerm-Programmordner kopieren. FTDI-Kabel an Rechner-USB und HX3 anschließen, TeraTerm starten, Setup ''HOAX.INI'' laden (Menü Setup/Restore setup...) und ggf. passende Schnittstelle neu wählen (kann durch Windows-COM-Enumeration von der voreingestellten COM3 abweichen). HX3 einschalten, im TeraTerm-Fenster sollten die HX3-Bootmeldungen und Lizenznummern erscheinen (auch nach HX3-Reset mit ''9999<ENTER>'').
 
[[Datei:ftdi_reset.jpg|450px|thumb|right|'''FTDI Kabel an HOAX-Platine angeschlossen, Reset-Jumper gesteckt für Firmware-Update über Bootloader. Pin 5 (+5V) des Steckverbinders sollte abgeknipst sein, sonst wird HX3 über USB versorgt (kann, muss aber nicht funktionieren).''']]


== Update der Controller-Firmware per Bootloader ==
== Update der Controller-Firmware per Bootloader ==


Der AVR-Controller ATmega644 kümmert sich auf der HOAX-Platine um die Abfrage der Bedienelemente und die Auswertung der empfangenen MIDI-Controllernummern. Bei kleineren Änderungen der Firmware sollte keine EEPROM-Programmierung erforderlich sein; Sie müssen dann nur ''hoaxflash.bat'' ausführen. ''hoaxflasheeprom.bat'' dagegen beschreibt auch das EEPROM neu. VCP-Treiber für '''FTDI-Kabel''' und ggf. Terminal-Programm '''TeraTerm 4.7x''' müssen installiert sein (siehe [[Inbetriebnahme der Bausatz-Platine]]). Das benötigte Flash-Tool '''AVRdude''' ist im HOAX-Ordner bereits vorhanden, es sollte von den Batch-Dateien aufgerufen werden (außer, Sie wissen, was Sie tun!). Der COM-Port muss für AVRdude zugänglich sein, d.h. TeraTerm ggf. vorher beenden.
Der AVR-Controller ATmega644 kümmert sich auf der HOAX-Platine um die Abfrage der Bedienelemente und die Auswertung der empfangenen MIDI-Controllernummern. Den Aufruf von AVRdude haben wir mit der Windows-Batch-Datei ''hoaxflash.bat'' erleichtert; sie beschreibt auch das EEPROM neu. VCP-Treiber für '''FTDI-Kabel''' und ggf. Terminal-Programm '''TeraTerm 4.7x''' müssen installiert sein (siehe [[Inbetriebnahme der Bausatz-Platine]]). Das benötigte Flash-Tool '''AVRdude''' ist im HOAX-Ordner bereits vorhanden, es sollte mittels der Batch-Dateien aufgerufen werden (außer, Sie wissen, was Sie tun!). Der COM-Port muss für AVRdude zugänglich sein, d.h. TeraTerm ggf. vorher beenden.


'''Achtung:''' Das Programmieren des Controller-EEPROMs überschreibt alle nachträglichen Einstellungen und eigene Presets, ebenso wie die Seriennummer-Freischaltcodes, die dann neu eingegeben werden müssen.
'''Achtung:''' Das Programmieren des Controller-EEPROMs überschreibt alle nachträglichen Einstellungen und eigene Presets, ebenso wie die Seriennummer-Freischaltcodes, die dann neu eingegeben werden müssen. Ihre Linzenzen bleiben dabei weiterhin gültig (evt. im Terminal-Programm ausgegebene Nummern beim Booten der HX3-Platine notieren).


*Ggf. aktuelles "HOAX_main.hex" und "HOAX_main.eep" aus [https://github.com/heise/HOAX unserem GIT-Repository] downloaden (als Raw-Text) und in das "C:\HOAX"-Verzeichnis kopieren. Wir empfehlen grundsätzlich, auch gleichzeitig die FPGA-Konfiguration ''main.midi.bit'' und die Scan-Cores ''HX_xxx.dat'' neu herunterzuladen (zum Upload in HX3 siehe unten). Bei umfangreicheren Updates passen sonst möglicherweise Firmware und FPGA-Konfiguration nicht zusammen!
*Ggf. aktuelles "HOAX_main.hex" und "HOAX_main.eep" aus [https://github.com/heise/HOAX unserem GIT-Repository] downloaden (als Raw-Text) und in das "C:\HOAX"-Verzeichnis kopieren. Wir empfehlen grundsätzlich, auch gleichzeitig die FPGA-Konfiguration ''main.midi.bit'' und die Scan-Cores ''HX_xxx.dat'' neu herunterzuladen (zum Upload in HX3 siehe unten). Bei umfangreicheren Updates passen sonst möglicherweise Firmware und FPGA-Konfiguration nicht zusammen!
Zeile 27: Zeile 41:
*JP7 und JP8 müssen gesteckt sein
*JP7 und JP8 müssen gesteckt sein
*JP5 setzen
*JP5 setzen
*Windows "Command Prompt" im Verzeichnis "C:\HOAX" aufrufen, '''hoaxflash XX''' (oder '''hoaxflasheeprom XX''' für Neuprogrammierung auch des EEPROMs) eintippen, aber Befehl '''noch nicht''' mit ENTER abschicken. XX steht für die Schnittstellennummer, z.B. 14 für COM14.
*Windows "Command Prompt" im Verzeichnis "C:\HOAX" aufrufen, '''hoaxflash XX''' eintippen, aber Befehl '''noch nicht''' mit ENTER abschicken. XX steht für die Schnittstellennummer, z.B. "hoaxflash 3" für COM3.
*Weiteren Jumper auf Position R quer auf PL1 setzen, das sind die beiden mittleren Pins 5 und 6 genau in der Mitte (grüner Jumper im Bild)
*Weiteren Jumper auf Position R quer auf PL1 setzen, das sind die beiden mittleren Pins 5 und 6 genau in der Mitte (grüner Jumper im Bild)
*FTDI-Kabel an HOAX-Platine anschließen; GND = Pin1 = schwarzes Kabel!
*FTDI-Kabel an HOAX-Platine anschließen; GND = Pin1 = schwarzes Kabel!
*Jumper auf Position R abziehen, LED1 muss 5x aufblitzen. Möglichst während die LED noch blinkt, in Windows Command Prompt "hoaxflash.bat" aufrufen, d.h. jetzt die ENTER-Taste drücken
*Jumper auf Position R abziehen, LED1 muss 5x aufblitzen. Möglichst während die LED noch blinkt, in Windows Command Prompt "hoaxflash.bat" aufrufen, d.h. jetzt die ENTER-Taste drücken.
*AVRdude programmiert Controller mit HEX- und ggf. EEP-Datei seriell und führt Verifikation der Daten durch
*AVRdude programmiert Controller mit HEX- und EEP-Datei seriell und führt Verifikation der Daten durch.
*Falls "out of sync" oder "verification error", Vorgang wiederholen
*Falls "out of sync" oder "verification error", Vorgang wiederholen.


== Update der FPGA-Konfiguration (HX3-Sound-Engine) ==
== Update der FPGA-Konfiguration (HX3-Sound-Engine) ==
Zeile 52: Zeile 66:
**Core 5 = Scan4014-Strip/Bass parallel 2x 61 Tasten, 2x 4 Platinen oder ein bis drei Scan4014-Inline parallel an PL15
**Core 5 = Scan4014-Strip/Bass parallel 2x 61 Tasten, 2x 4 Platinen oder ein bis drei Scan4014-Inline parallel an PL15
**Core 6 = Test-Routine (Auslieferungszustand)
**Core 6 = Test-Routine (Auslieferungszustand)
**Core 7 = OptoScan von B.A.S.S. an PL14
**Core 7 = XB2 Retrofit Kit, XB2-Tastatur mit Adapterplatine
*Bei '''nicht vollständig bestückter''' Platine (R-Netzwerke fehlen) '''immer Core 6''' (Testroutine) wählen, HOAX ist sonst evt. nicht mehr ansprechbar!
*Bei '''nicht vollständig bestückter''' Platine (R-Netzwerke fehlen) '''immer Core 6''' (Testroutine) wählen, HOAX ist sonst evt. nicht mehr ansprechbar!
*Damit AVRdude wieder auf das FTDI-Kabel zugreifen kann, muss TeraTerm beendet oder Verbindung mit ALT-I unterbrochen werden!
*Damit AVRdude wieder auf das FTDI-Kabel zugreifen kann, muss TeraTerm beendet oder Verbindung mit ALT-I unterbrochen werden!


== Aufspielen der EEPROM-Patches ==
Auch unabhängig von Firmware- und FPGA-Updates veröffentlichen wir neue EEPROM-Parametersätze bei kleineren Änderungen als '''Patches''', genauer gesagt als TeraTerm-Macro '''PATCH_MACRO.ttl''' in [https://github.com/heise/HOAX unserem GIT-Repository]. Das Macro (Textdatei, Erstellungsdatum siehe dritte Zeile) aktualisiert die im HOAX-Controller-EEPROM abgelegten Parameter automatisch, ohne die Presets oder die eingestellte Scan-Routine zu verändern; es ist lediglich die serielle Verbindung zum HOAX/HX3 mit dem FTDI-Kabel und das Terminal-Programm TeraTerm notwendig. Auf diese Weise können Sie eine Neuprogrammierung des EEPROMs über AVRdude vermeiden.
*TeraTerm starten und serielle Verbindung (57600/8n1) mit HX3-Platine herstellen, muss ENTER mit "#0:255=0 [OK]" beantworten
*Makro "PATCH_MACRO.ttl" mit "Control/Macro..." öffnen/ausführen, ggf. Anweisungen folgen
'''Wichtig:''' Die Patch-Makro-Versionsnummer darf von der Firmware-Versionsnummer nur in der "Hundertstel"-Stelle abweichen (z.B. Patch-Macro 3.11, Firmware 3.10).
== Major Releases ==  
== Major Releases ==  


Updates ab der 1. Versions-Nachkommastelle (z.B. von 3.11 auf 3.20) benötigen komplette Neuprogrammierung des ATmega644 mit FLASH und EEPROM sowie Hochladen der beigefügten FPGA-Konfiguration. Da vorherige Einstellungen im EEPROM überschrieben werden, müssen Sie ggf. auch Ihre Lizenznummern erneut eingeben und die Presets neu abspeichern.
Updates benötigen üblicherweise die komplette Neuprogrammierung des ATmega644 mit FLASH und EEPROM sowie Hochladen der beigefügten FPGA-Konfiguration. Da vorherige Einstellungen im EEPROM überschrieben werden, müssen Sie ggf. auch Ihre Lizenznummern erneut eingeben und die Presets neu abspeichern. Neuere Firmware-Versionen vertragen sich möglicherweise nicht mit älteren FPGA-Konfigurationen; wir empfehlen im Zweifelsfall, immer beides neu aufzuspielen!
 
== Dateien im HOAX-Ordner ==


'''Firmware für Controller ATmega644:'''
== Dateien im HOAX-Repository ==
HOAX_main.hex          Flash-Dastei zum Upload per AVRdude, Button Presets oder Preset16-Panel
HOAX_main_latching.hex  Flash-Dastei zum Upload per AVRdude, Latching Presets (einrastende Tasten)
HOAX_boot_main.hex      Flash-Dastei komplett mit Bootloader, für
                        OEM-Programmierung über ISP-Programmer
HOAX_main.eep          EEPROM-Datei zum Upload mit AVRdude oder Programmierung über ISP


'''FPGA-Konfigurationen in FPGACORES:'''
HEX-Files zum Upload per AVRdude. Zum Update HX3 in Hardware-Reset versetzen durch Jumper auf PL1 "R" (Pin 5/6). Unmittelbar vor Aufruf von AVRdude über "hoaxflash.bat" (mit Angabe der COM-Port-Nummer, also z.B. "hoaxflash 3" für COM3) Jumper ziehen. Achtung: Update erfordert Neueingabe der Lizenznummern, siehe http://wiki.keyboardpartner.de/index.php?title=Lizenznummern_erwerben_und_eingeben für weitere Details. Zu jedem HEX-File gehört eine EEPROM-Datei mit Endung .EEP
main_midi.bit          FPGA-Konfiguration zum Upload mit TeraTerm-Makro
*.dat                  PicoBlaze Keyscan-Routinen, zum Upload mit TeraTerm-Makro
*.bin                  SPIN-1 externe I2C Rerverb Programme, zum Upload mit TeraTerm-Makro


  '''Batch-Dateien:'''
  '''HOAX_main.hex''' HX3 Standard, ggf. mit Preset24 oder 1 bis 2 Preset16-Panel
  hoaxflash.bat          ruft AVRdude mit allen Parametern zum Flashen des
  '''HOAX_main_latching.hex''' Latching Presets (einrastende Tasten) mit alter Preset12 MPX Platine
                        Controllers mit "HOAX_main.hex" auf.
'''HOAX_main_tabvib.hex''' wie Standard, jedoch drei Schalter (V1,V2,CH - V3=V1+V2) statt Drehschalter an PL5
                        Parameter COM-Schnittstellennummer, z.B. "C:\HOAX>hoaxflash 14" for COM14
'''HOAX_main_buttonvib.hex''' wie Standard, jedoch Vibrato-Einstellung über die vier Common-Preset-Taster von Panel16 statt Drehschalter
  hoaxflasheeprom.bat    wie vor, jedoch zusätzlich mit EEPROM-Datei "HOAX_main.eep"
'''HOAX_main_xb2.hex''' Spezialversion für XB2-Einbausatz, nutzt vorhandene Bedienelemente und Display
'''HOAX_main_xb2_panel16.hex''' Spezialversion für alten XB2-Einbausatz mit Panel16
  '''HOAX_AVR_ALL.zip''' Enthält alle aufgeführten dateien, gepackt als ZIP


'''Sonstige:'''
===im Verzeichnis FPGACORES===
avrdude.exe            AVRdude-Programm zum Firmware-Update über serielle Schnittstelle
libusb0.dll            Wird von manchen Windows-Systemen benötigt, um AVRdude auszuführen
ATmegaBOOT_xx8.c        Nur für Neukompilierung des Bootloaders mit WinAVR nötig
Makefile                Nur für Neukompilierung des Bootloaders mit WinAVR nötig


  '''Verzeichnisse:'''
  '''main_midi.bit''' FPGA-Konfiguration zum Upload mit TeraTerm-Makro
BETA                    enthält allerletzte Firmware und FPGA-Konfiguration
  '''*.dat''' PicoBlaze Keyscan-Routinen, zum Upload mit TeraTerm-Makro
DOCS_PDF                Syntax-Tabelle zur Kommunikation und weitere Unterlagen
  '''*.bin''' SPIN-1 externe I2C Rerverb Programme, zum Upload mit TeraTerm-Makro
  FPGACORES              FPGA-Konfiguration, Hallprogramme und Scan-Cores
  PLATINEN                Schaltpläne, Bestückungspläne und weitere Unterlagen
TERATERM_MACRO          Update-Makros für Terminal-Programm TeraTerm
giveio                  Wird benötigt, um AVRdude auszuführen


== Important ==
===Sonstige Dateien===


Major releases need complete programming of ATmega644 FLASH and EEPROM,
'''hoaxflash.bat''' Batch-Datei, ruft AVRdude mit allen Parametern zum Flashen des Controllers mit
also reload of FPGA configuration and re-entry of licence numbers.
"HOAX_main.hex" und EEPROM-Datei "HOAX_main.eep" auf (für Windows).
Batch-Datei ist ggf. für das gewünschte Flash-File anzupassen!
'''avrdude.exe''' AVRdude-Programm zum Firmware-Update über serielle Schnittstelle (für Windows)
'''libusb0.dll''' Wird von manchen Windows-Systemen benötigt, um AVRdude auszuführen


Variants:
===Verzeichnisse===
HOAX_main.hex          Flash file for serial upload via AVRdude, button presets or Preset16
HOAX_main_latching.hex Flash file for serial upload via AVRdude, latching presets
HOAX_boot_main.hex      Flash file complete with Bootloader, for OEM programming by ISP programmer
HOAX_main.eep          EEPROM file for upload via AVRdude or ISP programming


  main_midi.bit          FPGA configuration 02012013, to be copied in dierctory FPGACORES
  '''BETA''' enthält allerletzte Firmware und FPGA-Konfiguration
'''DOCS_PDF''' Syntax-Tabelle zur Kommunikation und weitere Unterlagen
'''FPGACORES''' FPGA-Konfiguration, Hallprogramme und Scan-Cores
'''PLATINEN''' Schaltpläne, Bestückungspläne und weitere Unterlagen
'''TERATERM_MACRO''' Update-Makros für empfohlenes Terminal-Programm TeraTerm 4.7x (für Windows)
'''giveio''' Wird benötigt, um AVRdude auszuführen
'''FOR_OEM''' enthält alle dateien für AVR-Erstprogrammierung, wie oben, jedoch mit eingebautem Bootloader
(Arduino/AVRdude-kompatibel) für Programmierung eines fabrikneuen AVR- Controllers.
Außerdem: ATmegaBOOT_xx8.c und Makefile, nur für Neukompilierung des Bootloaders mit WinAVR nötig

Aktuelle Version vom 9. Januar 2015, 18:32 Uhr

Achtung: Nur zur Dokumentation für ältere Boards. Beachten Sie bitte die neue Seite HX3 Remote/Update Application!

Grundsätzliches

Achtung: Nur zur Dokumentation für ältere Boards. Beachten Sie bitte die neue Seite HX3 Remote/Update Application!

Die HX3-Platine erlaubt es, die unter Bugfixes beschriebenen Updates über ein serielles USB-Adapterkabel selbst aufzuspielen. Keine Angst, Sie können die Hardware damit nicht beschädigen; falls doch etwas schief geht, können wir Ihnen die Platine jederzeit wieder neu programmieren. Sollten Sie sich das Update nicht zutrauen, können Sie die Platine auch einsenden und im Keyboardpartner-Shop für 10 Euro zzgl. Rücksendung ein Update bestellen.

Wir empfehlen bei Updates und Bugfixes, stets das ganze HOAX-Repository neu herunterzuladen (wenn GIT installiert ist, "clonen", wenn nicht, als ZIP herunterladen - Button in der rechten GIThub-Spalte - und auf "C:/" entpacken); persönliche Einstellungen sind vor dem Überschreiben Ihres evt. vorhandenen HOAX-Ordners zu sichern.

Ein Komplett-Update besteht in der Regel aus zwei Datei-Gruppen. Die erste Gruppe besteht aus dem Steuerprogramm (Firmware) für den Mikrocontroller ATmega644P, der sich um die Abfrage der Bedienelemente kümmert. Die Firmware besteht aus den Dateien

  • HOAX_main.hex (Flash-Inhalt) und
  • HOAX_main.eep (EEPROM-Inhalt, z.B. Preset- und Parameter-Voreinstellungen).

Daneben gibt es verschiedene Firmware-Anpassungen für besondere Fälle (z.B. Expander, XB-2 Kit etc.). Zum Aufspielen dieser Dateien auf Ihren HX3 entweder in obiges Schema umbenennen oder die Dateinamen in der Batch-Datei (siehe unten) ändern. Zum Update der Controller-Firmware verwendet man das Open-Source-Programm AVRdude oder eine ähnliche Lösung, die mit einem Arduino-kompatiblen Bootloader funktioniert. Und dann gibt es noch

  • die FPGA-Konfigurationsdatei main_midi.bit, die im Prinzip das "Schaltbild" und das physikalische Modell der B3-Orgel enthält,
  • die Datei hoax3rev.bin mit den Hallprogrammen für den kleinen Hall-DSP SPIN FV-1 und
  • max. acht Scan-Cores HX_xxx.dat, die wiederum im FPGA selbst von einer Art "Mini-Prozessor" ausgeführt werden und die Abfrage der Tastatur (bzw. MIDI) bewerkstelligen.

Die letztgenannten drei Teile lassen sich relativ einfach per XMODEM-Protokoll und einem Makro-fähgen Terminal-Programm hochladen, der ATmega644P kümmert sich dann weiter darum. In der Regel sollten Sie bei jedem Update alle Teile auf die HX3-Platine laden, zuerst immer das Firmware-Update. Im folgenden haben wir die Vorgehensweise anhand der kostenlosen Tools AVRdude und Teraterm 4.7x beschrieben.

Der Update-Prozess setzt eine funktionierende Platine mit Bootloader voraus, der auf jeder Bausatz-Platine bereits vorhanden ist. Vorbereitung des USB-Kabels wie unter Inbetriebnahme der Bausatz-Platine beschrieben. Das Upgrade/Update verlangt gewisse Kenntnisse im Umgang mit Kommandozeilen-Tools.

Test der Kommunikation

TeraTerm-Setup HOAX.INI aus HOAX-Repo-Ordner in den TeraTerm-Programmordner kopieren. FTDI-Kabel an Rechner-USB und HX3 anschließen, TeraTerm starten, Setup HOAX.INI laden (Menü Setup/Restore setup...) und ggf. passende Schnittstelle neu wählen (kann durch Windows-COM-Enumeration von der voreingestellten COM3 abweichen). HX3 einschalten, im TeraTerm-Fenster sollten die HX3-Bootmeldungen und Lizenznummern erscheinen (auch nach HX3-Reset mit 9999<ENTER>).

FTDI Kabel an HOAX-Platine angeschlossen, Reset-Jumper gesteckt für Firmware-Update über Bootloader. Pin 5 (+5V) des Steckverbinders sollte abgeknipst sein, sonst wird HX3 über USB versorgt (kann, muss aber nicht funktionieren).

Update der Controller-Firmware per Bootloader

Der AVR-Controller ATmega644 kümmert sich auf der HOAX-Platine um die Abfrage der Bedienelemente und die Auswertung der empfangenen MIDI-Controllernummern. Den Aufruf von AVRdude haben wir mit der Windows-Batch-Datei hoaxflash.bat erleichtert; sie beschreibt auch das EEPROM neu. VCP-Treiber für FTDI-Kabel und ggf. Terminal-Programm TeraTerm 4.7x müssen installiert sein (siehe Inbetriebnahme der Bausatz-Platine). Das benötigte Flash-Tool AVRdude ist im HOAX-Ordner bereits vorhanden, es sollte mittels der Batch-Dateien aufgerufen werden (außer, Sie wissen, was Sie tun!). Der COM-Port muss für AVRdude zugänglich sein, d.h. TeraTerm ggf. vorher beenden.

Achtung: Das Programmieren des Controller-EEPROMs überschreibt alle nachträglichen Einstellungen und eigene Presets, ebenso wie die Seriennummer-Freischaltcodes, die dann neu eingegeben werden müssen. Ihre Linzenzen bleiben dabei weiterhin gültig (evt. im Terminal-Programm ausgegebene Nummern beim Booten der HX3-Platine notieren).

  • Ggf. aktuelles "HOAX_main.hex" und "HOAX_main.eep" aus unserem GIT-Repository downloaden (als Raw-Text) und in das "C:\HOAX"-Verzeichnis kopieren. Wir empfehlen grundsätzlich, auch gleichzeitig die FPGA-Konfiguration main.midi.bit und die Scan-Cores HX_xxx.dat neu herunterzuladen (zum Upload in HX3 siehe unten). Bei umfangreicheren Updates passen sonst möglicherweise Firmware und FPGA-Konfiguration nicht zusammen!
  • Alternativ (und sicherer, Sie haben dann immer die neueste Dokumentation): Komplettes git-Repository als ZIP downloaden, entpacken und unter Beibehaltung der Verzeichnisstruktur in HOAX-Ordner kopieren; dann sind auf jeden Fall die COM-Partameter in den Batch- und Makro-Dateien erneut anzupassen (evt. Backup Ihrer Einstellungen aufbewahren)
  • Platine mit Strom versorgen (5V/500mA)
  • JP7 und JP8 müssen gesteckt sein
  • JP5 setzen
  • Windows "Command Prompt" im Verzeichnis "C:\HOAX" aufrufen, hoaxflash XX eintippen, aber Befehl noch nicht mit ENTER abschicken. XX steht für die Schnittstellennummer, z.B. "hoaxflash 3" für COM3.
  • Weiteren Jumper auf Position R quer auf PL1 setzen, das sind die beiden mittleren Pins 5 und 6 genau in der Mitte (grüner Jumper im Bild)
  • FTDI-Kabel an HOAX-Platine anschließen; GND = Pin1 = schwarzes Kabel!
  • Jumper auf Position R abziehen, LED1 muss 5x aufblitzen. Möglichst während die LED noch blinkt, in Windows Command Prompt "hoaxflash.bat" aufrufen, d.h. jetzt die ENTER-Taste drücken.
  • AVRdude programmiert Controller mit HEX- und EEP-Datei seriell und führt Verifikation der Daten durch.
  • Falls "out of sync" oder "verification error", Vorgang wiederholen.

Update der FPGA-Konfiguration (HX3-Sound-Engine)

Das FPGA ist der eigentliche Klangerzeuger und -verarbeiter der HX3-Platine; zusätzlich enthält es noch einen Mini-Controller für die Tastaturplatinen, der die eingestellte Scan-Routine abarbeitet. Beim Update der FPGA-Konfiguration sowie der Scan-Cores und Hallprogramme bleiben eigene Presets und Einstellungen sowie die Lizenz-Freischaltungen bestehen.

  • JP7 und JP8 müssen gesteckt sein
  • Ggf. aktuelle "main_midi.bit", "HX_*.dat" und "hoax3rev.bin" in Unterverzeichnis "FPGACORES" kopieren
  • In der Makro-Datei "HOAX_UPLOAD.TTL" in "\TERATERM_MACRO" Pfade "mypath=..." kontrollieren (mehrfach vorhanden, mit Texeditor zu öffnen) und ggf. auf aktuellen Pfad zu "<drive>:\HOAX\FPGACORES" setzen (Default C:\HOAX\FPGACORES)
  • TeraTerm starten und serielle Verbindung (57600/8n1) mit HX3-Platine herstellen, muss ENTER mit "#0:255=0 [OK]" beantworten
  • Makro "HOAX_UPLOAD.TTL" mit "Control/Macro..." öffnen/ausführen, Anweisungen folgen
  • Frage "Upload FPGA configuration?" mit Ja beantworten
  • Bei Frage nach Scan Core folgende Ziffern eingeben:
    • Core 0 = Chained OrganScan61 (alt, von Projekt Klangcomputer), mit ein bis drei Platinen in Reihe an PL14
    • Core 1 = MIDI receive only
    • Core 2 = ScanFatar2 mit ein oder zwei Manualen an PL14, ggf. zusätzlich Bass-Scanplatine mit 4014-SR an PL15
    • Core 3 = Scan4014-Strip/Bass parallel 2x 44 Tasten, 2x 3 Platinen an PL15
    • Core 4 = Scan4014-Strip/Bass parallel 2x 49 Tasten, 2x 3 Platinen an PL15
    • Core 5 = Scan4014-Strip/Bass parallel 2x 61 Tasten, 2x 4 Platinen oder ein bis drei Scan4014-Inline parallel an PL15
    • Core 6 = Test-Routine (Auslieferungszustand)
    • Core 7 = XB2 Retrofit Kit, XB2-Tastatur mit Adapterplatine
  • Bei nicht vollständig bestückter Platine (R-Netzwerke fehlen) immer Core 6 (Testroutine) wählen, HOAX ist sonst evt. nicht mehr ansprechbar!
  • Damit AVRdude wieder auf das FTDI-Kabel zugreifen kann, muss TeraTerm beendet oder Verbindung mit ALT-I unterbrochen werden!

Major Releases

Updates benötigen üblicherweise die komplette Neuprogrammierung des ATmega644 mit FLASH und EEPROM sowie Hochladen der beigefügten FPGA-Konfiguration. Da vorherige Einstellungen im EEPROM überschrieben werden, müssen Sie ggf. auch Ihre Lizenznummern erneut eingeben und die Presets neu abspeichern. Neuere Firmware-Versionen vertragen sich möglicherweise nicht mit älteren FPGA-Konfigurationen; wir empfehlen im Zweifelsfall, immer beides neu aufzuspielen!

Dateien im HOAX-Repository

HEX-Files zum Upload per AVRdude. Zum Update HX3 in Hardware-Reset versetzen durch Jumper auf PL1 "R" (Pin 5/6). Unmittelbar vor Aufruf von AVRdude über "hoaxflash.bat" (mit Angabe der COM-Port-Nummer, also z.B. "hoaxflash 3" für COM3) Jumper ziehen. Achtung: Update erfordert Neueingabe der Lizenznummern, siehe http://wiki.keyboardpartner.de/index.php?title=Lizenznummern_erwerben_und_eingeben für weitere Details. Zu jedem HEX-File gehört eine EEPROM-Datei mit Endung .EEP

HOAX_main.hex HX3 Standard, ggf. mit Preset24 oder 1 bis 2 Preset16-Panel
HOAX_main_latching.hex Latching Presets (einrastende Tasten) mit alter Preset12 MPX Platine
HOAX_main_tabvib.hex wie Standard, jedoch drei Schalter (V1,V2,CH - V3=V1+V2) statt Drehschalter an PL5
HOAX_main_buttonvib.hex wie Standard, jedoch Vibrato-Einstellung über die vier Common-Preset-Taster von Panel16 statt Drehschalter
HOAX_main_xb2.hex Spezialversion für XB2-Einbausatz, nutzt vorhandene Bedienelemente und Display
HOAX_main_xb2_panel16.hex Spezialversion für alten XB2-Einbausatz mit Panel16
HOAX_AVR_ALL.zip Enthält alle aufgeführten dateien, gepackt als ZIP

im Verzeichnis FPGACORES

main_midi.bit FPGA-Konfiguration zum Upload mit TeraTerm-Makro
*.dat PicoBlaze Keyscan-Routinen, zum Upload mit TeraTerm-Makro
*.bin SPIN-1 externe I2C Rerverb Programme, zum Upload mit TeraTerm-Makro

Sonstige Dateien

hoaxflash.bat Batch-Datei, ruft AVRdude mit allen Parametern zum Flashen des Controllers mit
"HOAX_main.hex" und EEPROM-Datei "HOAX_main.eep" auf (für Windows).
Batch-Datei ist ggf. für das gewünschte Flash-File anzupassen!
avrdude.exe AVRdude-Programm zum Firmware-Update über serielle Schnittstelle (für Windows)
libusb0.dll Wird von manchen Windows-Systemen benötigt, um AVRdude auszuführen

Verzeichnisse

BETA enthält allerletzte Firmware und FPGA-Konfiguration
DOCS_PDF Syntax-Tabelle zur Kommunikation und weitere Unterlagen
FPGACORES FPGA-Konfiguration, Hallprogramme und Scan-Cores
PLATINEN Schaltpläne, Bestückungspläne und weitere Unterlagen
TERATERM_MACRO Update-Makros für empfohlenes Terminal-Programm TeraTerm 4.7x (für Windows)
giveio Wird benötigt, um AVRdude auszuführen
FOR_OEM enthält alle dateien für AVR-Erstprogrammierung, wie oben, jedoch mit eingebautem Bootloader
(Arduino/AVRdude-kompatibel) für Programmierung eines fabrikneuen AVR- Controllers.
Außerdem: ATmegaBOOT_xx8.c und Makefile, nur für Neukompilierung des Bootloaders mit WinAVR nötig