Generic USB interface device for driver development and hardware testing.
This consists of a hardware device with a number of common embedded interfaces exposed (see status section for more details) paired with a LibUSB based driver library that provides a set of fairly standard set of functions to interface with embedded peripherals.
Very early alpha. Firmware working, library has restricted functionality.
Module | Status |
---|---|
GPIO | Working - no interrupts |
ADC | Working - single sample |
SPI | Working |
DAC | In Progress |
I2C | In Progress |
UART | Unimplemented |
- Generic device to allow control and interaction with embedded hardware allowing native driver development and hardware unit testing
- LibUSB based support for I2C, SPI, GPIO (with interrupts), ADC and PWM
- Immediately usable, information printed on device so there is no need to consult the manual
Board schematics are available here and will be updated as new hardware is released.
- arm-none-eabi-gcc (from launchpad or use
source armenv.sh
for a local instance) - cmake
- make
- clang (or gcc)
First, initialize the project with the following:
- Checkout this repository
- Initialize submodules with
git submodule update --init --recursive
- Build all components with
make all
- Switch to the
firmware/library
directory - Install with
make install
- Switch to the
firmware/build
directory - Build the firmware with
make
- Flash the firmware to the device with
make flash
- Switch to the
software/build
directory - Build the software with
make
- Run with
./usb-thing
- firmware - device firmware sources and build tools
- library - usbthing shared library, this includes all libusb calls
- software - usbthing utility, provides common (simple) interface methods
- common - common protocol definitions shared between the firmware and library modules
TODO
If you have any questions, comments, or suggestions, feel free to open an issue or a pull request.