Platform Porting
Port OpenBMC to your custom hardware platform.
What You’ll Learn
- Create a machine-specific layer
- Configure device tree for your BMC SoC
- Set up U-Boot for your platform
- Enable and configure OpenBMC services
- Verify and validate your port
- Port to ARM-based server platforms (NVIDIA, Ampere)
Porting Overview
┌─────────────────────────────────────────────────────────────┐
│ Your Machine Layer │
│ meta-<your-company> │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Machine Config │ │ Device Tree │ │ Recipes │ │
│ │ <machine>.conf│ │ <soc>.dts │ │ *.bb │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Phosphor Layer │
│ meta-phosphor │
├─────────────────────────────────────────────────────────────┤
│ OpenBMC Distro │
│ meta-openbmc │
├─────────────────────────────────────────────────────────────┤
│ Yocto/Poky │
│ meta-poky, meta-oe, meta-networking │
└─────────────────────────────────────────────────────────────┘
Porting Workflow
- Plan - Identify hardware, map features to OpenBMC services
- Create Layer - Set up meta-
structure - Device Tree - Configure BMC SoC peripherals
- U-Boot - Configure bootloader
- Enable Services - Configure OpenBMC features
- Test - Verify each feature works
- Iterate - Fix issues, add features
Guides in This Section
| Guide | Description | Phase |
|---|---|---|
| Porting Reference | Complete checklist | Planning |
| Machine Layer | Create your layer | Setup |
| Device Tree | BMC SoC configuration | Configuration |
| U-Boot | Bootloader setup | Configuration |
| Verification | Testing procedures | Validation |
| ARM Platform Guide | ARM server platforms | Advanced |
| Entity Manager Advanced | Dynamic hardware config | Advanced |
| Flash Layout Optimization | SPI flash partitioning, image size reduction | Advanced |
| AST2700 Enablement | ASPEED AST2700 next-gen SoC porting | Advanced |
Supported BMC SoCs
OpenBMC supports several BMC system-on-chip platforms:
| SoC | Vendor | Common Platforms |
|---|---|---|
| AST2400 | ASPEED | Legacy systems |
| AST2500 | ASPEED | Current mainstream |
| AST2600 | ASPEED | Latest generation |
| NPCM7xx | Nuvoton | Alternative platforms |
For ARM-based server platforms (NVIDIA Grace, Ampere, etc.), see the ARM Platform Guide.
Prerequisites
- Complete all previous sections
- Strong Linux kernel knowledge
- Device tree experience
- Yocto/BitBake proficiency
- Access to your target hardware
Porting requires hardware access. While some testing can be done in QEMU, final validation needs real hardware.
Getting Help
- OpenBMC Mailing List
- OpenBMC Discord
- Review existing machine layers in the OpenBMC repository