System Architecture

FirmwareCI uses a distributed architecture consisting of three main components: the FirmwareCI Server, Devices-under-Test (DUTs), and Clients.

FirmwareCI Server

The FirmwareCI Server acts as the central coordinator of the testing process. It manages connected DUTs, handles test requirements, and processes hardware configurations defined in projects. The server efficiently manages the entire workflow from DUT reservation to test execution, and generates detailed test reports.

DUTs

Devices-Under-Test (DUTs) are connected to the system through appropriate interfaces, typically single-board computers. These interfaces enable essential functions such as:

  • Power cycling
  • Serial access
  • Flash chip read/write operations
  • Binary execution

While interface design is flexible, FirmwareCI is designed to work seamlessly with DUT-Control, an upcoming open-source tool for remote hardware interaction.

Clients

Clients deliver compiled firmware binaries to the system for testing, following FirmwareCI’s black-box testing approach. They receive test reports and manage test projects stored on the FirmwareCI Server.

FirmwareCI offers three ways to interact with the system:

  1. CI system integrations (e.g., GitHub Actions) for seamless workflow integration
  2. Web interface for intuitive control and monitoring
  3. Terminal program for command-line control and advanced functionality