wolfSSL is pleased to announce wolfBoot support for the NXP QorIQ T2080, a quad-core Power Architecture e6500 processor used in aerospace, defense, and industrial control. wolfBoot is a compact, portable secure bootloader that replaces U-Boot with cryptographic firmware verification and optional Post-Quantum Cryptography (PQC) – pure PQC or hybrid classical/PQC. It compiles to under 32 KB of NOR flash, has zero dynamic memory allocation, and is written in portable C99. wolfBoot is available with a DO-178C DAL-A certification package for airborne software and a FIPS 140-3 validated cryptographic module via wolfCrypt. Its portability across ARM Cortex-A/M/R, RISC-V, x86, MIPS, and PPC e6500 lets teams standardize on a single boot-security solution across an entire product family.
wolfBoot Features
- Authenticated boot – ECC-384/SHA-384 (default), RSA-2048/4096, ED25519/448
- Post-Quantum Cryptography – ML-DSA (CRYSTALS-Dilithium), LMS/XMSS (hash-based, stateful)
- Hybrid PQC/classical – dual-signature (ECC-384 + ML-DSA-65), both must verify
- A/B partition update – fail-safe rollback if new image fails verification
- Compact footprint – under 32 KB flash, zero heap allocation
- Portable – single HAL layer; 50+ targets across 6 architectures
- DO-178C DAL-A certification package available
- FIPS 140-3 validated cryptographic module (wolfCrypt) available
- Multi-core support – primary core verifies image; secondary cores spin on table
Supported Board Platforms
This port supports three T2080-based boards using a single wolfBoot binary. Board selection is one compile-time define (BOARD_NAII_68PPC2 or BOARD_CW_VPX3152).
- NXP T2080 RDB – NXP reference design board, 66.66 MHz oscillator, DDR3L SODIMM (default)
- NAII 68PPC2 – North Atlantic Industries SBC, 100 MHz oscillator, 8 GB DDR3, dual S29GL01GS NOR (16-bit bus, 1 GB total)
- Curtiss-Wright VPX3-152 – 3U VPX module, 66.667 MHz oscillator, DDR3L
Boot Architecture
The T2080 boots from NOR flash at 0xE8000000 (Reset Configuration Word). The boot core starts at 0xEFFFFFFC with a single 4 KB MMU page. wolfBoot’s boot_ppc_start.S initializes hardware before DDR is available:
- Cold-boot stack – CPC SRAM is unreliable at cold power-on; wolfBoot uses L1 locked D-cache (dcbz + dcbtls at 0xF8E00000) as a 16 KB stack until DDR init completes
- RAMFUNCTION – all NOR flash erase/write routines are copied to DDR at startup; the IFC enters command mode bank-wide during writes so XIP is not possible
- TLB/XIP – flash TLB uses MAS2_W|MAS2_G (Write-Through + Guarded) during XIP; switches to MAS2_I|MAS2_G during flash erase/program via TLB9
- e6500 64-bit GPR hazard – lis sign-extends in 64-bit mode; all address loads use the LOAD_ADDR32 macro (li + oris + ori) to avoid corruption for addresses >= 0x80000000
- Multi-core – secondary cores skip L2 flash invalidate (done by core 0) and configure only L1 stash IDs before spinning
NOR Flash Memory Map
NOR region: 0xE8000000 – 0xEFFFFFFF (128 MB)
| Description | File | Flash Address |
|---|---|---|
| Reset Configuration Word (RCW) | Reset Configuration Word (RCW) 68PPC2_RCW_v0p7.bin |
0xE8000000 |
| Frame Manager Microcode | fsl_fman_ucode_t2080_r1.0.bin | 0xE8020000 |
| Update Partition | image_v2_signed.bin | 0xEFDE0000 |
| Swap Sector | – | 0xEFDD0000 |
| Boot Partition | image_v1_signed.bin | 0xEFEE0000 |
| wolfBoot | wolfboot.bin | 0xEFF40000 |
| Boot Entry Point | – | 0xEFFFFFFC |
Cryptographic Configuration
The default configuration uses ECC-384 + SHA-384 for firmware signing, providing 192-bit security against classical attacks. Set in .config:
SIGN=ECC384 HASH=SHA384 IMAGE_HEADER_SIZE=512
PQC options (add to .config):
- Pure PQC: SIGN=ML_DSA (CRYSTALS-Dilithium) or SIGN=LMS / SIGN=XMSS
- Hybrid: SIGN=ML_DSA SIGN2=ECC384 – both signatures must verify before boot
Build Instructions
- Install cross-compiler
sudo apt install gcc-powerpc-linux-gnu
Or use the NXP QorIQ Linux SDK v2.0 PPCE6500 toolchain (fsl-toolchain, installs to /opt/fsl-qoriq/2.0/).
- Configure for your board
# T2080 RDB (default) cp config/examples/nxp-t2080.config .config # NAII 68PPC2 - uncomment in .config: CFLAGS_EXTRA+=-DBOARD_NAII_68PPC2 # Curtiss-Wright VPX3-152 - uncomment in .config: CFLAGS_EXTRA+=-DBOARD_CW_VPX3152
- Build
make distclean make keytools make
Build outputs: wolfboot.bin, wolfboot.elf, test-app/image_v1_signed.bin, factory.bin
- Sign an application image
./tools/keytools/sign --ecc384 --sha384 app.bin wolfboot_signing_private_key.der 1
The version number (1) is embedded in the image header. wolfBoot boots the partition with the highest valid version.
Flashing
Option 1 – Lauterbach TRACE32 (recommended)
Lauterbach TRACE32 CMM scripts for flashing and debugging the T2080 are available in the wolfBoot repository. Use t2080_flash.cmm to program wolfBoot and application images, and t2080_debug.cmm to attach the debugger and load symbols.
https://github.com/wolfSSL/wolfBoot/blob/master/tools/scripts/nxp_t2080/t2080_flash.cmm
https://github.com/wolfSSL/wolfBoot/blob/master/tools/scripts/nxp_t2080/t2080_debug.cmm
Option 2 – CodeWarrior TAP
- Open Flash Programmer (Commander View – Miscellaneous)
- Connection: CodeWarrior TAP Connection
- Flash config: T2080QDS_NOR_FLASH.xml
- Check “Unprotect flash memory before erase”
Option 3 – U-Boot (if present)
tftp 1000000 wolfboot.bin protect off eff40000 +C0000 erase eff40000 +C0000 cp.b 1000000 eff40000 C0000 protect on eff40000 +C0000 cmp.b 1000000 eff40000 C0000
Boot Verification
UART0 output (115200 baud, 8N1) with DEBUG_UART=1:
wolfBoot Init IFC CSPR0: 0x141 (WP set) Ramcode: copied 5584 bytes to DDR, TLB9 remapped CPC: Released SRAM, full 2MB L3 CPC cache enabled MP: Starting cores (boot page 0x7FFFF000, spin table 0x7FFFE100) Checking integrity...done Verifying signature...done Firmware Valid Booting at 0x19000
If verification fails, wolfBoot attempts the Update partition (A/B fallback). If both partitions fail, the system halts – no untrusted code executes.
Getting Started
The T2080 port is available on GitHub: https://github.com/wolfSSL/wolfBoot/pull/680 (branch nxp_t2080_refresh). wolfSSL provides commercial support, source licensing, DO-178C DAL-A, and FIPS 140-3 packages. Contact us for evaluation licenses and support options.
If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.
Download wolfSSL Now

