feat(hw): recovery dispatch workflow + zc706 wiring - #750
Open
tfcollins wants to merge 2 commits into
Open
Conversation
Adds a manual `Hardware Recovery (GHA)` workflow keyed on a labgrid
place name. The dispatcher looks up the place's `daughter-board` tag on
the coordinator and routes to the appropriate per-board recovery.
Today's coverage:
- adrv9371 (zc706 carrier, e.g. bq):
adi_lg_plugins.strategies.BootZynq7000JTAGRecovery
- everything else:
prints "no recovery defined" and exits 0
The handler table in `.github/scripts/recover-place.py` is the only
place to add new board → strategy mappings. New strategies plug in by
appending to HANDLERS — boards without recovery stay as silent no-ops.
The zc706 path needs operator-staged artifacts on the recovery runner
(Vivado/xsdb, Digilent JTAG drivers/udev, ps7_init.tcl, u-boot.elf,
bitstream, TFTP-served recovery image, SD-card image). Those go in
`.github/recovery-config.yml`'s per-place env_yaml block; the file
ships empty and the dispatcher skips with a clear "stage artifacts"
message until an operator populates it.
Reference template:
labgrid-plugins/examples/zynq7000_recovery/lg_zc706_recovery.yaml
Lands on main first so `workflow_dispatch` becomes invokable; the
larger `feature/gha-hw-workflow` PR pulls it in transitively.
CI lint job ran black via pre-commit and reformatted long lines that hadn't been wrapped. Apply the same reformat locally so the PR's Lint (3.10/3.11/3.12) checks turn green.
|
Generated documentation for this PR is available at Link |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a manual
Hardware Recovery (GHA)workflow keyed on a labgrid place name. The dispatcher looks up the place'sdaughter-boardtag on the coordinator and routes to a per-board recovery handler.Why a separate small PR
GitHub Actions only honors
workflow_dispatchwhen the workflow file exists on the default branch. Cherry-picking just the recovery scaffold (3 files, 331 lines) onto main first makes the trigger invokable; the largerfeature/gha-hw-workflowrollout will pick it up transitively.Today's coverage
adrv9371(zc706 carrier) →adi_lg_plugins.strategies.BootZynq7000JTAGRecoveryno recovery definedand exits 0New boards plug in by adding an entry to
HANDLERSin.github/scripts/recover-place.py— no workflow changes needed.Verified
yaml.safe_loadparses both the workflow andrecovery-config.ymlast.parseclean on the dispatcherrecover-place.py nuc→no recovery strategy defined for place='nuc' board='daq3'(exit 0)recover-place.py bq→'bq': zc706 recovery requires a per-place block ... Skipping until the operator stages those artifacts.(exit 0)Operator prereqs before bq recovery can run end-to-end
Documented inline in
.github/recovery-config.ymlandlabgrid-plugins/examples/zynq7000_recovery/lg_zc706_recovery.yaml:ftdi_siofrom the FT232Hps7_init.tcl/u-boot.elf/system_top.bitextracted viabootgenuImage/devicetree.dtb/uInitrd.recoveryplaces.bq.env_yamlblock populated inrecovery-config.yml(currently shipped as commented-out template)Test plan
gh workflow run hardware-recover.yml -f place=bqreaches the dispatcherBootZynq7000JTAGRecoverytosd_boot_verified