USB

Um den USB-Controller per Software ansprechen zu können, enthält das M052 eine Z80-PIO für die parallele Ein- und Ausgabe von Daten, welche für die bidrektionale Betriebsart (Mode 2) programmiert werden muss. Kanal A wird sowohl für die Byteausgabe als auch Byteeingabe der Daten zum/vom VNC1L verwendet. Kanal B muss dann im Bitbetrieb (Mode 3) genutzt werden und steuert mit den Leitungen an Bit 0-3 den Datenverkehr entsprechend der Vorgaben des parallelen FIFO-Protokolls laut VNC1L-Datenblatt. Die USB-PIO kann voll interruptgesteuert im KC-System betrieben werden.

Für die USB-PIO sind die folgenden I/O-Adressen im KC85 System reserviert:

I/O Adresse PIO Kanal Bedeutung
2C H
A Datenwort
2D H
B
Datenwort
2E H
A
Steuerwort
2F H
B
Steuerwort


Detaillierte Angaben zur Programmierung des KC85, den vorgeschriebenen Übertragungsprotokollen der Hardware und zur Programmierung des USB-Controllers kann man beispielsweise den folgenden Quellen entnehmen:

  • Datenblatt der Z80-PIO bzw. entsprechende Fachliteratur
  • Datenblatt des VDIP2 (Vinculum VNC1L Prototyping Module) von www.vinculum.com
  • Datenblatt des Vinculum VNC1L (Embedded USB Host Controller IC) von www.vinculum.com
  • Vinculum Firmware User Manual von www.vinculum.com
  • Beispielprogramme (application notes) der Firma FTDI für den VNC1L von www.vinculum.com
  • Quelltexte der USB-Software für das M052 im Downloadbereich.

Der VNC1L ist ein hochkomplexes Bauteil, welches intern ein komplettes Mikroprozessorsystem mit CPU, 64 kB E-FLASH-Speicher, 4 kB RAM, einen numerischen Co-Prozessor für beschleunigte 32-Bit Arithmetik sowie einen dualen DMA-Controller enthält. Er wickelt für den KC85 das komplette USB-Protokoll einiger ausgewählter USB-Geräteklassen ab.

Da intern die Hardware nicht fest verdrahtet ist, sondern wiederum von einer integrierten Software - der Firmware des VNC1L - gesteuert wird, bestehen dort verschiedene Möglichkeiten. Erstens gibt es unterschiedliche Firmware-Pakete, welche die beiden USB-Anschlüsse mit verschiedenen Funktionalitäten ausstatten und zweitens kann diese Firmware durch das Einspielen einer neuen Version auch aktualisiert werden.

Im VDIP2 des M052 verwenden wir das sogenannte VDAP-Firmwarepaket ('V'inculum 'D'isk 'A'nd 'P'eripherals), welches am universellsten ausgelegt ist und vor allem für den Betrieb des VNC1L als Hostcontroller für Flash-Speicher (USB-Stick u.ä.) und für allgemeine USB Peripherie-Geräte gedacht ist.

Um eine Aktualisierung der VDAP-Version durchzuführen, kopiert man einfach die neue Image-Datei (festgelegten Namen für Updatedatei beachten) von FTDI in das Hauptverzeichnis des USB-Sticks und steckt ihn am M052 an - der Aktualisierungsvorgang läuft dann vollkommen automatisch an und ab.

Ein KC85-Programm kann nun mit Hilfe der PIO der VDAP-Firmware Befehle erteilen und damit beispielsweise Daten zu USB-Geräten schicken bzw. von ihnen lesen. Die verfügbaren Befehle und Parameter stehen im Handbuch der Firmware und die allgemeine Vorgehensweise wurde von Mario in den Projektartikeln zum USB-Projekt bereits erklärt.

Das Thema USB-Stick bzw. allgemein die USB Geräteklasse "BOMS" ist durch seine Software sowohl unter CAOS als auch CP/M bereits erledigt und solche USB-Geräte können sofort mit einem M052 komfortabel als externe Datenträger benutzt werden. Es gibt dort zwar einige Bedingungen zu beachten aber die Masse der preiswerten USB-Sticks sollte problemlos funktionieren:

  • Dateisystem FAT12, FAT16 oder FAT32
  • Sektorgrösse 512 Byte
  • BOMS Geräte müssen den SCSI- oder AT-Kommando-Befehlssatz unterstützen
  • bei Geräten mit mehreren logischen Gerätenummern (LUNs) wird nur die primäre LUN 0 unterstützt, das kann beispielsweise bei den USB-Kartenlesern mit mehreren Kartenschächten auftreten
  • der VNC1L kann nur auf die primäre Partition eines Massenspeichers zugreifen.

Die VDAP Firmware und damit auch das M052 bietet aber noch viel mehr Möglichkeiten, wenn entsprechende Software für den KC85 entwickelt wird. Dafür gibt es die folgende Tabelle im Firmwarehandbuch:

USB Anschluss M052 1 (links)
2 (rechts)
BOMS (Bulk Only Mass Storage) Nein
Ja
FTDI (FTDI Peripheral IC's)
Ja Ja
HID (Human Interface Device) Ja Ja
PRINTER Ja Ja
HUB Ja Ja
CDC (Communication Device Class) Ja Ja


Wie man dieser Tabelle entnehmen kann, sollte der VNC1L mit der VDAP-Firmware an der linken (1) oder rechten (2) Buchse beliebige USB-Geräte der angegebenen Klassen erkennen - ausser bei der BOMS-Klasse !!! Man sollte daher USB-Sticks oder ähnliche Datenträger auch nur an der rechten Buchse betreiben - auch wenn die Anschlüsse gleich aussehen, sind sie es durch die dahinter liegende Technik nicht ganz!

Damit kann man nun sicherlich auch erkennen, dass der verwendete USB-Controller noch viel Luft nach oben lässt, um andere Geräte per USB auch mit einem KC85 betreiben zu können. Dafür wird natürlich auch immer entsprechende Software im KC85 System benötigt, welche sich nicht von allein entwickelt, die technische Grundlage ist aber mit dem M052 jetzt vorhanden.

Abschliessend noch 2 Bilder aus der Testphase der beiden Prototypen. Da Mario für den Test nur ein VDIP1-USB-Modul zur Verfügung hatte, gab es von Enrico noch etwas Spezialhardware onboard dazu - die entfällt mit VDIP2 natürlich!

M052 USB-Test





M052 USB-Test