Multi Channel DMA Intel® FPGA IP for PCI Express* Design Example User Guide

ID 683517
Date 6/09/2025
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.5.8.2.1. Custom PIO Read Write Test

You can read and write from the PIO address range in BAR 2 from any valid custom memory.

  1. A custom PIO write or read can be performed after completing the instructions outlined in the Prerequisites section.
    • For BAM PIO: the valid address range is 0x0 - 0x7ff. (For address 0x0, software gives an error "Invalid address". This is a known issue.)
    • For PIO (User Mode without BAM): the valid address range is 0x0 - 0x1ff8.
    Note: You need to increment the address value by 8 for any OS with 64-bit addressing.
  2. Perform a custom write by running the commands below.

    $ cd software/user/cli/perfq_app

    $ sudo ./perfq_app -b 0000:01:00.0 -o --pio_w_addr=0x1010 \
    --pio_w_val=0x30 --bar=2

    Expected printout:

    WRITE: PIO Address = 0x1010 Value = 0x30, bar = 2

    Parameters for Write operation:

    -b <bdf>

    -o

    --pio_w_addr=<address>

    --pio_w_val=<value to write>

    --bar=<bar number>

  3. Perform a custom read by running the commands below.

    $ cd software/user/cli/perfq_app

    $ sudo ./perfq_app -b 0000:01:00.0 -o --pio_r_addr=0x1010 \
    --bar=2

    Expected printout:

    READ: PIO Address = 0x1010 Value = 0x30, bar = 2

    Parameters for Read operation:

    -b <bdf>

    -o

    --pio_r_addr=<address>

    --bar=<bar number>