|
System-Software zur
USB-Kommunikation zwischen einem Atom-PC und einem CortexM3-Controller
6 Monate, Hannover/D
Bei einer neuen Generation von
Ticket-Automaten soll die Kommunikation zwischen dem zentralen PC
und den Controllern der Komponenten (Münzverarbeitung, Drucker,
Netzteil, ...) über USB erfolgen.
Auf der Controller-Platine kommt als Prozessor ein ARM Cortex-M3
zum Einsatz. Für diesen Controller wurde ein Mini-Betriebssystem
entwickelt, das preemptives Multitasking unterstützt. Bei der
USB-Kommunikation über mehrere Bulk- und Interrupt-Endpunkte
können eintreffende und zu sendende Nachrichten gepuffert werden.
Für die zahlreichen Peripherie-Baugruppen können Interrupt-Handler
installiert werden. Außerdem erlaubt der Systemkern den Wechsel in
einen Update-Modus, in dem das System selbst sowie die
Applikationen aktualisiert werden können. Weitere Systemdienste
dienen der Abfrage der Systemzeit oder der Beeinflussung des
Task-Schedulers, um z.B. zeitkritische Codesequenzen ohne
Unterbrechung abarbeiten zu können. Als Entwicklungs-Umgebung
wurde Eclipse verwendet, Compiler, Linker etc. stammen aus der
GNU-Toolchain.
Auf PC-Seite wurde ein USB-Client-Treiber entwickelt. Unter
Verwendung des Kernel-Mode-Driver-Frameworks (KMDF) aus dem WDK
Version 7.1 wurde der Treiber als WDF-Treiber implementiert, der
sowohl die 32- als auch die 64-Bit-Windows-Plattformen ab Windows
XP unterstützt. Zur automatischen Abfrage der Interrupt-Endpoints
werden im Treiber Continuous-Reader verwendet. Als einheitliche
Programmier-Schnittstelle für die Windows-Applikationen wurde eine
DLL entwickelt, die sich der Dienste des USB-Client-Treibers
bedient. Die DLL enthält außerdem eine Überwachung von
Plug&Play-Ereignissen. Auf diese Weise wird eine Liste der
angeschlossenen USB-Geräte immer aktualisiert, wenn neue Geräte
angeschlossen werden oder wenn USB-Geräte vom PC entfernt werden.
Mehrere C++-Beispiel-Applikationen sowohl auf Controller- als auch
auf PC-Seite veranschaulichen die Nutzung der System-Software zur
USB-Kommunikation.
|
|