Skip to content

[META] LPC8xx end-to-end support: orchestrator + Arduino framework + real FastLED sketches #487

Closed

Description

@zackees

Goal

Drive the NXP LPC8xx family (initial targets: LPC845, LPC804) from "the CI workflow is stubbed to pass" to "FastLED sketches build, link, flash, and blink." This is the umbrella tracking the multi-stage work; individual stages have their own issues + PRs.

Why a META

Three pieces are required and they're independently sized (one is in this repo, one is in a separate repo, one is a board-bring-up matrix). Filing as a meta so the work doesn't drift between issues, and so anyone looking at the LPC8xx status can see the whole staircase at once.

Current state (as of filing)

  • Stage 0 — scaffolding: ✅ DONE

    • Platform::NxpLpc enum + string parsing (fbuild-core)
    • Board JSON: lpc845.json, lpc804.json (fbuild-config)
    • Linker scripts + startup .S for both MCUs (fbuild-build/src/nxplpc/assets/)
    • Shared MCU config (nxplpc.json)
    • ARM toolchain pre-install hook
    • Dispatch wiring: NxpLpcPlatformSupport → NxpLpcStubOrchestrator
    • CI workflows stubbed to pass (PR ci(lpc8xx): stub Build LPC804 / LPC845 workflows so they pass #476)
  • Stage 1 — Arduino framework repo: ✅ DONE (skeleton)

    • zackees/ArduinoCore-LPC8xx created, BSD-3-Clause
    • Directory layout: cores/lpc8xx/ (Arduino.h, wiring_*, HardwareSerial, SPI, main.cpp) + variants/{lpc845,lpc804}/ + examples/Blink/
    • All bodies are TODO no-op stubs; substrate = NXP MCUXpresso SDK

Open sub-issues

Ordering

Stages 2 and 3 can land in parallel — #477 produces an ELF using the hand-rolled main.cpp; #479 produces a framework that, once done, replaces that shim. Stage 4 is the integration point; Stages 5–8 follow.

Related

Activity

  1. zackees commented on Jun 7, 2026

    @zackees
    MemberAuthor

    Status check-in:

    Once #488 merges:

  2. added a commit that references this issue on Jun 7, 2026
  3. zackees commented on Jun 13, 2026

    @zackees
    MemberAuthor

    Status check-in — 2026-06-13

    Big movement since the last update (2026-06-07). The orchestrator and the Arduino framework both landed, a dedicated PlatformIO platform repo was spun up, and fbuild build is green across all five variants in upstream CI. Stage-by-stage:

    ✅ Stage 2 — build orchestrator — DONE (closed #477)

    ✅ Stage 3 — Arduino framework implementation — substantially DONE (still tracked open as #479)

    The zackees/ArduinoCore-LPC8xx repo is no longer a stub skeleton — it has a real core now:

    🔄 Stage 4 — framework integration — approach changed: external platform, not in-tree vendoring

    The original plan was to vendor the core into crates/fbuild-packages/src/library/lpc8xx_core.rs and flip the board JSONs to frameworks: ["arduino"]. That changed:

    🔄 Stage 5 — real test fixtures — partial

    • In-tree fixtures now exist for tests/platform/{lpc804, lpc845, lpcxpresso845max}/.
    • Missing fixtures: tests/platform/{lpc845brk, lpcxpresso804}/ (their board JSONs exist; only the fixtures are absent — this is the gap blocking their CI un-stub).

    🔄 Stage 6 — FastLED canary — driver side landed; smoke examples gated

    On the FastLED/FastLED side (driver work under meta #2845, now closed via #2881):

    • #2848 LPC804 PLU clockless driver, #2850 LPC845 PWM+DMA-to-GPIO clockless driver, #2872 APA102 SPI on LPC8xx, #2989 moved bare-metal support into platform code, #2995 lint compliance.
    • FastLED smoke examples (FastLEDClocklessSmoke, FastLEDSpiSmoke) exist gated behind LPC8XX_ENABLE_FASTLED_EXAMPLE.
    • Still open upstream: feat(lpc): LPC845 Arduino serial I/O + pin dispatch (supersedes #2996) FastLED#2997 (LPC845 Arduino serial I/O + pin dispatch).

    ⏳ Stage 7 — deploy support — not started

    Upload path is CMSIS-DAP via OpenOCD (manual ISP fallback); vector-checksum tool lives in the platform repo's tools/. No hardware-verified deploy yet.

    🔄 Stage 8 — unstub CI workflows — tracked in #528, partly done

    • lpcxpresso845max is already real (template_build.yml caller + fixture + board JSON, green on main for 10+ runs via [codex] add ArduinoCore LPC8xx board metadata #514) — do not re-stub it.
    • ci(boards): add LPC845-BRK + LPCXpresso804 stub workflows and README badges #536 (2026-06-12) added named stub slots for lpc845brk + lpcxpresso804 (plus README badges). They stay stubs only because their in-tree fixtures don't exist yet (see Stage 5 gap).
    • Proof the orchestrator builds them for real: fbuild build . -e <variant> is green for all five variants in ArduinoCore-LPC8xx upstream CI. The two remaining stubs convert to real callers as soon as the Stage-5 fixtures land.

    Net staircase

    Stage 0 ✅ · 1 ✅ · 2 ✅ · 3 ✅(alpha) · 4 🔄(re-scoped to external platform) · 5 🔄 · 6 🔄 · 7 ⏳ · 8 🔄

    The critical-path remaining item for "FastLED sketches build, link, flash, and blink" is now hardware verification (Stages 3-tail + 7), not build plumbing — the build path works end-to-end in CI today.

  4. zackees commented on Jun 13, 2026

    @zackees
    MemberAuthor

    Closing the META — build + framework + CI staircase is complete

    All numbered sub-issues are merged & closed and the orchestrator → framework → CI path now produces real firmware for the LPC8xx family. Stage-by-stage:

    Moved to their own tracking issues

    The two remaining stages require the external core's real register-level GPIO/SPI plus physical boards, so they can't be completed or verified locally and shouldn't block this umbrella:

    Closing this META: the in-repo build/framework/CI staircase is fully landed. Hardware-dependent bring-up continues in #550 and #551.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    trackingUmbrella or tracking issue

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions