Skip to content

Upgrade to fprime v4.4.0 - #29

Open
nathancheek wants to merge 5 commits into
fprime-community:mainfrom
nathancheek:upgrade-fprime-v4.4.0
Open

nathancheek wants to merge 5 commits into
fprime-community:mainfrom
nathancheek:upgrade-fprime-v4.4.0

Conversation

@nathancheek

@nathancheek nathancheek commented Oct 3, 2026 •

Copy link
Copy Markdown

This PR brings the LedBlinker deployment back into sync with the Arduino deployment cookiecutter. It then upgrades to fprime 4.1.1, moves to the fprime v4 project layout, and upgrades to 4.4.0, switching to CCSDS framing. The final commit syncs the project files with what fprime-bootstrap generates, to better match what tutorial followers get. Each commit builds and runs on its own, so I request that they don't get squash-merged, allowing users to choose which version of fprime v4 they wish to use.

CCSDS:

Testing:

  • Built every commit for rpipico, teensy40 and teensy41
  • Ran the 4.0.0 sync, 4.1.1 and 4.4.0 commits on a Raspberry Pi Pico and a Teensy 4.0 with GDS: 10 CMD_NO_OPs gave matching OpCodeDispatched / NoOpReceived / OpCodeCompleted counts, BLINKING_ON_OFF turns the LED blinking on and off, and telemetry updates throughout. No dropped events, asserts or freezes
  • On 4.4.0, PortCycleTimeHWM reads normal values (without the fprime-arduino RawTime fix it sticks at 4294967295)
  • Tested 4.4.0 on teensy40, teensy41, rpipico, rpipicow, rpipico2, and rpipico2w

Other repositories being updated alongside this:

The submodules currently point at commits on those forks. Once the fprime-arduino and fprime-baremetal changes are merged upstream, the pins here can be updated to the merged commits.

My motivation for this PR was to get existing boards working on fprime 4.4.0. After this, I am planning a separate PR to update atmega128 Arduino support, which has gotten very out of date (that work is in fprime-atmega128-blinker and fprime-atmega128-demo, on fprime 4.4.0 with fprime-gds support). I went all the way to 4.4.0 because the new FW_DIRECT_PORT_CALLS option saves a lot of flash (10.4KB flash / 528B RAM saved in one of my ATmega128 test deployments going from v4.0.0 to v4.4.0, a flash savings of about 18%).

Note: Claude was very useful in wrangling all these version updates, but I have reviewed all the code and manually tested the commits at each fprime upgrade on rpipico and teensy40. In addition, I have tested the 4.4.0 upgrade across teensy41, rpipicow, rpipico2, and rpipico2w hardware.

* Regenerate LedBlinker from the cookiecutter and re-add the LED changes

* Raise file and directory handle sizes to 48 for RP2040 SD card builds

* Raise QueueSizes.comQueue to 10 so events are no longer dropped

* Remove LedBlinkerPackets.xml and reference to LedBlinkerPacketsAc.hpp,
  left over from the F' v3 XML packets autocoder

* Pass --framing-selection fprime in the GDS commands, since fprime-gds
  defaults to CCSDS framing
* Update fprime-arduino, including the ArduinoRawTime fix

* Rebase config overrides onto the v4.1.1 defaults

* Add the ComCcsds aggregator constants

* Connect cmdDisp.run, which now writes the dispatcher's telemetry, to
  rate group port 3, and move the LED to port 4
@nathancheek
nathancheek force-pushed the upgrade-fprime-v4.4.0 branch 2 times, most recently from 6902e4c to 2dc27f2 Compare October 5, 2026 02:38
@nathancheek
nathancheek force-pushed the upgrade-fprime-v4.4.0 branch from 2dc27f2 to 8ad2ca4 Compare October 20, 2026 00:30
* Update fprime-arduino and fprime-baremetal

* Rebase config overrides onto the v4.4.0 defaults

* Raise command limits to support new ComQueue and rate group commands

* Raise telemetry limits to support per-port rate group cycle times

* Update the topology, Led component and tutorial for v4.4 API changes

* Include <cstring> in TopologyDefs.hpp for the subtopologies' memset

* Switch to CCSDS framing
@nathancheek
nathancheek force-pushed the upgrade-fprime-v4.4.0 branch from 8ad2ca4 to 988e969 Compare October 20, 2026 00:45

This branch has not been deployed

No deployments
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