Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
6. Firmware<br />
6.6. FPGA Autokonfiguration<br />
Ist der <strong>Gecko3</strong> im stand-alone Modus, muss der FPGA automatisch von der Firmware beschrieben<br />
werden. Seine Konfiguration ist dafür im SPI Flash abgelegt. Das automatische<br />
Konfigurieren ist im Unterkapitel 6.6.3 beschrieben.<br />
6.6.1. SPI Flash beschreiben<br />
Um eine Konfiguration im SPI Flash zu speichern, startet der Host mit dem entsprechenden<br />
Vendor Request diese Funktion. Danach kontrollieren wir ob Daten im EP2 FIFO Buffer<br />
vorhanden sind. Wenn dieser Fall zutrifft, wird die Anzahl Byte im FIFO Buffer eingelesen.<br />
Handelt es sich um eine neue Konfiguration werden die dazu benötigten Sektoren im SPI<br />
Flash gelöscht. Dies ist nötig um überhaupt in den Flash-Speicher schreiben zu können.<br />
Mit der Page Program Instruktion kann man dem SPI Flash maximal 256 Byte senden.<br />
Deshalb wird kontrolliert, ob der Inhalt im EP2 FIFO Buffer grösser als 256 Byte ist. Es<br />
können höchstens 512 Byte im FIFO Buffer vorhanden sein, also zwei mal eine Page Program<br />
Instruktion. Da jedoch die Start Page Program und Last Page Program Funktionen schon je<br />
ein Byte schreiben, muss die Page Programm Schleife zwei Byte weniger schreiben, weshalb<br />
ein Offset nötig ist. Die Schleife wird verlassen, wenn sie den Wert des FIFO Buffers minus<br />
den Offset erreicht hat. Sind also weniger als 256 Byte im FIFO Buffer vorhanden, ist der<br />
Offset zwei. Wenn es jedoch mehr sind, muss der Offset mit Berücksichtigung auf die Limite<br />
der 256 Byte berechnet werden. Wir starten nun die Page Program Instruktion, wiederholen<br />
diese bis die Schleifenbedingung erfüllt ist und beenden sie mit einem Last Page Program.<br />
Sind es mehr Daten als 256 Byte, wird vom EP2 Bytezähler 256 subtrahiert und der Offset<br />
auf 2 gesetzt, da sowieso höchstens noch einmal 256 Byte vorhanden sein können. Danach<br />
erhöht die Firmware entsprechend der gesendeter Datenmenge die SPI Flash Adresse und<br />
wiederholt die Sequenz, bis die Übertragung abgeschlossen ist. Bei Unklarheiten verweisen<br />
wir auf den gut kommentierten Sourcecode dieser Funktion, der im Anhang E.1.5 zu finden<br />
ist. Die Abbildung 6.6 stellt dabei den strukturellen Ablauf dar.<br />
26 Matthias Zurbrügg