Intel® High Level Design
Support for Intel® High Level Synthesis Compiler, DSP Builder, OneAPI for Intel® FPGAs, Intel® FPGA SDK for OpenCL™
702 Discussions

Typical way of loading runtime to Arm core (HPS)

uniqueMR
New Contributor I
1,319 Views

Hi,

 

I'm wondering what is the typical way to load runtime executable to FPGA once I build host and device by oneAPI. 

 

I followed Agilex™ 7 FPGA I-Series Development Kit (2x R-Tile and 1x F-Tile)  to boot up HPS on my Agilex™ 7 FPGA I-Series Development Kit (2x R-Tile and 1x F-Tile) .  Now I can establish serial communication and run ./hello in the linux kernel. But I don't know how should I load executable files to FPGA devkit. Tutorials like Get Started with the Intel® oneAPI Base Toolkit for Linux* does not provide details on how to copy executable files to runtime system. 

 

According to my experience of working with Xilinx ultrascale board, I can establish ethernet connection between host and device, and use 'scp' to copy executable files from host to device. Do I have similar options while using Agilex7 I-series devkit? There seems to be no ethernet or USB ports on my board. 

 

Thanks,

Runlong

0 Kudos
15 Replies
Kevin_Xu_Intel
Employee
1,271 Views

Hi Runlong,

 

Can you share more about your design/ project? Are you trying to offload accelerated computation? or generating RTL IP ? (Difference is explained here)

 

If you are trying to build a multiarchitecture executable, I believe we only support x86 machine as host (linux or windows) not the HPS core on our SoC FPGA. When you running the multiarchitecture executable (on the host) for the first time, it program the FPGA automatically. 

 

I recommend following this tutorial to get started on running a simple oneAPI program on FPGA: https://github.com/oneapi-src/oneAPI-samples/tree/master/DirectProgramming/C%2B%2BSYCL_FPGA/Tutorials/GettingStarted/fpga_compile

 

Thanks,

-Kevin

0 Kudos
uniqueMR
New Contributor I
1,188 Views

Hi Kevin,

 

I just started with oneAPI tutorial for setting up the basic workflow, and the design that I am using is the vector-add sample (seems to be FPGA SYCL code). I want to try 'make fpga' step in Get Started with the Intel® oneAPI Base Toolkit for Linux*  which is similar to the tutorial you shared. It suggests me to copy the executable file to the runtime system, and run the executable file. 

uniqueMR_0-1726543157549.png

By mentioning "we only support x86 machine as host (linux or windows) not the HPS core on our SoC FPGA", does it mean I need to run './vector-add-usm.fpga' on my x86 machine as host, and the FPGA will be programmed automatically? 

And both of these two tutorials seem to hide the details of host-board connection. Is there a guidance on how I should physically connect my board with my x86 host machine? Now I seem to have 3 connections available: a micro-USB connection (recognized as AGI FPGA DevKit in Quartus), an Intel FPGA download cable II connection (recognized as USB-Blaster II in Quartus), and a UART serial communication connection. Are these enough to automatically program FPGA by running executable on the host?

 

Thanks,

Runlong

0 Kudos
Kevin_Xu_Intel
Employee
1,132 Views

Hi Runlong,

 

  • It suggests me to copy the executable file to the runtime system, and run the executable file. 

The "runtime system" referring to the computer that the FPGA Card is connected to, either through PCI-E or USB. We mention copying here because it is common to use different machine to compile and run the executable. 

  • does it mean I need to run './vector-add-usm.fpga' on my x86 machine as host, and the FPGA will be programmed automatically? 

Yes. Assuming you have the FPGA card connected and initialized, and proper driver and BSP/ASP installed. If not, I am linking some resources for how to do that:

  1. You need to install the oneapi base toolkit and the oneapi fpga support package. You also need to have Quartus installed.
  2. You need to install the Accelerator Support Package (ASP) for your specific board. You can usually get the ASP from your board vendor, or it can be generated by following this guide: https://ofs.github.io/ofs-2024.2-1/hw/common/user_guides/oneapi_asp/ug_oneapi_asp/
  3. You need to initialize your board: https://www.intel.com/content/www/us/en/docs/oneapi-fpga-add-on/developer-guide/2024-2/managing-an-fpga-board.html

Once the above is settled up, you can then run the executable such as "vector-add-buffers.fpga" same why you run any binary executable. 

 

The step to generate BSP/ASP can be a bit involved, let me know if you need more help wit it.

 

Thanks,

 

-Kevin 

0 Kudos
uniqueMR
New Contributor I
994 Views

Hi Kevin Xu,

 

By mentioning "You can usually get the ASP from your board vendor, or it can be generated by following this guide", does it mean I can skip generating BSP/ASP myself if I am able to get those support packages from, as you suggested, the board vendor?

 

