Building the OPAE Intel FPGA driver (in-tree)¶
git clone ssh://«Place your username here»@git-amr-1.devtools.intel.com:29418/cpt_sys_sw-intel-fpga
cd cpt_sys_sw-intel-fpga
git config user.name "«Place your name here»"
git config user.email "«Place your email here»"
curl -k https://git-amr-1.devtools.intel.com/gerrit/tools/hooks/commit-msg -o .git/hooks/commit-msg
git checkout fpga-all
git pull
make oldconfig
make prepare
make modules SUBDIRS=drivers/fpga
Kernel modules built using in-tree building cannot *insmod’d* or
*modprobe’d* into the currently running kernel (e.g. in-tree building
the Intel FPGA driver when running on a workstation with different
kernel); unless the currently running kernel is the same than kernel on
Intel FPGA driver repository.
Building the OPAE Intel FPGA driver (out-of-tree)¶
Steps¶
- Fetch the Intel FPGA kernel repository
- Fetch the Intel FPGA internal tools repository
- Configure the Intel FPGA internal tools project
- Build the driver
- Build distribution package (tarball)
- Build RPM package (RPM)
- Insert the driver into currently running kernel
The resulting kernel objects has only been tested for correct functionality
between kernel 3.10 up to kernel 4.10.
Fetch the Intel FPGA kernel repository¶
git clone ssh://«Place your username here»@git-amr-1.devtools.intel.com:29418/cpt_sys_sw-intel-fpga
cd cpt_sys_sw-intel-fpga
git config user.name "«Place your name here»"
git config user.email "«Place your email here»"
curl -k https://git-amr-1.devtools.intel.com/gerrit/tools/hooks/commit-msg -o .git/hooks/commit-msg
git checkout feature/cmake
git pull
Fetch the Intel FPGA internal tools repository¶
git clone ssh://«Place your username here»@git-amr-1.devtools.intel.com:29418/cpt_sys_sw-fpga-internal
cd cpt_sys_sw-fpga-internal
git config user.name "«Place your name here»"
git config user.email "«Place your email here»"
curl -k https://git-amr-1.devtools.intel.com/gerrit/tools/hooks/commit-msg -o .git/hooks/commit-msg
git checkout develop
git pull
Configure the Intel FPGA internal tools project¶
cd cpt_sys_sw-fpga-internal
cd fpga_driver/fpga-kernel
mkdir mybuild
cd mybuild
cmake .. «user configuration flags»
Valid «user configuration flags» are:
cmake flag Optional or mandatory Purpose Default value
---------------------------------------------------------------------- ----------------------- ----------------------------- ---------------
-DINTEL_FPGA_DRIVER_VER_MAJOR Optional Driver major version 0
-DINTEL_FPGA_DRIVER_VER_MINOR Optional Driver minor version 1
-DINTEL_FPGA_DRIVER_VER_REV Optional Driver revision version 0
-DKERNEL_SOURCE_DIR=«path to the root of the FPGA kernel repository» Mandatory Path for driver source code None
Build the driver¶
cd cpt_sys_sw-fpga-internal
cd fpga_driver/fpga_kernel
cd mybuild # (created during previous step)
make «user target»
Valid «user targets» are:
make target Purpose
-------------------------- ----------------------------------------------------------------------------------------------------------
make Compiles the driver
make distgpl Creates distributable driver tarball: gpl/opae-intel-fpga-driver-<release>.tar.gz
make debgpl Create Debian DKMS-enabled driver installer package: gpl/debian/opae-intel-fpga-driver_<release>_amd64.deb
make rpmgpl Create Redhat DKMS-enabled driver installer package: gpl/rpm/opae-intel-fpga-driver-<release>.x86_64.rpm
Inserting the driver into currently running kernel¶
After building the driver (previous step), driver can be inserted into the currently running kernel.
cd cpt_sys_sw-fpga-internal
cd fpga_driver/fpga_kernel
cd mybuild # (created during previous step)
sudo insmod ./drivers/fpga/fpga-mgr-mod.ko
sudo insmod ./drivers/fpga/intel/intel-fpga-pci.ko
sudo insmod ./drivers/fpga/intel/intel-fpga-afu.ko
sudo insmod ./drivers/fpga/intel/intel-fpga-fme.ko
Before running applications; system administrator should request OS to enable allocation of 2,048kB memory pages. System adminitrator ('root') should run following command for such purpose:
echo 20 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages