Skip to content

Gateware v0.16.0 (KDI contract 0.5)

Choose a tag to compare

@keyvast-ci keyvast-ci released this 06 Sep 14:01
· 3 commits to main since this release

Gateware for the Keyvast acquisition instrument, implementing KDI contract 0.5.

file keyvast-v0.16.0-kdi0.5.bit
implements KDI contract 0.5 -- see the spec-v0.5.0 release
gateware_sha 7467bbf3
size 2765617 bytes
sha256 b90ddcb43d87cd7fe83ab1adc465f4b8835a070b9a29a238caabf7e75463d053

manifest.json beside this image carries the same values for a program to read.

Verify what you flashed

The firmware is already baked into the bitstream; load it over USB3. ReleaseManifest::judge
refuses an image whose bytes do not hash to the value above, and refuses a contract major this
host cannot bind to, before a byte reaches the board:

let m = kdi::ReleaseManifest::parse(&std::fs::read_to_string("manifest.json")?)?;
let dev = kdi::Device::open_usb3_from_manifest("", &std::fs::read("keyvast-v0.16.0-kdi0.5.bit")?, &m)?;
assert_eq!(format!("{:08x}", dev.gateware_sha()), "7467bbf3");

A host built against contract 0.5 will bind to this gateware; the handshake checks the
contract major itself and refuses a mismatch rather than misreading frames.