FPGA Programming Framework and Regions Overview

fpga support in the upstream kernel n.w
1 / 13
Embed
Share

Explore the integration of FPGA support in the upstream kernel with the FPGA Manager framework, low-level drivers for various FPGA families, and the concept of FPGA regions and bridges for efficient FPGA programming and management in the Device Tree Overlay environment.

  • FPGA Programming
  • Kernel Integration
  • FPGA Manager
  • FPGA Regions
  • Device Tree Overlay

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. FPGA Support in the upstream kernel Alan Tull November 2, 2016 Intel Corporation

  2. Overview Added in v4.4 FPGA Manager framework Low level drivers for CycloneV and Zynq (thanks Moritz!) On the mailing list Device Tree Overlay and bridges support FPGA Manager changes Support for more FPGAs Arria10 partial reconfig support Lattice iCE40 Family SPI (Joel Holdsworth) Cyclone V SPI (Joshua Clayton) In development, not yet posted Altera support for PCIe FPGAs (Matthew Gerlach) Intel Corporation 2

  3. FPGA Manager Framework Manufacturer-agnostic in-kernel API for programming FPGAs Only handles programming The intention is that higher level layers/interfaces can be implemented that may be used with any FPGA Low level drivers to handle FPGA particulars are registered with the framework API has 6 functions: Register/unregister low level driver Get/put a FPGA manager from device node Program FPGA from a buffer or from a firmware file Plus one on mailing list now: Get FPGA manager from device 3 3 Intel Corporation

  4. FPGA Regions and FPGA Bridges Adds Device Tree Overlay support for programming FPGAs DT Overlay notifications Hierarchy of FPGAs, FPGA Regions, and Bridges in the Device Tree A base image in FPGA can create FPGA Regions (like slots) for Partial Reconfiguration FPGA Bridges can be hard hardware or soft hardware in the FPGA Bridges are disabled and frozen during programming to protect CPU busses and FPGA logic from junk Each PR region has have a bridge to control busses independently. While one region is being programmed, other regions continue to be active and their drivers don t have to be unloaded. Can use Pantelis Antoniou s DTO ConfigFS interface for applying DTO s 4 4 Intel Corporation

  5. FPGA Regions Each region gets its own split of the busses, gated by a bridge. Processor FPGA Programming Interface FPGA Manager HW FPGA Fabric Bridge PR Region Bridges Bridge PR Region 5 5 Intel Corporation

  6. FPGA programming by applying a Device Tree Overlay (DTO) DTO contains: When DTO is removed Target FPGA Region 1. Child devices removed Bridges 2. Bridges disabled FPGA Image firmware file name Image specific information Child devices When DTO is applied: 1. Bridges are disabled 2. FPGA is programmed 3. Bridges reenabled 4. Child devices probed 6 6 Intel Corporation

  7. A few words about interfaces The FPGA Manager framework has no userspace interface by design I have patches for a simple DebugFS, haven t submitted yet. I don t think that there is one interface or set of higher layers that will be appropriate for all FPGA use cases The FPGA Regions code (when used with the Overlays ConfigFS interface) adds one interface with some good features. It won t fill everyone s needs (not all platforms use Device Tree). Whatever interfaces and higher layers are added on top of FPGA Manager, all the supported FPGAs will have the opportunity to use 7 7 Intel Corporation

  8. FPGA Image Info Struct (change to the FPGA Manager framework) FPGA images may have particulars that affect how they are programmed Image built partial or full reconfiguration How long to wait for the bridges to disable/enable traffic How long to wait for FPGA to go to operating mode after programming struct fpga_image_info added to API to contain these Struct can be populated from DT or from somewhere else. API change is easy: Current upstream API contains a u32 flags Change to API is to take out the u32 flags and put a pointer to this struct instead. 8 8 Intel Corporation

  9. Reference FPGA Manager in the kernel lives here: drivers/fpga include/linux/fpga documentation/fpga documentation/devicetree/bindings/fpga V21 repost of Device Tree Overlay support for FPGAs (look for Tull) https://lkml.org/lkml/2016/11/1 In particular, here s the doc for FPGA Regions https://lkml.org/lkml/2016/11/1/383 9 9 Intel Corporation

  10. Back Up Intel Corporation

  11. Backup 11 1 1 Intel Corporation

  12. FPGA Manager API (with proposed changes) Register Low Level Drivers: int fpga_mgr_register(struct device *dev, const char *name, const struct fpga_manager_ops *mops, void *priv); void fpga_mgr_unregister(struct device *dev); Get/Put struct fpga_manager *of_fpga_mgr_get(struct device_node *node); void fpga_mgr_put(struct fpga_manager *mgr); (on list) struct fpga_manager *fpga_mgr_get(struct device *node); Program a FPGA int fpga_mgr_buf_load(struct fpga_manager *mgr, struct fpga_image_info *info, const char *buf, size_t count); int fpga_mgr_firmware_load(struct fpga_manager *mgr, struct fpga_image_info *info, const char *image_name); 12 1 2 Intel Corporation

  13. The Linux Kernel FPGA Manager Framework Intel Corporation 13

Related


More Related Content