| ============================================================================== |
| Linux Driver Source for Xilinx FPGA firmware download |
| ============================================================================== |
| |
| |
| TABLE OF CONTENTS. |
| |
| 1. SUMMARY |
| 2. BACKGROUND |
| 3. DESIGN |
| 4. HOW TO USE |
| 5. REFERENCE |
| |
| 1. SUMMARY |
| |
| - Download Xilinx FPGA firmware |
| - This module downloads Xilinx FPGA firmware using gpio pins. |
| |
| 2. BACKGROUND |
| |
| An FPGA (Field Programmable Gate Array) is a programmable hardware that is |
| used in various applications. Hardware design needs to programmed through |
| a dedicated device or CPU assisted way (serial or parallel). |
| This driver provides a way to download FPGA firmware. |
| |
| 3. DESIGN |
| |
| - load Xilinx FPGA bitstream format[1] firmware image file using |
| kernel firmware framework, request_firmware() |
| - program the Xilinx FPGA using SelectMAP (parallel) mode [2] |
| - FPGA prgram is done by gpio based bit-banging, as an example |
| - platform independent file: gs_fpgaboot.c |
| - platform dependent file: io.c |
| |
| 4. HOW TO USE |
| |
| $ insmod gs_fpga.ko file="xlinx_fpga_top_bitstream.bit" |
| $ rmmod gs_fpga |
| |
| 5. USE CASE (from a mailing list discussion with Greg) |
| |
| a. As a FPGA development support tool, |
| During FPGA firmware development, you need to download a new FPGA |
| image frequently. |
| You would do that with a dedicated JTAG, which usually a limited |
| resource in the lab. |
| However, if you use my driver, you don't have to have a dedicated JTAG. |
| This is a real gain :) |
| |
| b. For the FPGA that runs without config after the download, which |
| doesn't talk to any of Linux interfaces (such as PCIE). |
| |
| We download FPGA firmware from user triggered or some other way, and that's it. |
| Since that FPGA runs on its own, it doesn't require a linux driver |
| after the download. |
| |
| c. For the FPGA that requires config after the download, which talk to |
| any of linux interfaces (such as PCIE) |
| |
| Then, this type of FPGA config can be put into device tree and have a |
| separate driver (pcie or others), then THAT driver calls my driver to |
| download FPGA firmware during the Linux boot, the take over the device |
| through the interface. |
| |
| 6. REFERENCE |
| |
| 1. Xilinx APP NOTE XAPP583: |
| http://www.xilinx.com/support/documentation/application_notes/xapp583-fpga-configuration.pdf |
| 2. bitstream file info: |
| http://home.earthlink.net/~davesullins/software/bitinfo.html |