Load the PCIe Kernel Driver
pgp-pcie-apps bitstreams are designed to be driven by the
aes-stream-drivers Linux kernel module (datadev.ko). Once the
module is loaded, each SLAC PCIe card appears as a /dev/datadev_<N>
device node that the PyRogue scripts in software/scripts/ use as
their AxiMemMap backend.
The driver lives in a separate repository (slaclab/aes-stream-drivers) and is built from source.
Confirm the Board is Visible to the Host
The SLAC PCIe cards enumerate as Vendor ID 1a4a (“SLAC”) and Product
ID 2030 (“AXI Stream DAQ”):
lspci -nn | grep SLAC
# Expected output:
# 04:00.0 Signal processing controller [1180]: SLAC National Accelerator Lab \
# TID-AIR AXI Stream DAQ PCIe card [1a4a:2030]
If lspci shows nothing, the board is either not seated, not powered,
or running a firmware version that doesn’t expose the SLAC VID/PID.
Re-program with a known-good .mcs (see
Program a Board with updatePcieFpga.py) or reseat the card.
Build the Driver
git clone --recursive https://github.com/slaclab/aes-stream-drivers
cd aes-stream-drivers/data_dev/driver/
make
The build needs the running kernel’s headers (linux-headers-$(uname -r)
on Debian/Ubuntu, kernel-devel on RHEL).
Load the Module
sudo /sbin/insmod ./datadev.ko cfgSize=0x50000 cfgRxCount=256 cfgTxCount=16
The three cfg* parameters set the descriptor-ring sizes that the
driver allocates. The defaults shown above are appropriate for every
target shipped from this repository — change them only if a specific
application requires a different DMA buffer budget.
Set Permissions and Verify
sudo chmod 666 /proc/datadev_*
cat /proc/datadev_0
The cat should print a status block reporting the driver version,
the number of open DMA channels, and per-channel queue depths.
After this point /dev/datadev_0 (and /dev/datadev_1 etc. for
multiple cards) is ready to be opened by
rogue.hardware.axi.AxiMemMap from any PyRogue script — see
PyRogue Scripts.
Unload / Reload
To unload the module for a rebuild or a driver-config change:
sudo /sbin/rmmod datadev
Then re-run insmod with the new .ko or new parameters.
Persistent Load at Boot
For a permanent installation, copy datadev.ko into
/lib/modules/$(uname -r)/extra/, run depmod -a, and add
datadev (with the desired cfg* parameters) to
/etc/modules-load.d/ and /etc/modprobe.d/. See the
aes-stream-drivers repository for the canonical procedure.
Troubleshooting
``/dev/datadev_0`` does not appear after ``insmod`` — check
dmesg; the most common cause is a kernel-header / kernel-binary mismatch (rebuild against$(uname -r)headers).PCIe link goes down after reprogramming — the running
datadevis still bound to the old BAR layout. Rescan with software/scripts/rescanPcieFpga.sh or reboot.Permission denied on ``/dev/datadev_*`` — apply
chmodas shown above, or installudevrules from theaes-stream-driversrepo for a permanent fix.