µPSD (3233B) Microcontroller Test-Board

Motivation:

In den KVM-Terminatoren (Adapter, um Keyboard/Video/Maus-Signale von einem Server zu multiplexen und per Patch-Kabel dem KVM-Switch zuzuführen) unserer Cyclades KVMnet-Geräte versteckt sich einiges an Elektronik, was man ihnen von außen gar nicht ansieht.

Unter anderem ist ein 8-Bit Microcontroller von STMicroelectronics verbaut - und zwar in der PS/2-Terminator-Variante - ein µPSD3233B in einem 80-poligen TQFP80 (Thin Quad Flat Package) in SMD-Bauweise. Hier ein Photo (aufgenommen unter der Lupe):

µPSD3233B vergroessert

Der µPSD hat einige sehr interessante Features, die ihn als Testobjekt zur Microcontroller- Programmierung für mich geradezu prädistinieren. Da wären zum Beispiel die vielen Schnittstellen "on-chip", wie z.B. 2x UART, I2C, 5x PWM (Pulse width modulation - Pulsweitenmodulation, z.B. für Motoransteuerung), 6x GPIO, 4x A/D Wandler für Sensoren. Dann noch der Onboard 128(+32)KB Flash-Speicher, 8KB Onboard-RAM, was für mich vollkommen ausreicht.

Zum Programmieren des µPSD, d.h. Flashen des Speichers oder Laden der Firmware bietet der µPSD sowohl IAP (In-Application-Programming) via Software als auch ISP (In-System-Programming) über das JTAG-Interface an. Das JTAG-Interface ist eigentlich für Boundary-Scan und Debugging von Chips gedacht, die bereits fest auf einem Board (PCB) verbaut sind, so daß ein Entnehmen der Chips zum Programmieren nicht mehr notwendig ist.

Realisierung:

Um auf dem µPSD-Microcontroller ein wenig zu programmieren, habe ich deshalb ein Testboard mit Minimalausstattung aufgebaut:
  • JTAG-Programmier-Schnittstelle mit Pullup-Widerständen
  • 5V-Netzteil-Buchse für Stromversorgung mit Power-On-LED und Entstörkondensator
  • 80-poliger Sockel für µPSD-Adapter
  • µPSD-Adapter mit aufgelöteten µPSD3233B und Stiftleiste
  • 20.480Mhz-Quarz mit Kondensatoren für on-chip-Oszillator
  • grüne und rote LED (für OK/Error-Status) mit Vorwiderständen und NPN-Verstärker-Transistor)
  • 2 Buchsenleisten 2x3 für I2C-Steckboard und Pullup-Widerstände für SCL und SDA
  • Reset-Taster (Schmitt-Trigger zum Entprellen ist im µPSD on-chip)
  • RS232-Schnittstelle mit DB-9-Buchse und Pegelwandler MAX232 mit externen Kondensatoren
Die Pullup-Widerstände und Kondensatoren für den Quarz sind laut Referenzschaltung für JTAG- und µPSD-Anbindung notwendig (siehe JTAG-Anbindung in FlashLink User Manual, Seite 8, und Quarz-Taktgeber im µPSD32xx Datasheet, Seite 45).

Das Ganze sieht dann von oben wie folgt aus:

µPSD3233B Testboard

Hier eine bessere Perspektive von der Seite:

µPSD3233B Testboard

Wenn der µPSD-Adapter abgenommen wird, sieht man den Sockel für den Adapter und den Quarz darin versteckt:

µPSD3233B Testboard zerlegt

Die Freiverdrahtung auf der Rückseite vom Testboard ist noch recht übersichtlich:

µPSD3233B Testboard Rueckseite

Den SMD-Adapter für TQFP80 habe ich von Elk-Tronic bestellt (wurde extra erst für mich angefertigt ;-). Die Platinenherstellung und Vertieb wird privat von Michael Hatscher betrieben. Ich kann den Kontakt uneingeschränkt empfehlen - sehr guter Service, niedrige Preise, Individualanfertigungen!

Auf der Rückseite vom µPSD-Adapter sind die Kontaktstifte aufgelötet. Hier eine Aufnahme vom µPSD-Adapter von beiden Seiten:

µPSD3233B Testboard zerlegt

Entwicklungstools:

asxxxx:

In dem µPSD3233B steckt ein 8032-Kern, zu dem der 8051-Befehlssatz kompatibel ist. Als Cross-Assembler für den µPSD kann ich den asxxxx (Cross-Assembler-Sammlung) empfehlen, der sehr viele verschiedene 8-bit MCUs unterstützt (Z80, PIC, AVR, 8051, etc.).

