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, andmicro/piowork 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:
rp2040withboard/picorp2350withboard/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.