Quadros Systems Inc.
RTXCusb
Complete Development Suite for Embedded USB

RTXCusb is a suite of stacks, class drivers and controller drivers for low-, full-, and high-speed USB implementations in embedded devices. This development solution was specifically developed to support the growing number of embedded developers who want to integrate USB plug-and-play functionality into their products.

Whether you are building a new application or want to quickly and easily add USB connectivity to an existing application, Quadros Systems has a solution for you.

Product Overview

Complete USB development suite. RTXCusb supports development on both sides of the USB bus. This comprehensive solution includes host and device stacks, class drivers and controller drivers.

Modular solution --- choose only the components you need. RTXCusb is designed to be a fully modular solution. Developers can license either the host stack or the device stack along with the class drivers and controller drivers they need for their application.

Developed to meet the needs of embedded applications. RTXCusb was developed for embedded applications which need a small footprint and high performance.

RTOS-agnostic. RTXCusb has been designed to work closely with the RTXC Quadros real-time operating system, however the RTOS abstraction layer included with RTXCusb means it can be used with almost any kernel or operating system.

USB low-speed, full-speed and high-speed compliant. RTXCusb is designed to USB standards and is interoperable with any standard USB software. Developers can use RTXCusb to develop USB 1.1- and 2.0-compliant embedded hosts, peripheral and dual role (OTG) devices.

Integrated with RTXC middleware. RTXCusb can take full advantage of RTXC communications stacks and middleware. This includes the RTXCfatfile embedded file system, for support of mass storage, and the RTXC Quadnet TCP/IP stack to support the attachment of a Wi-FI dongle to an embedded USB host system.

Source Code. RTXCusb is written in ANSI C with full source code provided.

Fully documented. RTXCusb is intuitive and well documented with a user-friendly manual.

Understanding Embedded USB

USB is the fastest growing interface/bus standard in the embedded industry. Its popularity seems driven by the low cost of hardware and the value of its plug and play features. In response to customer demand, Quadros Systems has developed a suite of USB solutions designed to simplify the implementation of USB-compliant products. With the increasing complexity of embedded systems, smaller engineering teams, shorter development schedules and the need for code portability, it makes sense for many customers to license commercial software rather than build it. However, as simple as we have made the USB development process it is still important for the developer to have a basic understanding of USB terminology.

USB Components

To understand what you need to support USB in your embedded system it is important to understand the key pieces in a USB system. Here is a brief description. More detailed information is contained in the USB 2.0 spec maintained by the USB Implementers Forum.

Because USB is a host-controlled bus, the Host is a critical piece in a USB system. The Host detects the attachment of USB devices, determines the type of device, loads the appropriate drivers and manages the flow of data.

USB Devices (or peripherals) are function-specific devices that can be recognized and enumerated by a Host. Each device supports one or more pipes through which the Host can communicate. The Host uses an enumeration process to recognized USB Devices.

USB Class Drivers are used to implement specific functions such as mass storage and communications. A class is a group of devices or interfaces which have common attributes with data streams having similar data formats. The Class is used by the Host to identify a driver responsible for managing the interface. Each type of USB function requires a corresponding class driver on both the host and device sides of the bus.

USB Controllers (Host and Device) are responsible for the physical connection between the Host and Device systems. Controller Drivers are required to initialize the hardware and prepare it to respond to the system software.

Differences from PC-based USB host systems

A USB host in an embedded system is quite different from that of a PC. A PC is a general, multi-purpose computing platform; an embedded system is usually a more narrowly defined, special purpose environment.

A USB host in a PC must be able to enumerate virtually any USB device. If the driver software is not available, it can prompt the user to install it. Because the embedded system is more narrowly defined it will only enumerate one or two USB device types. Usually the embedded system does not have a user interface or the I/O capability to install new drivers so all drivers must be pre-loaded into the system.

A USB device (peripheral) will have the same functionality whether it is used as part of an embedded application or if it is a PC peripheral.

Applications in Embedded Systems

