Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tier System

The tier system communicates how much confidence you should have in a given target for real projects.

Tier 1: Production Ready

A Tier 1 target means:

  • Compiler: Code generation is complete and tested for the target architecture.
  • HAL: The hal/* layer brings up the chip correctly: resets, clocks, XIP, watchdog, timers.
  • Micro packages: micro/gpio, micro/uart, micro/adc, micro/pwm, micro/i2c, micro/spi, micro/dma, and micro/pio work correctly.
  • Board packages: At least one board package is complete with named pins, default clocks, and working convenience APIs.
  • End-to-end validation: Programs have been tested on real hardware, not just in simulation.
  • Binary output: ELF, BIN, and UF2 output is tested and correct.

If you are building firmware for production or want to learn Flint, pick a Tier 1 target.

Current Tier 1 targets:

  • rp2040 with board/pico
  • rp2350 with board/pico2 (planned)

Tier 2: Usable but Incomplete

A Tier 2 target means:

  • Code generation is solid and produces correct binaries.
  • Basic HAL bring-up works.
  • Some micro/* packages may be missing or incomplete; not all peripherals are implemented.
  • Board packages may cover only basic pin maps without full convenience APIs.
  • Usable for your own projects if you are willing to work around gaps.

Tier 2 targets are on a path to Tier 1. Contributions to complete HAL and board packages are welcome.

Tier 3: Experimental

A Tier 3 target means:

  • Code generation may have known issues or gaps.
  • HAL bring-up may be partial or untested on real hardware.
  • No guarantees of correctness.
  • Use for exploration or porting work only.

Do not use Tier 3 targets for production firmware.

How Targets Move Up

A target moves from Tier 3 to Tier 2 when:

  • Code generation produces correct binaries.
  • Basic HAL bring-up works.

A target moves from Tier 2 to Tier 1 when:

  • The full micro/* surface is implemented.
  • At least one board package is complete.
  • End-to-end tests pass on real hardware.

Declaring Your Target

In flint.toml:

target = "rp2040"  # Tier 1
board = "pico"     # Tier 1

The tier is a documentation label. The compiler does not refuse to build for lower-tier targets, but it may emit warnings for known limitations.