FPGA programming using sysfs attributes

Linux Drivers

Release Date
2023-07-22

Linux FPGA Manager driver creates /sys/class/fpga_manager/<fpga> folder, which contains file attributes that provides control and state.

  • firmware :  /sys/class/fpga_manager/<fpga>/firmware firmware attribute requests an fpga image using the firmware class, then write output to the FPGA
  • flags: /sys/class/fpga_manager/<fpga>/flags flags attribute determines the type of Bitstream 0 - Full Bitstream 1 - Partial Bitstream (default: 0)
  • state :  /sys/class/fpga_manager/<fpga>/state state attribute is a superset of FPGA states and FPGA Manager driver states
  • name :  /sys/class/fpga_manager/<fpga>/name name attribute is name of the low level FPGA Manager driver
  • key : /sys/class/fpga_manager/<fpga>/key key attribute stores the key value useful for Encrypted Bitstream loading to read the userkey

Steps for programming the Full Bitstream

S et flags for Full Bitstream

  • echo 0 > /sys/class/fpga_manager/fpga0/flags

Load the Bitstream

  • mkdir -p /lib/firmware

  • cp /media/design_1_wrapper.bit.bin /lib/firmware/

  • echo design_1_wrapper.bit.bin > /sys/class/fpga_manager/fpga0/firmware

Steps for programming the Partial Bitstream

S et flags for Partial Bitstream

  • echo 1 > /sys/class/fpga_manager/fpga0/flags

Load the Bitstream Partial Bitstream

  • mkdir -p /lib/firmware

  • cp /media/partail_wrapper.bit.bin /lib/firmware/

  • echo partail_wrapper.bit.bin  > /sys/class/fpga_manager/fpga0/firmware