Specifications

AT91 USB Framework
1. Introduction
This document describes a device-side USB framework developed for Atmel
®
AT91
ARM
®
Thumb
®
based microcontrollers. It enables rapid development of USB-compli-
ant class drivers such as the Mass Storage Device class (MSD) or the Communication
Device Class (CDC).
Most microcontrollers of the AT91 family embed a USB controller. However, since
there are several different controllers used in the devices, the framework provides a
hardware layer abstraction. This means that an application relying on this framework
can be easily ported to any AT91 device.
Finally, the presented framework has been carefully designed to be easily integrable
into an Operating System (OS), as well as to operate in a stand-alone way.
2. Framework Architecture
The following three-tiered structure is used:
•A hardware layer which performs low-level operations on the USB controller
•The USB API offers hardware-independent methods and structures
•The application layer, made up of a USB class driver and the user application
The framework includes the USB API and the hardware layer as well as a standard
requests handler. The application layer is built on top of that to provide the device
functionality.
To do so, there must be some form of communication between the USB API and the
application layer. This is carried out by using callbacks. Callbacks are functions
which are automatically called by the USB API to perform specific operations, such as
putting the device in low-power mode or handling class requests sent by the host. The
callback API is defined more thoroughly in Section 3.4 on page 8.
Figure 2-1. USB Framework Architecture
Note: Components in gray are part of the framework.
Specific
USB class driver
User application
USB API
Hardware layer
UDP Controller
CallbacksMethods
Events
Standard
6263A–ATARM–10-Oct-06
AT91 ARM
Thumb
Microcontrollers
Application Note

Summary of content (23 pages)