Die Cross-Assembler sind Freeware und stehen auf shop-pdp.kent.edu zum Download bereit. Online-Dokumentation ist auch verfügbar.

Unter Linux lädt man das Zip-File av4p11.zip runter und entpackt mit:

unzip -L av4p11.zip

Das Assembler-Binary findet sich dann in asxv4pxx/asxmak/linux/exe/as8051, der Linker in asxv4pxx/asxmak/linux/exe/aslink. Die Startseite zu der umfangreichen Doku zum Assembler und Linker findet sich im File asxv4pxx/asxhtml/asxdoc.htm.

sdcc:

Auf der Suche nach einem kostenlosen C-Compiler für den µPSD3233B mit 8051-Befehlssatz bin ich bei dem sdcc (Small Device C-Compiler) - der unter GPL steht - fündig geworden.

Der sdcc unterstützt C-Programmierung auf Intel 8051, Maxim 80DS390, Zilog Z80 und Motorola 68HC08 based Microcontroller. sdcc enthält auch den zuvor genannten asxxxx mit as8051 und aslinker. Ein umfangreiches Online-Manual steht auf der sdcc-Website bereit.

Den sdcc habe ich bisher nur kurz genutzt. In späteren Projekten will ich mir den Compiler aber noch genauer vornehmen.

Keil µVision3 IDE:

Von KEILTM wird die kommerzielle Entwicklungsumgebung "Keil µVision3 IDE" (IDE - Integrated Development Environment) für die Programmierung auf den unterschiedlichsten Microcontroller-Typen angeboten. Die IDE vereint Projekt-Management, make-Tools, Source-Code-Editor, Debugger, µC-Simulation und Unterstützung zum Flashen der Target-Devices. Gedacht ist es hauptsächlich für C-Programmierung und Macro-Assembler.

Zum Kennenlernen der Software bietet KEIL eine Evaluation Software für verschiedene µC-Typen zum kostenlosen Download an. Für die Programmierung auf µPSD gibt es die C51-Evaluation-Software. Die Evaluation-Version ist allerdings mit starken Einschränkungen verbunden, z.B. kann man nur Programme mit maximal 2KB-Codegröße erzeugen, was aber für die ersten Versuche vollkommen ausreicht.

Die C51-Evaulation-Software kann man entweder bei KEIL nach Ausfüllen des Formulars downloaden, oder auch ohne Anmeldedaten von privaten Seiten, wie z.B. auf der Seite von Gunthard Kraus herunterladen.

CAPS Programming-Tool:

Umfangreiche Infos zur µPSD-Produktreihe finden sich auf der Website von STMicroelectronics.

Zur Programmierung der µPSD-MCU (Microcontroller-Units) werden von STMicroelectronics 2 Windows-Tools kostenlos bereitgestellt:

Das CAPS-Tool hat einen Wizard-Modus, mit dem man in wenigen Schritten die Auswahl und Konfiguration vom µPSD zusammenklicken kann. Die vorher in Assembler oder C geschriebenen Programmer werden mit einem Drittanbieter-Tool vorher compiliert (KEIL IDE, sdcc, asxxxx) und mit dem Linker dann Hex-Code erzeugt. Mit CAPS kann man diesen in einen µPSD-Objectcode "fitten" und mittles FlashLink-Adapter auf den µPSD hochladen (sog. Flashen).

Das PSDsoft-Express-Tool kann dasselbe, man muß aber sämtliche Flash- und RAM-Memory-Maps und Pin-Definitionen von Hand erstellen, was sehr mühsam und zeitaufwendig ist. CAPS ist daher empfehlenswerter für "Rapid Prototyping".

Eigene Programme:

Hier ein kleines Assemblerprogramm, mit der eine im Sekundentakt blinkende LED (green LED) am Port 4.0 (GPIO/DDC-Pin) mit Interrupt und Timer0 realisiert wurde: upsd-blinking-led.asm

Compiliert und gelinkt wird das Assembler-Programm mit den asxxxx-Tools as8051 und aslink:

as8051 -slox upsd-blinking-led
aslink -i upsd-blinking-led upsd-blinking-led
mv upsd-blinking-led.ihx upsd-blinking-led.hex
    
Der Linker erzeugt in dem File upsd-blinking-led.ihx Intel-Hex-Code, der mit dem CAPS-Tool zum Flashen des µPSD verwendet werden kann. Weil CAPS in der File-Eingabemaske nur Hex-Files mit der Endung ".hex" auflistet, wird das File noch in upsd-blinking-led.hex umbenannt.


Next: Als nächstes wurde ein 2-digit 7-Segment-Display über den I2C-Bus auf dem µPSD-Testboard angesteuert.

zurück zur Übersicht