FC2カウンター FPGAの部屋 @ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる5(Linux カーネルを作る)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる5(Linux カーネルを作る)

@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる4(U-Bootを作る)”の続き。

前回は、U-Boot を作った。今回はLinux カーネルを作ってみよう。

参考にするのは、
UltraZed 向け Debian GNU/Linux の構築(Linux Kernel編)

~/ZynqMP-FPGA-Linux ディレクトリに移動して、Xilinx が提供してる linux-xlnx を git clone する。
cd ~/ZynqMP-FPGA-Linux
git clone https://github.com/Xilinx/linux-xlnx.git linux-xlnx-v2017.3-zynqmp-fpga
ls

UltraZed-EG_Linux_72_170118.png

xilinx-v2017.3 をチェックアウト
cd linux-xlnx-v2017.3-zynqmp-fpga
ls
git checkout -b linux-xlnx-v2017.3-zynqmp-fpga refs/tags/xilinx-v2017.3

UltraZed-EG_Linux_73_170118.png

ZynqMP 用のファイルを追加してコミット
patch -p0 < ../files/linux-xlnx-v2017.3-zynqmp-fpga.diff
git add --update
git add arch/arm64/boot/dts/xilinx/zynqmp-uz3eg-iocc.dts
git commit -m "[patch] for linux-xlnx-v2017.3-zynqmp-fpga."

コマンド入力をミスってしまった。
UltraZed-EG_Linux_74_170118.png

Debian Package を作る際の問題を修正
patch -p0 < ../files/linux-xlnx-v2017.3-builddeb.diff
git add --update
git commit -m "[fix] build wrong architecture debian package when ARCH=arm64 and cross compile."

UltraZed-EG_Linux_75_170118.png

タグとバージョン番号の設定
git tag -a xilinx-v2017.3-zynqmp-fpga -m "release xilinx-v2017.3-zynqmp-fpga"
echo 0 > .version

UltraZed-EG_Linux_76_170118.png

構築の準備
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make xilinx_zynqmp_defconfig

UltraZed-EG_Linux_77_170118.png

カーネルと Debian パッケージの構築
export DTC_FLAGS=--symbols
make deb-pkg

UltraZed-EG_Linux_78_170118.png

カーネル・ビルド終了
UltraZed-EG_Linux_79_170118.png

arch/arm64/boot/Image ができた。
UltraZed-EG_Linux_80_170118.png

arch/arm64/boot/dts/xilinx/zynqmp-uz3eg-iocc.dtb ができた。
UltraZed-EG_Linux_81_170118.png

構築したカーネルのイメージとデバイスツリーを target/UltraZed-EG-IOCC/boot にコピー
cp arch/arm64/boot/Image ../target/UltraZed-EG-IOCC/boot/image-4.9.0-xlnx-v2017.3-fpga
cp arch/arm64/boot/dts/xilinx/zynqmp-uz3eg-iocc.dtb ../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dtb
dtc -I dtb -O dts --symbols -o ../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts ../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dtb

UltraZed-EG_Linux_82_170118.png

最後の dtc でエラーが出ている。”--symbols”というオプションは無いそうだ。

(2018/01/20 :追記)
@ikwzmさんのUltraZed 向け Debian GNU/Linux の構築をやってみる6(最新のdtc をビルド)”で最新の dtc をインストールすることができたので、dtc をもう一度やってみよう。

dtc -I dtb -O dts --symbols -o ../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts ../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dtb

UltraZed-EG_Linux_91_170120.png

UltraZed-EG_Linux_92_170120.png

ワーニングは出たが、dts は逆コンパイルできたようだ。
UltraZed-EG_Linux_93_170120.png

ワーニング・メッセージを示す。

../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_vs_reg): Node /amba_pl@0 has a unit name, but no reg property
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_format): Node /amba/spi@ff0f0000/flash@0/partition@0x00000000 unit name should not have leading "0x"
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_format): Node /amba/spi@ff0f0000/flash@0/partition@0x00000000 unit name should not have leading 0s
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_format): Node /amba/spi@ff0f0000/flash@0/partition@0x00100000 unit name should not have leading "0x"
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_format): Node /amba/spi@ff0f0000/flash@0/partition@0x00100000 unit name should not have leading 0s
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_format): Node /amba/spi@ff0f0000/flash@0/partition@0x00140000 unit name should not have leading "0x"
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (unit_address_format): Node /amba/spi@ff0f0000/flash@0/partition@0x00140000 unit name should not have leading 0s
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (pci_device_reg): Node /amba/pcie@fd0e0000/legacy-interrupt-controller missing PCI reg property
../target/UltraZed-EG-IOCC/boot/devicetree-4.9.0-xlnx-v2017.3-fpga-zynqmp-uz3eg-iocc.dts: Warning (gpios_property): Could not get phandle node for /__symbols__:gpio(cell 0)

  1. 2018年01月19日 06:06 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/4046-02bca0e0
この記事にトラックバックする(FC2ブログユーザー)