Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
6. Firmware<br />
Der EZ-USB FX2 hat neben seiner USB Peripherie einen 8051 Mikroprozessor integriert, was<br />
eine Implementation der Firmware im C Code ermöglicht. Die Firmware kann direkt vom<br />
Host über USB oder beim Booten vom EEPROM via I 2 C ins intern RAM geladen werden.<br />
Die zweite Variante setzt voraus, dass vor dem Reset des EZ-USB FX2 die Firmware ein<br />
bootfähiges Abbild von sich im EEPROM abgespeichert hat.<br />
Die erste Version unserer Gecko Firmware kann folgende Grundfunktion ausführen:<br />
• FPGA direkt vom Host über USB konfigurieren<br />
• Bootfähige Firmware vom Host via USB ins EEPROM schreiben<br />
• wählbare Anzahl Byte aus EEPROM lesen und über USB an Host senden (zum Debuggen)<br />
• FPGA Konfiguration vom Host über USB ins SPI Flash schreiben<br />
• feste Anzahl Byte aus SPI Flash lesen und via USB an Host senden (zum Debuggen)<br />
• nach einem Booten aus dem EEPROM automatisch den FPGA aus dem SPI Flash<br />
konfigurieren<br />
• Kommunikation zwischen Host und FPGA<br />
• Rückgabe der Firmware Version bei der Anfrage des Hosts<br />
6.1. Programmstruktur<br />
Cypress empfiehlt die Firmware in ihrem vorbereiteten µVision2 Projekt zu integrieren,<br />
was wir auch gemacht haben. Das Projekt findet man nach der Installation der Cypress<br />
Development Kit Software im Ordner Target und enthält folgende Dateien:<br />
• Fw.c ist das Cypress Firmware Framework, welche das USB Handling (Interrupts, Enumeration,<br />
Renumeration etc.) übernimmt. Darin enthalten ist auch die C-Grundfunktion<br />
main(). Cypress empfiehlt den Code in dieser Datei nicht zu editieren. Alle für den Programmierer<br />
nötigen Veränderungen sollen in der Periph.c gemacht werden.<br />
• Periph.c enthält schon eine Vielzahl von vordefinierten Funktionen. Wir verwenden in<br />
unserer Firmware die Initialisierungsfunktion, welche einmal von Fw.c aufgerufen wird,<br />
die Funktion TD Poll(), die regelmässig aus dem main() gestartet wird und die definition<br />
der Vendor Requests. Den restlichen Code im Periph.c haben wir so belassen wie<br />
er von Cypress vorbereitet wurde. Somit können später Änderungen gemacht werden,<br />
ohne das ein Einblick in das original µVision2 Projekt nötig ist.<br />
• Gpif.c wird vom GPIF Designer erstellt und enthält die Waveform Descriptor Tables.<br />
Project Report 17