I am using Ubuntu 18.04 in the host machine and succesfully initialized the opencl image in the a10gx board.
I am trying to run aocl install with a10_ref bsp but its apparently broken. Below is the error log.
Error log
root@manoj-inference-Workstation:/home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref/linux64/driver# nano make_all.sh
root@manoj-inference-Workstation:/home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref/linux64/driver# cd
root@manoj-inference-Workstation:~# aocl install
Do you want to setup the FCD at directory /opt/Intel/OpenCL/Boards [y/n] y
aocl install: Adding the board package /home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref to the list of installed packages
aocl install: Setting up the FPGA Client Driver (FCD) to the system.
Install the FCD file to /opt/Intel/OpenCL/Boards
Installing the board package driver to the system.
aocl install: Running install from /home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref/linux64/libexec
Looking for kernel source files in /lib/modules/5.0.0-23-generic/build
Using kernel source files from /lib/modules/5.0.0-23-generic/build
Building driver for BSP with name a10_ref
./make_all.sh: 45: ./make_all.sh: make: not found
aocl install: failed.
aocl install: Removing the board package /home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref from the list of installed packages
aocl install: Removing FCD
Is there simple fix for this issue without downgrading my kernel to 16.04? It will be really helpful if someone can come up with a solution with simple tweak
You need to Install the Build essentials first.
sudo apt-get install build-essential
./make_all.sh: 45: ./make_all.sh: make: not found
means it can not find make which is part of the Build System.
after that re run the setup
Greetings Thomas
Thank you for the answer. Now make file can find build system but i get following errors
root@manoj-inference-Workstation:~# aocl install
Do you want to setup the FCD at directory /opt/Intel/OpenCL/Boards [y/n] y
aocl install: Adding the board package /home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref to the list of installed packages
aocl install: Setting up the FPGA Client Driver (FCD) to the system.
Install the FCD file to /opt/Intel/OpenCL/Boards
Installing the board package driver to the system.
aocl install: Running install from /home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref/linux64/libexec
Looking for kernel source files in /lib/modules/5.0.0-23-generic/build
Using kernel source files from /lib/modules/5.0.0-23-generic/build
Building driver for BSP with name a10_ref
make: Entering directory '/usr/src/linux-headers-5.0.0-23-generic'
CC [M] /tmp/opencl_driver_2UUR24/aclpci_queue.o
/tmp/opencl_driver_2UUR24/aclpci_queue.c: In function ‘queue_push’:
/tmp/opencl_driver_2UUR24/aclpci_queue.c:133:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
void* dest = queue_addr(q, loc);
^~~~
CC [M] /tmp/opencl_driver_2UUR24/aclpci.o
/tmp/opencl_driver_2UUR24/aclpci.c: In function ‘aclpci_irq’:
/tmp/opencl_driver_2UUR24/aclpci.c:340:54: error: passing argument 2 of ‘send_sig_info’ from incompatible pointer type [-Werror=incompatible-pointer-types]
int ret = send_sig_info(aclpci->signal_number, &aclpci->signal_info, aclpci->user_task);
^
In file included from /tmp/opencl_driver_2UUR24/aclpci.c:53:0:
./include/linux/sched/signal.h:325:12: note: expected ‘struct kernel_siginfo *’ but argument is of type ‘struct siginfo *’
extern int send_sig_info(int, struct kernel_siginfo *, struct task_struct *);
^~~~~~~~~~~~~
cc1: some warnings being treated as errors
scripts/Makefile.build:284: recipe for target '/tmp/opencl_driver_2UUR24/aclpci.o' failed
make[1]: *** [/tmp/opencl_driver_2UUR24/aclpci.o] Error 1
Makefile:1606: recipe for target '_module_/tmp/opencl_driver_2UUR24' failed
make: *** [_module_/tmp/opencl_driver_2UUR24] Error 2
make: Leaving directory '/usr/src/linux-headers-5.0.0-23-generic'
aocl install: failed.
aocl install: Removing the board package /home/manoj/intelFPGA_pro/19.2/hld/board/a10_ref from the list of installed packages
aocl install: Removing FCD
new linux kernel has some changes and remove some deprecated structs and methods. I had to make changes to the driver source files for a successful compilation.
~/intelFPGA_pro/19.2/hld/board/a10_ref/linux64/driver :
aclpci.c:
- 340 int ret = send_sig_info(aclpci->signal_number, &aclpci->signal_info, aclpci->user_task);
+ 340 struct kernel_siginfo *tmp_alcpci_sig_inf = &aclpci->signal_info;
+ 341 int ret = send_sig_info(aclpci->signal_number, tmp_alcpci_sig_inf, aclpci->user_task);
---
- 371 struct siginfo *info = &aclpci->signal_info;
+ 372 struct kernel_siginfo *info = &aclpci->signal_info;
==============
aclpci.h:
- 172 struct siginfo signal_info;
- 173 struct siginfo signal_info_dma;
+ 172 struct kernel_siginfo signal_info;
+ 173 struct kernel_siginfo signal_info_dma;
==============
aclpci_dma.c:
- 75 #include <linux/time.h>
+ 75 #include <linux/ktime.h>
---
- 270 struct timeval us_end_time;
+ 270 struct timespec64 us_end_time;
---
- 287 do_gettimeofday(&us_end_time);
+ 287 ktime_get_ts64(&us_end_time);
---
-289 useconds = us_end_time.tv_usec - d->m_us_dma_start_time.tv_usec;
-290 ACL_VERBOSE_DEBUG (KERN_DEBUG "Last table transfer measured %06ld usec :: check seconds %ld should be zero", useconds, seconds);
+289 useconds = us_end_time.tv_nsec - d->m_us_dma_start_time.tv_nsec;
+290 ACL_VERBOSE_DEBUG (KERN_DEBUG "Last table transfer measured %06ld nsec :: check seconds %ld should be zero", useconds, seconds);
---
-977 do_gettimeofday(&(d->m_us_dma_start_time));
+977 ktime_get_ts64(&(d->m_us_dma_start_time));
==============
aclpci_dma.h:
-204 struct timeval m_us_dma_start_time;
+204 struct timespec64 m_us_dma_start_time;
For more complete information about compiler optimizations, see our Optimization Notice.