Hardware for continuous integration testing of serial interfaces and microcontrollers. Background and more detailed discussion outlined in this blog post.
The board (KiCAD files in /hardware
) exposes control to a CI build worker to power up any of the USB-UART adaptors in either loopback mode, or connected to any one of the hardware targets for a total test matrix of 72 combinations.
Intended to run tests for hot-plug detection (by controlling the mux or USB power control), disconnection handling (by re-routing serial to the void) and to validate a wide range of microcontroller architectures and their corresponding toolchains.
Up to 8 USB ports are provided behind a USB mux from the host.
Individual power switching is available per-port, with optional routing of the USB-UART adaptor's serial lines to either loop-back, or to one of the target microcontrollers.
The following adaptors are used as test adaptors:
In the future, we hope to add Bluetooth/WiFi adaptors for wireless tests against compatible targets.
8 power-switched targets are supported with connections to hardware serial. The Adafruit Feather specification is used, as a majority of planned targets are available in Feather format.
The following boards are used as test devices:
- ATMEL 328P
- ATMEL SAMD21G
- ST STM32F405 with CubeHAL
- Nordic nRF52840
- RISC-V FE310 with Zephyr RTOS
- Ambiq Apollo3 ARM-M4F (Sparkfun Artemis)
- Espressif ESP32 with ESP-IDF
- Teensy 3.2 & Teensy-Feather adaptor with Arduino
Test hardware will be flashed with a mix of native 'bare metal' images, and at least one target will act as validation of the Arduino framework.
When populating the test Feather boards with headers, use 'stacking' headers to allow for future sensor/display additions to targets.
An additional Feather is provided to act as the supervisor. This connects to the CI server using a ethernet featherwing.
The supervisor (through I2C expanders) controls power switches to each of the serial adaptors and test devices, and has 2 IO lines to each microcontroller to allow for input/output checks.
An analog line is shared across all modules, with the intent of using the supervisor's DAC output, allowing additional tests.
Firmware is in /firmware
- I used JLPCB's 4-layer JLC7628 controlled impedance process.
- No stencil was ordered, as 2 units with low SMD part count is easy enough to paste by hand.
- All components were available from Digikey.
- Microcontroller targets were bought from Sparkfun and Adafruit (via Digikey)
- Assembled per board costs just under $100AUD.
- Loaded price (with listed microcontrollers, USB-serial adaptors, supervisor w ethernet) approx $500AUD.
See /hardware/output/arena-BOM.html
for PCB BOM.