README 2.3 KB

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