インテルのみ表示可能 — GUID: kmb1593117222282
Ixiasoft
1.2.9. Linuxの構築
- Linux gitツリーのクローンを作成して、LTSIブランチを取得します。
cd ~/ s10_spim_fpga/ git clone https://github.com/altera-opensource/linux-socfpga\ linux-socfpga.a53 cd linux-socfpga.a53 git checkout -b test-kernel -t origin/socfpga-5.4.44-lts make clean && make mrproper
- arch/arm64/configs/defconfig を次のように編集して、カーネルのコンフィグレーションを変更します。
CONFIG_SPI_SPIDEV=y CONFIG_GPIO_ALTERA=y CONFIG_SPI_DESIGNWARE=y CONFIG_SPI_DW_MMIO=y
- デバイス・ツリー・ファイル arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts を次のように編集します。
FPGAファブリックで使用されるFPGAクロックを追加します。
clk_100: clk_100 { compatible = "fixed-clock"; clock-frequency = <100000000>; clock-output-names = "clk_100-out_clk"; };
SPI CS信号を制御するPIOモジュールを追加します。spi_cs_pio: gpio@0xf9010000 { compatible = "altr,pio-19.1", "altr,pio-1.0"; reg = <0xf9010000 0x00000020>; clocks = <&clk_100>; altr,gpio-bank-width = <1>; resetvalue = <1>; #gpio-cells = <2>; gpio-controller; status = "okay"; };
SPIM0をイネーブルして、ソフトIP PIOをチップセレクトとして使用するようにし、spidevドライバーで使用できるようにします。&spi0 { num-cs = <1>; cs-gpios = <&spi_cs_pio 0 0>; status = "okay"; spidev@0 { compatible = "custom,spidev"; reg = <0x0>; spi-max-frequency = <0x5F5E10>; enable-dma = <0x1>; }; };
- 「compatible」 プロパティーの spidev ドライバー・ソース・ファイル (drivers/spi/spidev.c) を編集して、作成されたデバイス・ツリー・エントリーと一致させます。
{ .compatible = "lineartechnology,ltc2488" }, { .compatible = "ge,achc" }, { .compatible = "semtech,sx1301" }, { .compatible = "custom,spidev" }, {},
- Linuxカーネルおよびデバイスツリーを構築します。
make clean && make mrproper # enable JFFS2 and disable 4K sectors for booting from QSPI echo "CONFIG_JFFS2_FS=y" >> arch/arm64/configs/defconfig echo "CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=n" >> arch/arm64/configs/defconfig # reduce QSPI clock to work on early boards sed -i 's/spi-max-frequency = <100000000>;/\ spi-max-frequency = <50000000>;/g'\ arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts make defconfig make -j 48 Image dtbs modules make modules_install INSTALL_MOD_PATH=modules_install rm -rf modules_install/lib/modules/*/build rm -rf modules_install/lib/modules/*/source cd ..