Quicklinks for RTXCusb
Details:
Related Products & Links:
RTXCusb Documentation:
Other Communication Stacks:
Product shortcuts
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 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 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.
Typical Applications
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:
- RTXCusb Host Stack
- RTXCusb Mass Storage Class Driver (host)
Allows the USB host to recognize and write to a memory device
- RTXCfatfile FAT file system
Allows you to write files that are compatible with a PC
- Real-time operating system
- Use the RTXC Quadros RTOS – already integrated with the above
- or your real-time operating system
Hardware will you need to add or have available
- USB host controller
- USB type A connector
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:
- RTXCusb Device Stack
- RTXCfatfile FAT32 file system
Allows you to write files that are compatible with a PC
- 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
- Real-time operating system
- Use the RTXC Quadros RTOS – already integrated with the above
- or your RTOS needs to support tasks for use by USB
Hardware will you need to have on your system
- USB device controller
- 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.
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:
- RTXCusb Host Stack
- RTXCusb CDC Ethernet Class Driver (host)
Allows the USB host to transfer TCP/IP packets
- RTXC Quadnet TCP/IP stack
- The RTXC Quadros RTOS
Hardware will you need to add
- USB host controller
- 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.
|