A playground to learn USB 2.0 Protocol by trying to implement a USB Stack for Microcontrollers from scratch.
The approach would be modularized, i.e. driver-library (hardware-specific), middleware and class-specific implementations will form the stack to ease porting to different hardware.
The current implementation is built over Texas Instuments' TM4C123GH6PM (Tiva C) MCU based on Arm-Cortex M4. The MCU enumerates successfully as a USB Device of the CDC Class. The device doesn't handle the SET_CONFIGURATION request as for now.
The following are a few good resources to learn about USB:
- USB in a Nutshell
- Jan Axelson's Book
- A wonderful Application Note by Cypress Semiconductor
- The Holy Specification
- The CDC Class Specification
If you are interested to contribute on USB for your own learning or otherwise, please drop an e-mail @ - [email protected] , we'd love a healthy collaboration. We'd love to collaborate on USB classes or USB Device/Host implementations be it baremetal or on some OS (Windows/Linux).
If you are willing to contribute-
- Find the suitable contribution
- Fork the project.
- Clone.
- Create a branch.
- Make your additions/changes.
- Commit & push your changes.
- Create a pull request.
This project uses USB descriptors as samples to depict functioning. If you are planning to re-use the same descriptors, please change the Vendor & Product IDs. We are not responsible for any legal actions in case of any misuse. The project's main aim is learning and contributing freely & legally to USB firmware/software development.