|
Let MindShare Bring "Embedded USB" to Life for You
This hands-on course provides the opportunity to apply classroom knowledge of USB by building and testing your own embedded host and USB device. The course is structured around a series of lab exercises implemented on an FPGA-based development board. The course design demonstrates all the critical concepts and techniques required to create an embedded Mass Storage Class implementation. For example, your solution will include code for enumeration, configuration, sending application-specific commands to a device, moving large amounts of data on bulk endpoints, and encapsulating high-level protocols.
The vast majority of lab time is spent on USB-specific issues rather than learning the development tools. This permits the course to focus on core skills, along with byte and packet-level knowledge of USB to ensure a thorough understanding of the overall embedded solution. After completing the class you will leave with your working FPGA solution. More importantly, you will have the depth of knowledge to easily move on to more complicated/high-performance solutions, which may include the additional overhead of a complete EHCI controller solution.
MindShare Courses On Embedded USB 2.0:
All of MindShare's classroom and virtual classroom courses can be customized to fit the needs of your group.
Embedded USB 2.0 Workshop Info
|
Course Length: 2 Days
Who Should Attend?
Anyone tasked with the responsibility of implementing an embedded host solution or designing an endpoint device.
Lab Environment
The labs are based around an FPGA development board, with an attached USB Full-Speed transceiver, Host VBUS power switch, both A and B connectors, and memory. The FPGA is pre-configured to provide a 32-bit embedded CPU and an embedded USB Host/Device controller. Depending on the firmware loaded into the board, it can behave as either a USB device or USB Host.
The software platform is based on the Xilinx embedded development environment. MindShare has pre-configured the hardware and software to provide a platform for firmware development. Using the Eclipse IDE and GNU development tools, you can quickly develop firmware, download it to the board and test its operation on the silicon.
The software platform is delivered as a pre-configured VMWare Virtual Machine with all the necessary tools installed and tested. All of the scripts and configuration files necessary to recreate the FPGA environment are included. << STUDENTS ONLY NEED TO COMPILE/RUN CODE, NOT REWORK THE FPGA. THIS IS A CANNED ENVIRONMENT >>
Lab Exercises:
- Introduction to the hardware/software platform.
- This introductory lab demonstrates basic features of the lab environment, and development tools, and the method to download firmware into the lab board.
- You will use the tools to compile a sample program, download it to the board, and verify that the program ran.
- Enumeration and Device Configuration
- In this lab, you will develop C code to monitor VBUS on the USB connector, then initiate connection on USB and respond to the enumeration sequence.
- Implement code to respond to a control transfer on endpoint 0.
- Implement USB descriptor tables to identify the device as a Mass Storage Class device.
- Bulk transfer and the Mass Storage protocol.
- This lab builds on the work from the previous lab.
- Develop C code to respond to Bulk IN and Bulk OUT requests from the USB Host.
- Develop C code to implement a subset of the Mass Storage protocol on the USB device. This will make some of the RAM on the board appear as a standard Mass Storage device to a USB host.
- Testing the USB Device
- Exercise the USB device against a Windows PC, and the USB Mass Storage test suite.
- Device Attach/Detach
- In the first host lab, you will write code to enable the USB host to detect device attach and detach, and to control the power to the ports VBUS line.
- Device Configuration
- From Lab #5, you can detect that a new device was attached to the host port.
- In this lab, you will develop C code to perform control transfers on endpoint 0 to identify and configure the device.
- Read Device and Configuration Descriptors.
- Select a bus address for the device.
- Select a Configuration.
- Initiating Bulk Data Transfers
- From Lab #6, you have C code to connect to, and identify an attached device.
- In this lab, you will implement the building blocks of the Mass Storage protocol Bulk Read and Bulk Write.
- Sending Mass Storage Commands Over USB
- Develop code to send commands to a connected Mass Storage Device to read and write disk sectors.
- From Lab #7, you have routines to write and read bulk packets targeted to a specific device/endpoint.
- In this lab, you must implement code to encapsulate SCSI commands in the bulk packets to implement the mass storage protocol, then use the commands to access a mass storage device.
- Command Write Generic MSC Command Wrapper
- Data Write Payload data to be written.
- Data Read Payload data for a read command.
- Read Block Status of the previous command.
- Write Block Macro function Write a block of data to a specific location on the mass storage device.
- Read Block Macro function Read a block of data to a specific location on the mass storage device.
Recommended Prerequisites:
- C Programming knowledge required.
- MindShare's Embedded USB 2.0 Course or equivalent background.
- Each student must bring their own laptop running Windows XP or later.
Pre-work:
After a student has registered for the course, instructions will be provided for downloading and installing the MindShare USB Lab environment prior to class. Detailed instructions are provided. The pre-work involves two steps:
- Download and install VMWare player and the Mindshare Lab environment on their laptops.
- Verify installation by running scripts in the virtual environment that verifies proper operation.
|
|