There are many reasons for adding USB connectivity to an embedded system. These are some of the more popular applications.

  • Mass storage

    Interfacing to removable USB memory sticks is the most popular embedded application for USB. This requires adding USB host capability to the embedded system so a USB memory stick (USB device) can be enumerated. It also requires a PC-compatible FAT file system (such as RTXCusb) to be integrated with the mass storage class driver.

    Another use of the mass storage class is to set up the embedded system as a USB device so it can plug into a PC/laptop and be enumerated as a remote drive. After enumeration the resident memory on the embedded system could be read (or written to) by the PC.

  • Serial I/O

    With RS-232 connectors disappearing from laptops, many system manufactures are looking to USB to provide a serial connection between a laptop or PC and the embedded system. You want a technician to be able to read log files and perhaps do a firmware update.

    In this scenario, the PC is the USB host. The embedded system is the USB device. When the device is enumerated by the host, the host (PC) opens a communications port. This scenario employs a sub-class of the Communications Device Class – CDC Serial Emulation.

  • HID

    The Human Interface Device class allows the attachment of USB devices such as a keyboard and/or mouse.

  • Printer

    The Printer Class allows the Embedded Host to communicate to a printer over a USB connection.

  • Ethernet and Wireless

    A sub-class of the Communications Device Class allows TCP/IP packets to be sent over USB. This is the USB class you would likely use to communicate to a Wi-Fi dongle.

RTXCusb Host Solutions
  • Full-featured USB Host Stack
  • Support for USB 1.1 and USB 2.0
  • USB Host Class Drivers
    • Mass Storage
    • Printer
    • HID (mouse, keyboard)
    • Additional class drivers may be available; ask your sales representative for more information
  • USB Host Controller Driver
    • Support for popular on- and off-chip USB controllers
    • Sample drivers for USB Host Controller built to OHCI, EHCI or UHCI standards

The RTXCusb host system has been developed specifically to support the unique requirements of USB host implementation in embedded systems. This powerful solution complies with the USB Implementers Forum requirements for Embedded Hosts. An Embedded Host has limited system resources compared to a PC-based host and the user cannot install general purpose software or drivers. These Embedded Hosts are configured to work with a predefined set of USB peripheral devices.

The RTXCusb host system detects the attachment and removal of supported USB devices, manages control and data flow between the host and USB devices, collects status and activity statistics and provides power to attached devices.

The RTXCusb Host SDK has been designed to simplify development by abstracting away from the developer all of the packet transmission and data routing inherent in a USB implementation. The simple API makes it easy to implement all of the necessary initialization and callback functions.

The RTXCusb Host system includes a host stack and hub driver (allows for the simultaneous connection of multiple USB devices). The system also includes a device driver for USB host controllers which comply with the USB standards (OHCI-, UHCI- or EHCI). Some controllers deviate from the standard. There are custom drivers available for non-compliant controllers. We have also implemented class drivers for vendor-specific USB devices. Ask your sales representative for more information.

Specific class drivers are required to support desired USB device types so that the USB host can recognize and enumerate these devices when they are attached. Currently available class drivers for the RTXCusb host system include Mass Storage (integrated with our FAT file system), Printer, and Human Interface (HID). New class drivers are continually being developed. Check with your sales representative if you need support for a class not listed above.

RTXCusb host
RTXCusb Device Solutions

USB device (function) capability allows the embedded system to attach to a USB host (such as a PC).

  • Embedded USB Device Stack
  • Support for USB 1.1 and USB 2.0
  • USB Device Class Drivers
    • Mass Storage
    • CDC Ethernet (Ethernet over USB)
    • Additional class drivers may be available; ask your sales representative for more information
  • Device Drivers
    • Sample USB controller driver
    • Support for a wide range of on- an off-chip controllers

The RTXCusb device (peripheral) system is the primary framework and set of services that manages a USB device. The RTXCusb device stack always operates in conjunction with a corresponding host stack on another system to which the device is connected. The system is designed to manage multiple controllers, implement standard USB control requests and notify the class drivers of any data transfers initiated by the Host. It provides the necessary USB abstraction to the class drivers, and interfaces with the controller hardware driver to provide data transfer services over USB.

The RTXCusb device SDK has been designed to simplify the development of USB devices by abstracting away from the developer all of the packet transmission and data routing inherent in a USB implementation. The simple API makes it easy to implement all of the necessary initialization and callback functions.

The RTXCusb Device system includes a device stack and controller driver (when available) or a driver development kit including a sample driver.

Device side class drivers are required to support specific USB device types so that the USB host can recognize and enumerate these devices when they are attached. Currently available class drivers for the RTXCusb Device system include Mass Storage, CDC Abstract Control Model (Serial Emulation) and CDC Ethernet Emulation. New class drivers are continually being developed. Check with your sales representative if you need support for a class not listed above.

Testing

