Tests
Waehrend des Designs der Hardware werden Sie sicher zunaechst den
Sound-Simulator zum (hardwarenahen) Pruefen des Konzepts benutzen.
Wenn es dann an die konkrete Hardware geht, koennen Sie Testbenches
zusammen mit einem Hardware-Simulator wie Icarus benutzen, um Ihren
Entwurf schrittweise zu entwickeln. Wie testet man aber die Hardware,
nachdem sie auf den FPGA heruntergeladen wurde? Nur die einfachsten
Tests lassen sich manuell mit Monitorkommandos durchfuehren. Also
werden Sie Testprogramme schreiben, die Ihre Hardware ansteuern. Die
fertig gebundenen Programme koennen von Ihrem Rechner aus mit Hilfe
des "Loadservers", der seriellen Schnittstelle (evtl. ueber USB) und
des Monitorkommandos "load" in den Hauptspeicher des ECO32 geladen
und gestartet werden. Das ist je nach gewuenschter Unterstuetzung auf
drei verschiedene Arten moeglich.
1. In Assembler, ohne Unterstuetzung
Hierbei benutzen Sie keine fremde Software, haben also nach dem Laden
den gesamten Rechner fuer sich alleine und muessen sich folglich an
keine Konventionen halten. Das ist das sog. "bare-metal programming"
in Reinform. Das Beispiel "hello1" zeigt,
wie man das macht, hier exemplarisch am direkten Schreiben in das
Display-Memory.
2. In Assembler, mit Monitor-Unterstuetzung
Der Nachteil der Methode 1 zeigt sich insbesondere, wenn Sie etwas
umfangreichere Ein- und Ausgaben in Ihrem Testprogramm haben moechten:
Sie muessen alles alleine (und immer wieder) programmieren. Andererseits
enthaelt aber der Monitor bereits Ein/Ausgaberoutinen, die Ihr Programm
mitbenutzen koennte. Damit das klappt, muessen Sie ein paar Konventionen
einhalten (Registerklassen beachten, Stack einrichten). Das
Beispiel "hello2" zeigt die Vorgehensweise
an der Ausgabe eines Strings auf der Konsole.
3. In C, mit Bibliotheksunterstuetzung
Wenn man kompliziertere Testalgorithmen implementieren moechte, dann
will man die nicht in Assembler programmieren, sondern z.B. in C. Das
Beispiel "hello3" zeigt, wie das geht.
Hier kuemmert sich jetzt der C-Compiler und der Startup-Code um das
Einhalten der Konventionen, was die Programmierung erheblich erleichtert.
Haeufig benoetigte Routinen werden in Bibliotheken zusammengefasst und
koennen so von verschiedenen Testprogrammen benutzt werden.