Intel® FPGA RTE for OpenCL™ Pro Edition: 入门指南

ID 683173
日期 3/28/2022
Public
文档目录

4.2.4. 重新编译Linux Kernel Driver

根据已编译的kernel source对OpenCL™ Linux kernel driver进行编译。如果您需要重建 Linux kernel driver,那么要将aclsoc Linux kernel driver重新编译成在SoC FPGA上运行的Linux kernel的实际版本。

driver source位于 Intel® FPGA RTE for OpenCL™ 安装目录中。在一个具有sudo和最新版本的SoC EDS的主机上自行编译driver。

  1. 将driver source从$INTELFPGAOCLSDKROOT/board/a10soc/arm32/driver/复制到一个新的目录中。
  2. 将driver Makefile中的KDIR值设置成包含Linux kernel源文件的目录,Linux kernel源文件是在Compiling the Linux Kernel for the Intel Arria 10 SoC Development Kit中下载的。
  3. 在包含driver source文件的新目录中,运行make clean命令。
  4. 运行make命令来创建aclsoc_drv.ko文件。

    此文件稍后在Building the SD Card Image中使用。

    如果在构建kernel driver期间看到以下消息,那么可能需要更新此driver才能用于更高版本的Linux kernel:
    aclsoc_cmd.c:165:14: error: too many arguments to function ‘get_user_pages_unlocked’ 
    In file included from aclsoc_cmd.c:50:0
    要更新driver,需要对$INTELFPGAOCLSDKROOT/board/a10soc/arm32/driver/aclsoc_cmd.c进行更改:
    1. aclsoc_cmd.c中找到以下代码:
      ret = get_user_pages_unlocked(target_task, target_task->mm,
                   start_page + got * PAGE_SIZE,
                   num_pages - got, write, 1,
                   p + got);
    2. 使用以下代码进行替换:
      ret = get_user_pages_remote(target_task, target_task->mm,
                   start_page + got * PAGE_SIZE,
                   num_pages - got, FOLL_WRITE|FOLL_FORCE,
                   p + got, vma);