Skip to content

Day37 - IIO FIFO Mode

Objective

  • Validate FIFO mode operation
  • Verify watermark-based interrupt behavior
  • Confirm burst read and buffered output

Lab 1 – Non-FIFO baseline

sudo insmod myadc_iio.ko
bash enable_iio_buffer.sh
bash read_iio_buffer.sh

Expected:

  • IRQ triggered per sample
  • Continuous incremental data

Lab 2 – Enable FIFO mode

sudo rmmod myadc_iio
sudo insmod myadc_iio.ko fifo_enable=1 fifo_watermark=4

Lab 3 – Enable IIO buffer

bash enable_iio_buffer.sh

Verify:

in_voltage0_en = 1
in_voltage1_en = 1
in_voltage2_en = 1
in_voltage3_en = 1
buffer_enable = 1

Lab 4 – Read buffered data

bash read_iio_buffer.sh

Expected:

  • Continuous data stream
  • Multiple samples per IRQ

Lab 5 – Compare IRQ frequency

watch -n 0.5 cat /proc/interrupts

Observation:

Mode IRQ Frequency
Non-FIFO High
FIFO Lower

Lab 6 – Driver log verification

dmesg | tail

Expected:

read fifo done
read fifo done

Indicates:

  • IRQ triggered
  • FIFO drained by driver