oxidecomputer / oxidecomputer/hubris

Gimlet hot-restart always reprograms FPGA

Open
#651 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
3.6k
Forks
239
Avg merge
1d 12h
Merged PRs (30d)
23

Description

In theory, we should be able to bounce gimlet_seq without reconfiguring the FPGA (once #650 is merged)

We can test this by restarting gimlet_seq through the debugger:

humility jefe -f gimlet_seq && humility jefe -r gimlet_seq

In practice, I see that the FPGA reports an invalid Ident and Checksum:

 NDX LINE      GEN    COUNT PAYLOAD
   0  122        1        1 Ice40Rails(true, true)
   1  151        1        1 Ice40PowerGoodV1P2(true)
   2  172        1        1 Ice40PowerGoodV3P3(true)
   3  235        1        1 IdentValid(false)
   4  238        1        1 ChecksumValid(false)
   5  241        1        1 Reprogram(true)
   6  255        1        1 Programming
   7  284        1        1 Programmed
   8  287        1        1 RailsOff
   9  290        1        1 Ident(0xde01)
  10  296        1        1 A1Status(0x0)
  11  319        1      446 ClockConfigWrite
  12  327        1        1 ClockConfigSuccess
  13  328        1        1 A2
  14  437        1        7 GetState

This is probably related to the comment

TODO: this may cause trouble with hot restarts, test.

(source)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with drv/gimlet-seq-server/src/main.rs around the TODO at lines 122-125, then reproduce the hot restart using the two humility jefe commands in the issue. Trace why the FPGA reports invalid Ident and Checksum values; done means restarting gimlet_seq no longer reprograms an already configured FPGA.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.