Generic USB interface device for driver development and hardware testing
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
- 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
- common - common protocol definitions shared between the firmware and library modules