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 vom Entwicklungsrechner aus mit Hilfe des "Loadservers", der seriellen Schnittstelle (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.