|
|
SDK für ZTEX FPGA-Boards
Das SDK ist für ZTEX FPGA-Boards entwickelt, funktioniert aber auch mit anderer EZ-USB basierter Hardware.
Das SDK besteht aus einem Firmware-Entwicklungskit für EZ-USB FX2- und FX3-Geräte, einer Java-API für die Host-Software,
Werkzeugen und vielen Beispielen.
Das Paket ist quelloffen und kann unter verschiedenen Lizenzen genutzt werden. Ein einzigartiger Makro-Ansatz ermöglicht die
Konfiguration der USB-Endpoints mit nur wenigen Makrobefehlen.
Diese Eigenschaften unterscheiden das ZTEX SDK von Entwicklungen der Konkurrenz.
Das SDK läuft unter Linux und Windows (X86, 32 und 64 Bit) und ermöglicht die Entwicklung von plattformübergreifender Host-Software mittels einer Java-API.
Die vollständigen Systemvoraussetzungen werden auf der Wiki beschrieben.
SDK Übersicht
Das folgende Diagramm gibt einen Überblick über den Einsatz der verschiedenen Bestandteile des ZTEX SDK.
Eigenschaften
Die Haupteigenschaften sind:
- Firmware-Kit für EZ-USB FX2 Mikrocontroller:
- In C geschrieben, erfordert SDCC-Compiler.
- Zusammenbau der Firmware erfolgt mittels des leistungsstarkem Makro-Prozessors bmp,
welcher es ermöglicht mit wenigen Makros alle erforderlichen Einstellungen festzulegen.
Die benötigten USB-Deskriptoren und die dazugehörigen Routinen werden automatisch generiert.
- Firmware-Kit für EZ-USB FX3 Mikrocontroller:
- In C geschrieben, erfordert das Cypress-SDK einschließlich des GCC-Compilers
- Zusammenbau der Firmware erfolgt mittels des normalen C-Makro-Prozessors CPP,
welcher es ermöglicht mit wenigen Makros alle erforderlichen Einstellungen festzulegen.
Die benötigten USB-Deskriptoren und die dazugehörigen Routinen werden automatisch generiert.
- API für Hostsoftware:
- Java-API mit vollem Funktionsumfang:
- Ermöglicht Plattform-unabhängige Geräte-Software.
- Dateien können aus .jar Archiven geladen werden, sodass Plattform-unabhängige Software-Pakete erstellt werden können, die aus nur einer .jar Datei bestehen.
- Core-API eingeschränkten Funktionsumfang:
- für C (weitere geplant)
- Volle Unterstützung des Default-Interfaces
- Hochladen des Bitstreams in FPGA
- Hilfsfunktionen (Geräte finden, Geräteinfo, ...)
- Funktionsumfang (Firmware und Java-API):
- Hochladen der Firmware direkt in den EZ-USB FX2- und FX3-Mikrocontroller
- Zugriff auf SPI-Flash
- FX2: Zugriff auf EEPROM
- Hochladen der Firmware in den EEPROM (FX2) und Flash (FX3)
- FX2: Zugriff auf microSD/*SD/MMC Flash-Speicherkarten im SPI-Modus
- FX3S: Zugriff auf SD-Karte (SDIO und andere Funktionen mittels Cypress-SDK nutzbar)
- Hochladen des Bitstreams in das FPGA
- Hochladen des Bitstreams in den Flash-Speicher
- Automatische FPGA-Konfiguration aus dem Flash-Speicher während des Hochfahrens
- Unterstützung von MAC-EEPROM, wird zum Speichern von Konfigurationsdaten genutzt
- FX2: AVR ATxmega Unterstützung: Programmieren der Firmware, Zugriff auf die nicht-flüchtigen Speicher (NVM)
- Default Firmware für FPGA-Boards der Serie 2
- Hochladen des Bitstreams in den flüchtigen und nicht-flüchtigen Speicher
- Mehrere Kommunikations-Schnittstellen: hohe Geschwindigkeit, niedrige Geschwindigkeit, GPIO's, Reset-Signal
- Macht Firmware-Entwicklung in vielen Fällen überflüssig
- HDL-Module für FPGA und API für Host-Software
- Kompatibilität ermöglicht board-unabhängige Host-Software
- DeviceServer (G)UI:
- DeviceServer ist eine einfach zu benutzende Benutzerschnitstelle für ZTEX Boards
- Zwei Zugriffsmethoden: HTTP (mittels Webbrowser) und ein einfaches Socket-Protokoll
- Unterstützt Hochladen der Firmware und des Bitstreams in den flüchtigen und nicht-flüchtigen Speicher
- Unterstützt E/A: Lesen und Schreiben von Endpoints
- FWLoader-Werkzeug:
- Kommandozeilen-Werkzeug zum Hochladen von Firmware und Bitstream
- Unterstützt alle Lade-Methoden/-Ziele der API / des Firmware Kits
- Als Open-Source unter GPLv3 lizenziert
- viele Beispiele (z.B. Ansteuern von DDR/DDR2/DDR3 SDRAM, schnelle USB-Übertragungen, Zugriff auf Flash-Speicher)
Andere Programmiersprachen
Die JAVA-API implementiert Funktionen wie das Hochladen der Firmware und des Bitstreams. Allerdings gibt es mehrere Möglichkeiten
die Host-Software in anderen Programmiersprachen zu entwickeln:
- Wenn die Firmware und der Bitstream im nicht-flüchtigem Speicher (mittels FWLoader oder dem DeviceServer) geladen ist,
wird die ZTEX-API nicht benötigt. In diesem Fall kann (fast) jede Programmiersprache und USB-API verwendet werden.
- Der DeviceServer ermöglicht den Zugriff
auf das FPGA Board mittels eines einfachen Socket-Interface. Es wird weder die ZTEX-API noch eine USB-API benötigt. Diese Art des Zugriffs funktioniert sogar mit einfachen Script-Sprachen.
- Die Host-Software kann FWLoader zum Hochladen des Bitstream und der Firmware aufrufen. Fast jede Programmiersprache und USB-API kann so verwendet werden.
|