Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

LinuxでFPGAをサポート?


TwitterのTLで、Linux Kernel 4.4.0 からFPGAのサポートが来ている…!!を見て、
Linux Referenceの4.4のdrivers/fpgaを覗いたら、あったよ。

 ・fpga-mgr.c
 ・socfpga.c
 ・zynq-fpga.c

fpga-mgr.cを見たら、Alteraが開発したものに、Xilinxが追加したようですね。

このドライバ、FPGA内のCPU(現時点では、ARM Cortex-A9)からFPGAへの焼きこみを行うため。

altera-socfpga-fpga-mgrのドキュメントによると、Device Treeに
           hps_0_fpgamgr: fpgamgr@ff706000 {
                  compatible = "altr,socfpga-fpga-mgr";
                  reg = <0xFF706000 0x1000
                         0xFFB90000 0x1000>;
                  interrupts = <0 175 4>;
          };
Xilinxだと、xilinx-zynq-fpga-mgrのドキュメントによると、
          devcfg: devcfg@f8007000 {
                  compatible = "xlnx,zynq-devcfg-1.0";
                  reg = <0xf8007000 0x100>;
                  interrupts = <0 8 4>;
                  clocks = <&clkc 12>;
                  clock-names = "ref_clk";
                  syscon = <&slcr>;
          };
にように書けばいいのね。

FPGA Manager Framework and Simple FPGA Busによると、
drivers/fpgaだけでなく、drivers/staging/simple-fpga-busなるものも必要なのね。
でも、Linux 4.4にはこのsimple-fpga-busはいませんね。

FPGA Manager & devicetree overlays
Making FPGAs first class citizens in the kernelなるものを見つけたよ。