Tandem Boot Support

Xilinx devices can meet 120 ms link training requirement by using Tandem Configuration, a solution that splits the programming image into two stages. The first stage quickly configures the PCIe endpoint(s) so the endpoint is ready for link training within 120 ms. The second stage then configures the rest of the device. QDMA Linux Driver supports this feature for CPM5 designs

For more details on Tandem Configuration refer to CMP5_QDMA_Product_Guide.

Note: Sample instructions are provided below to excercise the Tandem Boot support

Step#1:

Program the stage 1 bitstream to device (JTAG or PROM) and reboot host system

Step#2: Get the driver and application ready

  • Get the latest driver code base
  • Remove old module from kernel (if already exist)
    $> rmmod qdma-pf
  • Compile driver and applications
    $> make -DTANDEM_BOOT_SUPPORTED
  • Install (copy) driver and apps to standard locations
    $> make install
  • Load the kernel module
    $> modprobe qdma-pf
  • Enable streaming
    $> dma-ctl qdma41000 en_st

Step#3: Add and start queues

Note: Only as a sample to show that MM and ST queues can be added and started

  • $>dma-ctl qdma41000 q add idx 0 mode mm dir h2c
  • $>dma-ctl qdma41000 q add idx 1 mode mm dir c2h
  • $>dma-ctl qdma41000 q add idx 2 mode st dir h2c
  • $>dma-ctl qdma41000 q start idx 0 dir h2c aperture_sz 4096 //for SBI loads
  • $>dma-ctl qdma41000 q start idx 1 dir c2h
  • $>dma-ctl qdma41000 q start idx 2 dir h2c

Step#4: DMA Stage 2 to SBI

  • Enable the slave-boot interface for TandemPROM or DFX designs. This is enabled automatically for TandemPCIe designs.
    – Write 0x29 to the SBI control register 0xF122_0000 (aliased to 0x1_0122_0000 for transactions from the NOC). - $> dma-to-device -d /dev/qdma41000-MM-0 -f <st2.pdi> -s <size> -a 0x102100000

Step#5: MM DMA to and from PL BRAM to test

  • $> dma-to-device -d /dev/qdma41000-MM-0 -f /dev/urandom -s 32 -a 0x0
  • $> dma-from-device -d /dev/qdma41000-MM-0 -f frombram.txt -s 32 -a 0x0