Skip to content

Slice firmware platform: bread-slice-core and the firmware spec #4

Open

Description

@CameronBrooks11

DCMT and RLHT share board code by copying it, so every fix to the e-stop, watchdog, status LED or boot path has landed as a pair of PRs. This campaign:

  1. defines the shared behaviour in the BREADS standard;
  2. puts one implementation of it in bread-slice-core;
  3. moves both Slices onto it, with each move proven by host tests.

Decision and rationale: #2.

1. Standard (feastorg/bread-infra)

  • spec/firmware-layering.md: the layers (Slice firmware, core, contracts, CRUMBS, device libraries, standard), what may depend on what, the admission test for core, and how code moves into it.
  • spec/slice/firmware.md: status LED states, e-stop sampling and boot behaviour, the watchdog latch, and serial console rules. Open points to settle in that PR:
    • e-stop polarity: the standard says an open chain means stop, while the firmware asserts on LOW with a pull-up;
    • whether faults get their own LED colour;
    • which outputs need defined levels from reset.

2. Library (new repo feastorg/bread-slice-core)

3. Migration (one PR per Slice, each passing that Slice's host tests unchanged)

In both migrations test_status_led changed to read the core's LED frame in place of the FastLED stub; the other tests kept their checks. Neither migration has run on a board yet.

Related, tracked elsewhere

Done when

Activity

  1. CameronBrooks11 commented on Oct 21, 2026

    @CameronBrooks11
    MemberAuthor

    One more requirement for the core's boot-wait module. Both Slices stamp the watchdog's last-receive time in setupSlice(), then spend 1000 ms in the e-stop boot wait (DCMT main.cpp:367-368 and :233-235; RLHT :395-396 and :229-231). A firmware built with *_WATCHDOG_BOOT_MS below about 1000, and with no bus traffic during boot, trips on its first loop pass, and the trip latches until cleared. The opt-in example uses 5000, so default builds are unaffected. The core should restamp the watchdog when the boot wait ends.

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

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions