Hallo ihr Lieben,
jetzt möchte ich mich an dieser Stelle einmal zu Wort melden. Die letzten Wochen waren anstrengend aber wir haben es nun geschafft. Suska-IV-B ist am Start. Natürlich ist es so, dass noch nicht alles perfekt ist aber wir arbeiten daran. Es hat nun doch viele Jahre gedauert, bis wir an diesem Punkt angekommen sind und insbesondere die 68030 CPU und das USB Subsystem haben viel Einsatz erfordert. Mit im Boot - seit Jahren - der Udo Matthe, der u.a. diesen Thread mit Infos bestückt. Ich möchte an dieser Stelle kurz erklären, wie das nun ist mit dem FPGA, dem Betriebssystem, den USB-Treibern, der Hardwaremodellierung und dem FPGA.
Zunächst steht da die digitale Modellierung, die komplett in VHDL (Very High speed integrated circuits Hardware Description Language) verfasst ist. Diese Modellierung macht insgesamt den Falcon IP-Core aus. Er ist mittlerweile so fehlerfrei, dass die betreffenden Betriebssysteme (TOS4.04, EmuTOS ...) darauf booten und viele Anwendungen darauf laufen. Weil wir bezüglich der originalen Falcon-Hardware kleinere Abweichungen haben gibt es dazu eine gepatchte TOS4.04 Version. EmuTOS kommt in einer auf Suska-IV-B zugeschnittenen Compilierung zum Einsatz. Wie das alles gemacht wird ist in den readmes zu finden.
Nun habt ihr das Produkt in den Händen und man kann die Suska an diversen Monitoren und auch Peripheriegeräten wie Maus, Tastatur und WIFI (Raspi Pi) betreiben. Da gibt es aber immer wieder mal Geräte die nicht gut oder gar nicht gehen. Bei mir sind das beispielsweise Funktastaturen/Mäuse die kombinierte Bluetooth/Funk-Dongles haben oder Mäuse mit vielen Tasten. Aber auch gelegentlich einfache Maus/Tastaturkombis (manchmal schon echt betagte Geräte). Es ist nicht ganz trivial zu ermitteln, woran das liegt. Mögliche Ursachen sind:
1. Fehler im USB1164 Hardware IP-Core
2. Nicht unterstützte Features in den entsprechenden Treibern
3. Laufzeit-Intoleranzen des auf dem FPGA laufenden IP-Cores.
Ich denke 1. und 2. erklären sich irgendwie von selbst. Diese beiden Punkte lassen sich entsprechend fixen / ergänzen. Der IP-Core für USB1164 ist aus meiner Feder und den fixe ich, sobald da Bugs erkannt werden.
Laufzeit-Intoleranzen hingegen sind am schwierigsten. Dabei geht es um folgendes:
Suska-IV-B ist aus digitalen Grundbausteinen zusammengesetzt, das sind: D-Flip-Flop, AND-, NAND-, OR-, NOR-, XOR-, XNOR-, und NOT-Gatter. Es ist keinerlei Emulation oder andere Software außer dem Betriebssystem mit dessen Treibern im Spiel, also 100% Hardware. Das heißt nun, dass die VHDL-Beschreibung festlegt, welche Gatter benötigt werden, wie viele D-Flip-Flops und wie das alles miteinander verbunden werden muss. Währen des Compilings von VHDL ist dies der erste Schritt (Synthese). In einem zweiten Schritt wird dann vom Fitter-Tool festgelegt (bausteinabhängig), welche Ressourcen auf dem FPGA verwendet werden (Fitting/Mapping) und in einem dritten Schritt erfolgt dann das Verbinden dieser Ressourcen miteinander (Routing). Das kann man sich so ähnlich vorstellen wie ein Autorouter bei Leiterplattenentflechtung; nur dass dieses Routing immer ein 100% Ergebnis liefern muss, also auch die letzte kleine Verbindung verlegt sein muss! Im Ende hat man dann in Form des Programmierfiles eine Anweisung, die einzig und alleine festlegt, wie die Verbindungsstrukturen auf dem FPGA aussehen (die Ressourcen liegen ja im FPGA fest vor). Das Compiling / Fitting / Routing kann, selbst auf schnellen Entwicklungsmaschinen, dabei schon mal ein paar Stunden dauern. Udo hat Configware-Updates hochgeladen. Die liefen bei ihm über 6 Stunden.
Und nun ist es halt so, dass alle Ressourcen wie oben genannt - aber auch die Verbindungen - Signallaufzeiten aufweisen. Und das ist nun ein ganz wichtiger Aspekt. Sind diese nämlich ungünstig, dann kann sich das 'spooky' auf das Verhalten von Suska-IV-B auswirken. Beispielsweise dass bestimmte Peripheriegeräte nicht funktionieren.
Das heißt nun zusammengefasst, dass ein fehlerhaftes Verhalten entweder an der Software (Betriebssystem / Treiber), oder an der Hardware (IP-Core) oder am Compiling / Fitting / Routing liegen kann und dass man das nicht immer eindeutig benennen kann, woran es eigentlich liegt.
Deshalb gibt es von Zeit zu Zeit Configware-Updates, EmuTOS wird ohnehin ständig weiterentwickelt und auch auf der Treiberseite denke ich, wird es hier und da Updates geben.
Soweit mal zur Erläuterung - stay tuned - und viel Freude mit euren Suskas
Wolfgang