Now the guidance on ofs.github.io seems pretty scary to me. I spent two days without figuring out where should I start with. Each step seems to have a bunch of prerequisits and assumptions. I think those steps might be too much before I can run a simple line of 'helloWorld' and become the first-day learner of oneAPI. 

 

If I can somehow get the well-crafted BSP/ASP, does it mean I can start with something like 'aocl install <BSP_root_folder>'? That will make my life much easier. Thanks!

 

Best,

Runlong

0 Kudos
Kevin_Xu_Intel
Employee
948 Views

Hi Runlong,

 

I can work on getting a BSP/ASP for the I-serial Devkit. But i want to mention:

  1. It's not going to work with the ARM host you mentioned, only with an x86 host.
  2. Even if we can generate a BSP/ASP that supports ARM core, the oneAPI runtime still won't work on ARM.
  3. If running with ARM is a hard requirement, the only way I can think of is to export your oneAPI design as an RTL IP, and connect it to the HPS ARM core in Quartus Platform Designer. 

Thanks,

 

-Kevin

0 Kudos
uniqueMR
New Contributor I
891 Views

Hi Kevin,

 

Thank you so much for your time and effort. Yes, using ARM host is NOT a strong requirements for me at this point. I mentioned the ARM core just because I related it to my other project experience in the past.  In the end, I will follow what oneAPI workflow expects me to do. I really appreciate that you can help me with BSP/ASP for I-series Devkit. 

 

Thanks,

Runlong

0 Kudos
Kevin_Xu_Intel
Employee
675 Views

Hi Runlong,

 

I was unable to local a pre-build BSP/ASP for the I-Series devkit. The best I can find is a pre build FIM for this devkit:

Go to https://github.com/OFS/ofs-agx7-pcie-attach/releases/tag/ofs-2024.1-1, and download iseries-1x400-images_ofs-2024-1-1.tar.gz

This FIM should allows you to skip section 2.2 entirely, and it is the most time consuming steps in the process of creating BSP/ASP. 

 

Let me know if you need any help generating BSP/ASP.

 

Thanks,

 

-Kevin

0 Kudos
uniqueMR
New Contributor I
611 Views

Hi Kevin, 

 

Thank you for providing the resources. I will try to generate BSP/ASP based on the FIM and let you know if there are other problems. 

 

Best regards,

Runlong

0 Kudos
Jeet14
Employee
1,204 Views

Hi,


Please add below packages into your rootFS and add these into your local.conf file. Recompile the rootFS, with this you will be able to use the 'scp' command for transferring file from Host PC to board.


CORE_IMAGE_EXTRA_INSTALL list to get both scp and sftp clients and servers:

openssh

openssh-sftp

openssh-sftp-server


For building the RootFS, you can refer below link-

https://www.rocketboards.org/foswiki/Documentation/BuildingBootloaderAgilex7#Building_Yocto_Rootfs


Regards

Tiwari


0 Kudos
Jeet14
Employee
1,023 Views

Hi,


Any update on the suggestion given in previous comment?


Regards

Tiwari


0 Kudos
uniqueMR
New Contributor I
1,019 Views

Hi Tiwari,

 

Thanks for following up. I find the path suggested by Kevin Xu might be more applied to my situation, so I want to try this first. Generating BSP/ASP myself seems to be too painful, so I'm trying to reach out and see if I can get those support packages that are specified for my board type. Btw, do you have suggestions on where I can possibly get well-crafted BSP/ASP for oneAPI development? Thanks.

 

Best regards,

Runlong Hu

0 Kudos
BoonBengT_Intel
Moderator
1,013 Views

Hi @uniqueMR,


For oneAPI BSP you can find it based on the your device at the link below:

- https://www.intel.com/content/www/us/en/docs/oneapi/programming-guide/2023-1/fpga-bsps-and-boards.html (For PAC product)

- https://www.intel.com/content/www/us/en/developer/tools/oneapi/fpga.html (For non PAC product, please scroll to the 'Choose an FPGA Platform' section)


Hope that clarify

Best Wishes

BB


0 Kudos
Jeet14
Employee
760 Views

Hi,


Please let me know if you have any other query on this.

If no then, I will close this by today EOD.


Regards

Tiwari


0 Kudos
uniqueMR
New Contributor I
730 Views

Hi Jeet, 

 

Thank you for following up. Kevin said he would help me getting BSP/ASP for my agilex7 i-series devkit. Now I'm still waiting for his feedback. Could you still keep this thread if there's no other way for me to catch up with any updates? Thanks a lot. 

 

Best, 

Runlong

0 Kudos
Jeet14
Employee
559 Views

Hi,


FYI, This thread will be open for community to support. You will receive update if anyone post to this thread.

I will close this case from my side as no query pending from my side.


Regards

Tiwari


0 Kudos
Reply