HeapCrash / Design rounds / Linux driver for an FPGA data-acquisition block

Linux driver for an FPGA data-acquisition block

An Embedded Linux board (Cortex-A53, Yocto) has an FPGA that samples 8 channels at 1 MS/s each, 16-bit, and writes into DDR via its own DMA engine. A userspace application processes the stream in real time and stores events. Design the kernel/userspace split.

What the interviewer wants

Constraints

If you ask the interviewer

How it's graded

The rubric a senior interviewer would use. Each item is scored 0 to 3 and weighted.

Buffer design and sizingweight 3
Zero-copy path to userspaceweight 3
Cache coherency and DMA APIweight 2
Interrupt and wake-up pathweight 2
Overflow detection and timestampsweight 2
Validationweight 1

How to structure your answer

  1. Requirements and assumptions: the numbers that drive the design.
  2. Architecture: blocks, tasks, data flow, memory.
  3. Key decisions and trade-offs, with the alternatives you rejected.
  4. Failure modes and recovery.
  5. Testing and validation.

More design rounds

Write your design in five sections and get it graded against this rubric, with a follow-up question from the AI interviewer.

Answer this round