Senior Firmware Developer (Rust, 2y+)

Senior Firmware Developer (Rust, 2y+)

Job Category: Engineer
Job Type: Full Time Part Time
Job Location: Remote

Turing Machines develops ARM microservers. Each microserver is equipped with 4 compute nodes and a baseboard management controller (BMC) with Linux.

Please Note

Firmware development for the Turing Pi 2 BMC is different from development for MCU-based embedded systems. Our BMC uses a general-purpose microprocessor Allwinner T113-S3 (ARMv7-A, DDR3 128 MB, SPI NAND 128 MB), with Linux kernel version 5.4+, the ability to install a package manager and use the existing ecosystem of tools. Hence, the development can be seen as a classic Linux application design.

Where are we going?

We are looking for a software developer to design the BMC firmware, similar to the BIOS in personal computers and the Management Plane in network devices. Using a client-server approach to interact with the firmware API and CLI client. The firmware should do a simple Power On Self Test at power up, initialize the required interfaces, and provide the server API. We have an SDK with u-boot and buildroot for T113-S3.

We have a basic firmware built on C which is a starting point for building a state of the art firmware in Rust https://github.com/wenyi0421/turing-pi

Scope of the tasks

Base Image

  • U-Boot
  • Linux (with Rust userland preferred)
  • SWUpdate for Over The Air updates
  • U-Boot Recovery Mode
  • U-Boot partitioning and integration with SWUpdate
  • API server to control the cluster board via gRPC protocol (e.g. hyperium/tonic)

API Server functions (Modules/Classes)

  • Power Management
  • Serial Console
  • USB ports management
  • OTA updates
  • Image Flash functions, flash read/write functions (like $dd)
  • rpiboot (porting code to Rust) flash CM4 modules

$tpi CLI

  • API Server commands
  • Local & remote host (hosts management)
  • Discovery of Turing Pi clusters in local network (like nmap)
  • Authentication

The main goal is to have a solid architecture for all the subsystems, with the ability to modularly extend the firmware for each subsystem. Build a vertical of abstraction from low-level to high-level functions like Kubernetes provider. Start laying out the architecture at the low level.

The firmware will be open source, so the love of code notation and effective documentation for developers is empirical as well as maintaining a repository on GitHub.

Requirements

  • Software Design patterns 🧡
  • Hub and spoke API pattern
  • Rust 🧡
  • Remote OK
  • Build for ARM
  • GitHub
  • Developer documentation 🧡

Salary

$50-120K per year depending on the region

Bonuses
With further involvement, the growth of salary above the specified fork during the first year. Option after a year of work, according to the results.

This job is no longer accepting applications.