All Case Studies

BSP & Yocto Optimization

Engineering Approach

Boot Time Architecture on Yocto Devices

U-Boot Falcon Mode · LZ4 · SquashFS · NXP i.MX8M Plus

NXP i.MX8M Plus · Yocto Scarthgap 5.0 · Qt/QML HMI

Falcon ModeBootloader
LZ4Kernel compression
SquashFSRootfs
musl + BusyBoxUser space
PlatformNXP i.MX8M Plus · Cortex-A53
Problem classUnacceptable boot delay in a stock distribution image
InterventionU-Boot Falcon Mode + LZ4 kernel + SquashFS rootfs + musl/BusyBox
Result1.8 seconds from power-on to a ready Qt interface

01Problem

Problem: Where Boot Time Is Spent

On an industrial device, an image produced by a stock Yocto distribution brings the operator interface up only seconds after power-on. In the field the device is power-cycled several times a day, and on every start the operator waits. Boot time is not a comfort metric but time-to-operational-readiness, which makes it an architectural decision.

  • 01The full U-Boot flow burned seconds on environment loading, peripheral probing, and an unnecessary bootdelay
  • 02Decompressing a zlib-compressed kernel image alone takes a significant share of the critical path
  • 03ext4 rootfs journal recovery and mount time were the unpredictable component of startup
  • 04A full glibc-based userspace inflated init time with unnecessary service startups
  • 05Boot time was not measured systematically, nobody knew which stage consumed what

02System Context

ProcessorNXP i.MX8M Plus, 4× Cortex-A53 + Cortex-M7
DistributionYocto Project Scarthgap 5.0 (custom BSP layer)
BootloaderU-Boot (before: full flow · after: Falcon Mode/SPL)
InterfaceQt/QML operator HMI
StorageeMMC
MeasurementPower-on to UI-ready GPIO signal; per-stage boot graph
Test conditionConsecutive cold boots · median and worst-case reported

03Root Cause Analysis

  1. 01The full U-Boot flow was unnecessary after SPL: environment loading, USB/network probing, and bootdelay consumed seconds on the critical path
  2. 02The kernel image was zlib-compressed, decompression on Cortex-A53 was ~8× slower than LZ4
  3. 03The rootfs was ext4: journal recovery, fsck risk, and mount cost made startup both slow and unpredictable
  4. 04Userspace was built with glibc + full coreutils, binary size and dynamic linking cost delayed init
  5. 05A significant share of boot-time services was not required for the operator UI, and parallel startup was not configured

04What We Changed

01

U-Boot Falcon Mode: SPL configured to load the kernel directly, removing full U-Boot from the critical path

Bootloader stage dropped from seconds to milliseconds

02

Kernel compression switched from zlib to LZ4

Kernel decompression time on the critical path drops measurably

03

rootfs migrated from ext4 to read-only SquashFS + tmpfs overlay

Mount time became constant, journal recovery disappeared; filesystem corruption risk reduced

04

Userspace rebuilt with musl libc + BusyBox

The binary footprint shrinks, load and dynamic linking cost drops

05

Boot services trimmed; non-UI-critical services deferred until after the interface is up

Qt HMI ready for the operator 1.8 seconds after power-on

05Benchmark Results

06Why It Mattered

Boot time is not a comfort metric; it is time-to-operational-readiness. A short boot makes the device feel effectively 'instant-on' across power interruptions and shift cycles.

  • 01The ~18-second blind wait the operator experienced on every start was eliminated
  • 02The read-only SquashFS rootfs structurally reduced filesystem corruption risk under sudden power loss in the field
  • 03The smaller image reduced OTA update time and bandwidth cost
  • 04The boot-graph measurement setup was made permanent, future regressions are caught in the build pipeline

To evaluate your BSP & Yocto Optimization needs on your own platform, schedule an embedded architecture audit or scope your platform class with the system requirements calculator.

Methodology Note

  • Boot time was measured end-to-end from power-on to the Qt interface's 'ready' GPIO signal, based on an external signal, not software logs
  • Bootloader/kernel/init timestamps were extracted with a boot graph for per-stage analysis
  • Measurements were repeated across consecutive cold boots; median and worst-case reported together
  • Comparisons used identical hardware with image configuration as the only variable
  • Project details remain confidential under NDA, client identity is anonymized

Is your device's boot time slowing down field operations?

Free technical assessment, let's review the latency and determinism challenges in your system together.

This page describes a method, not a measurement report. Spikedge publishes only measurements taken on its own bench whose setup can be published; when a publishable measurement for this topic exists, it will be added here.