Skip to content

Control plane agent for Nucleo boards - #2400

Open
lzrd wants to merge 1 commit into
masterfrom
nucleo-cpa
Open

Control plane agent for Nucleo boards#2400
lzrd wants to merge 1 commit into
masterfrom
nucleo-cpa

Conversation

@lzrd

@lzrd lzrd commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Improve Nucleo support for Hubris and hardware testing

The Nucleo board is a useful off-the-shelf board for prototyping and for
testing "pure Hubris" code paths. Configuring the control plane agent
into the image makes the board more useful.

The Nucleo board can also be a convenient platform for developing I2C
device drivers.

While there is enforcement in xtask to ensure that the vlan feature is
enabled for production boards, the feature results in compilation errors
if those guards are commented out and the vlan feature is removed from
the app.toml. That is fixed so that the Nucleo boards can opt out of
the vlan feature.

All of the changes in the machine code output are explained by line
number changes (ringbuf, etc.), the caboose GITC value, a different
Hubris ImageId, and one layout change due to a line number constant value
being a different size: in control_plane_agent in handle_mgs_request
a cmp.w r0, #728 became move r1,#729; cmp r0, r1

While people have prototyped a Nucleo + NXP LPC55S69 xPresso board to
simulate SP + RoT, there is no intention to officially support that
configuration.

Configuration changes to Nucleo boards:

  • add control_plane_agent (CPA)
  • add "Caboose" for Hubris image identification
  • omitting VLAN tags on Nucleo boards
  • update_server to manage firmware updates
  • sprot is assigned the appropriate pins for connection to a non-existent RoT

control_plane_agent references i2c_driver unconditionally via
task_slot!(I2C, i2c_driver), so add it to CPA's task-slots in
app-h743.toml (app-h753.toml already had it).

The Nucleo board is a useful off-the-shelf board for prototyping and for
testing "pure Hubris" code paths. Configuring the control plane agent
into the image makes the board more useful.

The Nucleo board can also be a convenient platform for developing I2C
device drivers.

While there is enforcement in xtask to ensure that the vlan feature is
enabled for production boards, the feature results in compilation errors
if those guards are commented out and the vlan feature is removed from
the `app.toml`. That is fixed so that the Nucleo boards can opt out of
the vlan feature.

All of the changes in the machine code output are explained by line
number changes (ringbuf, etc.), the caboose `GITC` value, a different
Hubris ImageId, and one layout change due to a line number constant value
being a different size: in `control_plane_agent` in `handle_mgs_request`
a `cmp.w r0, #728` became `move r1,#729; cmp r0, r1`

While people have prototyped a Nucleo + NXP LPC55S69 xPresso board to
simulate SP + RoT, there is no intention to officially support that
configuration.

Configuration changes to Nucleo boards:
  - add `control_plane_agent` (CPA)
  - add "Caboose" for Hubris image identification
  - omitting VLAN tags on Nucleo boards
  - `update_server` to manage firmware updates
  - `sprot` is assigned the appropriate pins for connection to a non-existent RoT

`control_plane_agent` references `i2c_driver` unconditionally via
`task_slot!(I2C, i2c_driver)`, so add it to CPA's task-slots in
`app-h743.toml` (`app-h753.toml` already had it).
@lzrd
lzrd marked this pull request as ready for review September 4, 2026 20:13
@lzrd
lzrd requested a review from hawkw September 4, 2026 20:15
@lzrd lzrd changed the title Support Hardware CI testing on Nucleo boards Control plane agent for Nucleo boards Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant