USB Serial Port Migration Products

A family of USB drivers and firmware to migrate existing application based on serial ports to USB. Quick and cost-effective!

MCCI offers a family of USB drivers and firmware, targeted towards migrating existing applications based on serial ports to USB.

Migration can be based on the following approaches:

  1. The serial port can be relocated from the host to a remote USB device. MCCI calls this a “remote serial port”.
  2. The serial port is eliminated, but serial-port “look and feel” is retained in both the host and the device. MCCI calls this a “virtual serial port”.

MCCI serial port migration products support the both approaches.

From the host’s perspective, the drivers for remote serial ports and virtual serial ports are the same. The firmware involved on the device, however, is slightly different.

(It’s also possible to eliminate the serial port altogether. This allows application to directly control the device without the serial port abstraction. This requires a lot more application rework, but allows a more natural implementation. For this, MCCI uses generic USB drivers or class-specific drivers on the host, and the MCCI USB DataPump® on the device, converting both host and device to use a new application-specific device class.)

Virtual Serial Port Firmware Overview

The most common application of MCCI serial port migration technology is for eliminating the serial port altogether. This provides a convenient way of migrating external devices from RS-232 to USB without rewriting applications. Because RS-232 support is common to all major operating systems, it also is a convenient and cost-effective way to get multi-platform USB support. When combined with MCCI’s PortLynq™ drivers, the conversion from RS232 to USB can completely transparent to the application.

The Virtual Serial Port package consists of:

  1. A suitable USB VSP protocol (e.g. CDC ACM, CDC Device Management, MCCI VSP, or other vendor specific protocols), which includes all the USB “over-the-wire” protocol elements to allow portions of the host serial driver to operate remotely on the USB device. All the important changes made by the host to the host-serial interface are reflected through to the upper edge of the VSP protocol module; and all USB-specific housekeeping is performed internally to the VSP protocol module.
  2. The VSERIAL module, which translates the semantics of a host-based UART into the semantics needed by the device.

Figure 1 illustrates how these components are related to a traditional serial link between a host computer and a data communication device.

Figure 1. RS-232 System Architecture Comparison

The upper half of the picture shows, for reference, a physical RS-232 (serial) communication channel. The lower half shows how each of these blocks is mapped onto the USB subsystem

Notice that the USB link is really part of the interface to the remote emulated 16550 all of the state of the USB class driver in the USB host is available to the firmware in the USB device. All of the details of the wire-level protocol used for communication are encapsulated in the “VSP” protocol module of the DataPump.

The host driver architecture is specific to the operating system being used; we discuss that in detail below.

The VSERIAL protocol is a shim protocol that connects a virutal 16550 interface in the USB host to a device-side 16550 interface. Any baud-rate differences between the two ends are ignored, and the data transfer between the two simulated 16550s is interlocked; so that (unlike with real serial ports) the data transfer is completely interlocked.

The VSERIAL protocol is still abstract, in that it allows the VSP to be configured in a number of different ways.

From the software point of view, an instance of the VSERIAL protocol interfaces with other system modules as shown in Figure 2.

From the software point of view, an instance of the VSERIAL protocol interfaces with other system modules as shown in Figure 2.

Figure 2. VSERIAL Protocol System Block Diagram

Only the serial drivers need to be modified in order to communicate with the VSERIAL protocol module; the rest of the application remains the same.

Remote Serial Port Firmware Overview

The MCCI VSP package can also be used to implement remote serial ports, although this is generally only done as part of a multi-port or multi-function device.

The Remote Serial Port package consists of:

  1. The VSP protocol, which effectively has the semantics of being “inside” a host-based 16550 UART. All the important changes made by the host to the host-based UART-like interface are reflected through to the upper edge of the VSP protocol module.
  2. A hardware-specific driver that bridges the VSP protocol to the physical hardware.

Figure 3 illustrates this architecture.

Figure 3. Remote Serial Port System Diagram

The upper half of the picture shows, for reference, a local RS-232 (serial) communication channel. The lower half shows how the VSP package is used to implement a remote RS-232 port.

Again, notice that the USB link is embedded in the emulated 16550 exported by the USB class driver. All of the details of the wire-level protocol used for communication are encapsulated in the “VSP” protocol module of the DataPump.

In some cases, only the host VSP drivers are supplied by MCCI; the remaining components are implemented directly in hardware or by special-purpose firmware supplied by the OEM or by MCCI.

Normally, a custom protocol is written that interfaces between the VSP protocol and the serial port, as shown in Figure 4.

Figure 4. Remote Serial Port Firmware Block Diagram

Since the MCCI code is all sharable and re-entrant, this architecture can be very efficient for supporting large numbers of serial ports, or serial ports in conjunction with other kinds of USB devices.

Supported Host Operating Systems

Our device firmware delivers great performance working with in-box drivers on Windows 10 and macOS. For even better performance and stabilty, MCCI offers host class drivers for serial support for Windows, macOS, a variety of embedded RTOS host stacks. Of course, we also have host class drivers for our TrueTask® USB host stack, which works with any operating system.

 

Supported Device Operating Systems

Practically any embedded operating system can be supported on the device, ranging from bare metal event loops to INTEGRITY OS or Windows.

 

Interested in more info?

Contact us by email, or use our contact page to find a sales office.

About

For over twenty years we've been developing and licensing USB system software to be embedded into our customers’ consumer-electronics products.

Contact

Use our contact page to select an office or department to connect with. We will work with you to meet your needs.

Updates

Stay up to date with our work and get updates delivered right to your inbox.