RTXCusb Device System is tested using USBCV R1.3, the USB Implementers Forum compliance test tool, which evaluates High, Full and Low-speed USB devices for conformance to the USB Device Framework.

RTXCusb host
RTXCusb OTG Solutions

Microprocessor manufacturers have begun integrating USB On-the-Go (OTG) controllers into their integrated processors. This provides limited host functionality (single device attachment, no hub) or full device functionality and the capability of dynamic switching between host and device.

The RTXCusb OTG system integrates both RTXCusb host and device systems to support these devices in multiple configurations: host only, device only or the dual role functionality of OTG, depending on the needs of your application.

RTXCusb host

Typical Applications


USB mass storage solutions
Support a USB memory stick

You want to be able to attach a USB flash memory device to your existing embedded system to upload files to a PC. This is a common embedded application for USB technology. Your embedded system needs to function as a USB host. The memory stick is a USB device (function).

Software you will need to add to your embedded system:

  1. RTXCusb Host Stack
  2. RTXCusb Mass Storage Class Driver (host)
    Allows the USB host to recognize and write to a memory device
  3. RTXCfatfile FAT file system
    Allows you to write files that are compatible with a PC
  4. Real-time operating system
    1. Use the RTXC Quadros RTOS – already integrated with the above
    2. or your real-time operating system

Hardware will you need to add or have available

  1. USB host controller
  2. USB type A connector

Replace serial with USB
Connect your Embedded System to a PC via USB

You want to be able to attach your embedded system to a PC so that a technician can read log files and perhaps do a firmware update.

In this scenario, the PC is the USB host. The embedded system is the USB device.

Software you will need to add to your embedded system:

  1. RTXCusb Device Stack
  2. RTXCfatfile FAT32 file system
    Allows you to write files that are compatible with a PC
  3. RTXCftl File Translation Layer
    Allows a NAND device to be addressed as a set of standard 512 byte logical sectors so that a FAT32 file system can write to resident flash. The Flash translation layer also provides wear leveling and protection against data loss from power failure
  4. Real-time operating system
    1. Use the RTXC Quadros RTOS – already integrated with the above
    2. or your RTOS needs to support tasks for use by USB
  5. Hardware will you need to have on your system

    1. USB device controller
    2. USB type B connector on your board

    NOTE: This implementation does not allow concurrent access to the resident Flash. The PC host and the embedded device will each need to reinitialize the file system before reading/writing to the Flash memory, and the embedded system needs to know not to attempt to write to the NAND flash while the PC is attached.


USB to WiFi
Add WiFi (WLAN) to your system via a USB connection*

You want to be able to attach a USB WiFi device to your existing embedded system to connect to a wireless network.

Software you will need to add to your embedded system:

  1. RTXCusb Host Stack
  2. RTXCusb CDC Ethernet Class Driver (host)
    Allows the USB host to transfer TCP/IP packets
  3. RTXC Quadnet TCP/IP stack
  4. The RTXC Quadros RTOS

Hardware will you need to add

  1. USB host controller
  2. USB type A connector on your board

*Quadros Systems also provides an SDIO stack to support WiFi, Bluetooth and other removable devices via an SD card slot.




These are just a few of the common applications for USB in an embedded system. Please contact your local Quadros Systems sales representative for information on other applications supported by RTXCusb software.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NXP

  • ISP1760
  • ISP1761
  • ISP1362
  • ISP1160
  • ISP1161
  • ISP1561
  • ISP1562
  • ISP1563
  • ISP1181
  • LPC2300
  • LPC2378
  • LPC 2368
  • LPC 2366
  • LPC 2364
  • LPC2400
  • LPC2460
  • LPC2468

Freescale

  • MCF5327
  • MCF53281
  • MCF5329
  • MCF5329
  • MCF5372
  • MCF5373
  • MCF53721
  • MCF52277
  • MCF5475
  • MCF5485
  • MCF54455

Intel/Marvel

  • PXA270

Atmel

  • AT91RM9200
  • AT91SAM9260
  • AT91SAM9261
  • AT91SAM9262
  • AT91SAM9263
  • AT91SAM7XC128
  • AT91SAM7XC256
  • AT91SAM7XC512
  • AT91SAM7SE256
  • AT91SAM7SE232
  • AT91SAM7SE512
  • AT91SAM7S321
  • AT91SAM7S264
  • AT91SAM7S128
  • AT91SAM7S256