Skip to content
This repository was archived by the owner on Jul 1, 2025. It is now read-only.

Commit be6b454

Browse files
authored
Update README.md to add USB Host/Device
1 parent a07ef96 commit be6b454

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ And don't forget to check our [Awesome Embedded Rust][aer] list! The thing you a
3030
* Not Yet Awesome List
3131
* [Sharing Data With Interrupts](#sharing-data-with-interrupts)
3232
* [Serialization/Deserialization in `no_std`](#serializationdeserialization-in-no_std)
33+
* [Support crates for USB Host and USB Device Support](#support-crates-for-usb-host-and-usb-device-support)
3334

3435
# The List
3536

@@ -117,6 +118,21 @@ We should also have support for different ways of serializing data, primarily:
117118
* [`bincode-no-std`]
118119
* [`cbor-no-std`]
119120

121+
## Support crates for USB Host and USB Device Support
122+
123+
### Background
124+
125+
The USB standard has a fair bit of commonality between USB Devices (like Mice, Printers, and Webcams) and USB Hosts (like Laptops and Raspberry Pis), but each specific microcontroller has a slightly different implementation of the USB Controller at the bottom of the stack. It would make bringing up a USB stack on a new chip much easier if there was a `#[no_std]` crate which defined some common traits, enumerations and structures at the bottom, and then provided support for various device classes above that.
126+
127+
### Success Criteria
128+
129+
I'd like to be able to implement USB Host and USB Device support on the Texas Instruments Tiva-C line and the STM32F4 line by only implementing a thin shim around each device's USB OTG Controller registers. The USB Host should be able to handle a USB Keyboard and the USB Device should enumerate as a Communications Class Device (two of the most common use-cases).
130+
131+
### Work in progress
132+
133+
* The [tm4c123x-hal](https://crates.io/crates/tm4c123x-hal) crate has svd2rust definitions for the USB controller's registers.
134+
* There is a [branch](https://github.com/thejpster/tm4c-hal/tree/usb_host_support/tm4c123x-hal) looking at adding USB Host support.
135+
120136
# Not Yet Awesome Item Template
121137

122138
Here's an example for something that is not yet awesome:

0 commit comments

Comments
 (0)