Skip to content

Meta: LPC port completion — Stage 3 fbuild-side items from FastLED #2845 #456

Description

@zackees

Carved out from the closing of FastLED meta #2845 (Stage 3 fbuild-side items).

Background

The Stage 4 work on the FastLED side (LPC11Uxx clockless, LPC15xx clockless, APA102 SPI) shipped via FastLED #2872 + #2876. What remains on Stage 3 is split between hardware bring-up (covered at FastLED #2880) and fbuild software work, which lives here.

Items

3.1 — Real SystemInit for LPC845

FRO 30 MHz + PLL + flash wait states per NXP UM11029 §4. Currently a no-op stub in crates/fbuild-build/src/nxplpc/assets/startup_lpc845.S. The bit-bang cycle counts in FastLED clockless_arm_lpc.h derive from F_CPU = 30_000_000UL; without a real PLL config the LPC845 boots at 12 MHz IRC and timing is off by 2.5x. Hardware verification required.

3.2 — Real SystemInit for LPC804

UM11065 §4. Leave at 15 MHz default unless PLU clocking (FastLED #2848) requires a PLL boost. Document the choice in startup asm comments. Hardware verification required.

3.3 — Vector table expansion

Currently ships the ARMv6-M 16-entry system minimum. Add peripheral IRQs as drivers reach a state where they need them:

  • DMA-end IRQ for the SCT + DMA-to-GPIO clockless driver (FastLED #2842 / #2850).
  • SCT match IRQ for the SCT driver.
  • USART RX for the AutoResearch UART hook (FastLED #2880, Stage 3.6).

3.4 — Per-chip mcu_config split in get_nxplpc_config

get_nxplpc_config currently ignores the mcu arg and returns shared config. Split when Stage 2b/2c flag divergence requires it: PLU defines for LPC804 (FastLED #2841 / #2848), FASTLED_LPC_PWM_DMA for LPC845 (FastLED #2842 / #2850).

3.7 — fbuild CI continue-on-error: true flip

Workflows at .github/workflows/build-lpc804.yml + build-lpc845.yml. Drop continue-on-error: true once 3.1 + 3.5 land and bash compile lpc845 --examples Blink is green end-to-end on real silicon.

3.8 — validate_boards.py reconciliation

Already partially filed at #421/#422 — that's the "boards in the fbuild-native registry not in the PIO source" case. Confirm the LPC845/LPC804 entries are reconciled as part of closing this meta.

Ownership

  • 3.1, 3.2, 3.3, 3.4, 3.7, 3.8 — fbuild, all in crates/fbuild-build/src/nxplpc/ and crates/fbuild-config/assets/boards/json/.
  • 3.5 (linker verification on hardware) — FastLED #2880.
  • 3.6 (AutoResearch UART) — FastLED #2880.

Why a meta on the fbuild side

These six items have substantial cross-dependencies (3.3 depends on which drivers ship; 3.4 on which features they activate; 3.7 on 3.1 + hardware). Tracking them in a single fbuild meta is cleaner than scattered single-item issues against a partly-complete LPC port.

References

  • FastLED meta #2845 — original cross-repo roadmap (closing as superseded)
  • FastLED #2880 — hardware bring-up companion
  • NXP UM11029, UM11065 — LPC8xx user manuals

🤖 Filed via Claude Code on behalf of the FastLED meta-#2845 close-out.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions