Hardware requirements and recommendations
This page is a summary of Fuchsia's current hardware requirements and
recommendations. The goal is to provide an easy to understand explanation of
RFC-0111: Initial hardware platform specifications
for hardware vendors who only need to know what hardware features
Fuchsia requires or recommends.
Required features
All required features must be supported. If a required feature is not supported,
Fuchsia will not build or run correctly.
Feature |
Area |
Details |
Examples |
Instruction set architecture (ISA)
|
Architecture
|
-
x86-64 architectures must support x86-64-v2 ISA.
-
Arm architectures must support Armv8.0-A at minimum.
|
- Intel Westmere and newer CPUs.
- AMD Bulldozer and newer CPUs.
-
Arm A35, A53, A55, A57, A65, A72, A73,
A75, A76, A77, A78, and X1.
|
QEMU support
|
Architecture
|
|
|
Little endian byte-ordering mode
|
Architecture
|
|
- All x86 CPUs.
- Arm processors support little endian.
|
LLVM toolchain support
|
Architecture
|
-
The architecture must be in the LLVM core tier.
-
Clang toolchain support must be kept up-to-date.
|
|
Tier 2 Rust language support
|
Architecture
|
|
|
Dart language support
|
Architecture
|
|
|
Go language support
|
Architecture
|
|
|
Full-featured modern memory management unit (MMU)
|
Platform
|
-
The MMU must support creating an arbitrary number of address spaces.
-
The MMU must map physical memory in reasonably sized pages to any of those spaces.
-
The MMU must enforce protection between separate address spaces through hardware
access control mechanisms.
|
- Armv8.0-A and later.
- All x86 CPUs after 2010.
|
64-bit platform
|
Platform
|
-
The platform must support 64-bit address space operating mode.
-
The early stage bootloader doesn't need to run in
64-bit mode.
|
- All x86-64 platforms.
- All Armv8-A and later processors (except A32).
|
Clocks and timers
|
System
|
- Clocks and timers must not arbitrarily change frequency.
- Clocks and timers must be at least 56-bits wide.
- Clocks and timers must have a rollover time greater than 40 years.
-
Clocks and timers must have an explicitly knowable nominal
frequency that doesn't require runtime calibration.
|
|
Bootloader openness
|
System
|
|
|
Serial console access
|
System
|
-
The system must support interrupt-driven TX and RX during development.
-
Serial console access is not required for production systems intended
for end users.
-
(Recommended) Direct memory access (DMA).
|
|
Recommended features
Recommended features are not required to build or run Fuchsia correctly but are
highly desirable because they improve Fuchsia's base functionality.
Feature |
Area |
Details |
Examples |
Virtualization support
|
Architecture |
-
Intel x86 CPUs: VMX, EPT, RDTSCP, x2APIC, VPID, unrestricted guests,
TPR virtualization, MSR bitmaps, exception bitmaps, INVPCID
(recommended), PAUSE-loop exiting (recommended).
-
Arm CPUs: Armv8.0, EL2 access, host physical timer / guest virtual
timer split, GICv2 or GICv3, GIC virtualization.
|
- Armv8-A AArch64.
- Intel VT-x.
- AMD VT.
|
Clocks and timers
|
Architecture |
-
Timers should deliver interrupts to cores when timer values exceed a given
absolute threshold.
-
Clocks and timers should be implemented as part of the architecture itself, not as a peripheral.
|
|
I/O memory management unit (IOMMU)
|
Platform |
-
The IOMMU should be able to NAK
read and write transactions initiated from
uniquely identifiable hardware units.
-
The IOMMU should do address translation for hardware DMA operations.
-
IOMMU page-fault situations should be detectable and debuggable.
|
- System Memory Management Unit (SMMU) in Arm IOMMU spec.
- Intel x86 IOMMU spec.
- Intel VT-d.
- AMD-Vi.
|
Hardware cryptographic acceleration support
|
Platform |
-
The platform should provide hardware acceleration for AES and SHA.
|
-
AES for Armv8.0-A (Cortex A34) or later: AESE, AESD, AESMC, AESIMC,
PMULL, PMULL2.
-
SHA2 for Armv8.0-A (Cortex A34) or later: SHA256H, SHA256H2, SHA256UO,
SHA256U1.
|
Hardware-assisted tracing
|
Platform |
|
- Arm CoreSight ETM.
- Intel Last Branch Records (LBR).
|
GCC toolchain support
|
System |
-
The system should be fully supported by the GCC toolchain.
|
|
Tier 1 Rust language support
|
System |
|
|
Documentation and support
|
System |
-
The system should have publicly available documentation about register maps,
theory of operation, and boot-time hardware state.
-
Board documentation can't be a fork of the documentation source code for Linux
or Android Open Source Project or any other project that has a license incompatible
with Fuchsia.
-
The system vendor must provide support channels where Fuchsia contributors can get their
questions answered.
|
|
Fastboot support
|
System |
-
The bootloader should support fastboot over non-proprietary transports. See
Required fastboot commands
for the full list of fastboot protocol commands that should be supported.
|
|
Appendix: Terminology
These terminology definitions are based on Document Definitions.
Architecture
A processor architecture like x86 or Arm.
Early stage bootloader
All stages of the bootloader before the final-stage bootloader.
Final-stage bootloader
The software component that loads Fuchsia's kernel.
The system-on-a-chip (SoC) or the combination of the CPU and
chipset.
System
A complete computer hardware system with a CPU, memory, peripherals
and so on. Also called a board.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-02-18 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-18 UTC."],[],[]]