(2021年1月1日時点の情報であることにご注意ください)
本ページで紹介する内容:
DE10-nano ボード(Intel FPGA Cyclone 5 SoC)を使用して、下記を実現したい時の手順
- Desktop環境 (Xfce) を有効にした Linux を Build したい
- ボード上の HDMI出力ポートから、モニターに出力したい
- とにかく無料でやりたい。個人使用なので、Copyright, GPL については気にしない。
手順概要:
- FPGAデザインを、terasic社 Web-site からダウンロード
- Intel社 Web-site からQuartus ツール(Version 20.1)をダウンロード & インストール
- https://github.com/altera-opensource/linux-socfpga (tag: socfpga-4.14.130-ltsi) から、"driver/video/fbdev/altvipfb.c" をダウンロード(tagに注意!)
- 以下の Rocketboards.org の手順に従い、Build を進めるが、いくつかのステップを変更 & いくつかのファイルを変更しながら作業を進める
https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries
用意するもの:
- Terasic社 DE10-nano ボード(付属のUSBケーブルと電源ケーブル)
- Ubuntu 18.04 ホスト・パソコン
- SD card (16GB)
- HDMIモニター、HDMIケーブル
FPGAデザインを、terasic社 Web-site からダウンロード
- DE-10 nano のページ中の "Resource" のページから、ボードの Revision A/B/C に対応した CDROM イメージをダウンロード
http://de10-nano.terasic.com/
- Rev. C の場合のダウンロードファイル名:
”DE10-Nano_v.1.3.8_HWrevC_SystemCD.zip” - 解凍して、以下のフォルダーを、作業 Directory (今回は、$HOME)にコピーする
「Demonstrations/SoC_FPGA/DE10_NANO_SoC_FB」
Intel社 Web-site からQuartus ツール(Version 20.1)の「Linux版」をダウンロード & インストール
- Quartus Prime ライト・エディッション Version 20.1 をダウンロード
https://fpgasoftware.intel.com/20.1/?edition=lite - 個別ダウンロードをお勧めします。
- ダウンロードした "*.run" ファイルを実行して、Home Directory ($HOME)にインストール(chmod +x *.run; ./*.run)
- Embedded Development Suite Standard Edition 20.1 をダウンロード
https://fpgasoftware.intel.com/soceds/20.1/?edition=standard&platform=linux&download_manager=direct - ダウンロードした "*.run" ファイルを実行して、Home Directory ($HOME)にインストール(chmod +x *.run; ./*.run)
- Ubuntu 18.04 ホスト・マシンの ~/.bashrc に以下の環境変数を設定しておく
- export QUARTUS_ROOTDIR=~/intelFPGA_lite/20.1/quartus
- export SOCEDS_DEST_ROOT=~/intelFPGA/20.1/embedded
- export QSYS_ROOTDIR=${QUARTUS_ROOTDIR}/sopc_builder/bin
- export PATH=${PATH}:\
${QUARTUS_ROOTDIR}/bin:\
${QUARTUS_ROOTDIR}/sopc_builder/bin
https://github.com/altera-opensource/linux-socfpga (tag: socfpga-4.14.130-ltsi) から、"driver/video/fbdev/altvipfb.c" をダウンロード(tagに注意!)
- 生憎、linux-socfpga 5.* Version から "driver/video/fbdev/altvipfb.c" が削除されている。
- しかし、Terasic社提供のハードウエア・デザインをそのまま使用する場合には、前述のドライバー(altvipfb.c)を使うのが手っ取り早い。
- 一方、linux-socfpga 5.* 内で「altvipfb.c」を動作させるには、一部修正が必要(後述)
Build !
準備作業終了。ここから、Build 関連作業を進めていく。
基本的には、Rocketboards.org に記載されている公式の方法(下記URL)に沿って作業を進める。もちろん、以下のページは DE10-Nano向けの記載ではないので、一部手順は異なる。
Build Tool Chain のインストールと環境設定
- この作業は、Rocketboards.org の記載そのまま。ここでは、$HOME (~/)にインストールしている。
U-Bootの Build
- 先ほど terasic社のページからダウンロードした「DE10_NANO_SoC_FB」を使用する。以下は、DE10_NANO_SoC_FBを $HOMEにコピーした場合の例。
- 以下に手順を記載するが、Rocketboards.org の手順との違いは、デザイン名(Directory)と、u-boot-socfpga の tag 名(2021年1月1日時点)
Linux Kernel の Build
- Rockerboards.org の手順に従って、ファイルをダウンロードする。
- tag は、「socfpga-5.4.74-lts」に設定している (2021年1月1日時点)
- Device Tree ファイルを追加する。
- 追加した Device Tree ファイル「socfpga_cyclone_de0_nano_soc_FB.dts」の最後に以下を追加する。
- 「socfpga_cyclone_de0_nano_soc_FB.dtb」を Makefile に追加する。line 952 付近に追加した例を記載する。
dtb-$(CONFIG_ARCH_SOCFPGA) += \ socfpga_arria5_socdk.dtb \ socfpga_arria10_socdk_nand.dtb \ socfpga_arria10_socdk_qspi.dtb \ socfpga_arria10_socdk_sdmmc.dtb \ socfpga_cyclone5_chameleon96.dtb \ socfpga_cyclone5_mcvevk.dtb \ socfpga_cyclone5_socdk.dtb \ socfpga_cyclone5_de0_nano_soc.dtb \ socfpga_cyclone5_de0_nano_soc_FB.dtb \ socfpga_cyclone5_sockit.dtb \
- 次に、先ほどダウンロードした「altvipfb.c」を以下の Directoryにコピーする。
- ~/linux-socfpga/drivers/video/fbdev/.
- 「altvipfb.c」を編集
- line 220 の "dma_alloc_coherent()" の第一引数を NULL から &pdev->dev に変更
- line 177 に以下を追加
- 「altvipfb.c」が Build されるように、Makefileを編集
- ~/linux-socfpga/drivers/video/fbdev/Makefile
- line 14 付近に下記を追加
- 「altvipfb.c」が有効になるように、「~/linux-socfpga/drivers/video/fbdev/Kconfig」「~/linux-socfpga/arch/arm/configs/socfpga_defconfig」ファイルも変更
- ~/linux-socfpga/drivers/video/fbdev/Kconfig (line 222付近) に以下を追加
- ~/linux-socfpga/arch/arm/configs/socfpga_defconfig (line 121付近)に以下を追加
- 次に、Kernel , Device Tree の Build を行う
- 以下のファイルが生成されていることを確認する
- ~/linux-socfpga/arch/arm/boot/zImage
- ~/linux-socfpga/arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc_FB.dtb
- ~/linux-socfpga/modules_install
Root File System の Build
ここまでで、U-Boot, Linux Kernel, Driver/Module, Device Tree は作成できた。
次に、Root File System を作成する。
SD card への書き込み
あとは、SD card image ファイルを作成して、SD card に書き込む。
- 基本操作は、Rocketboards.org と同じだが、一部、生成されたファイル名が異なるので、その部分の操作が異なる。
- 異なる部分を赤字で示す。
生成された sdcard.img を、SDcard に書き込む。sdcard を umount 後に、ddコマンドで書き込む例。ここでは、SDcardが、/dev/sdc に割り当てられている例。
- sudo umount /dev/sdc*
- sudo dd bs=4M conv=sync if=sdcard.img of=/dev/sdc
root でログイン後に、「startxfce4」と打ち込むと、XFCE desktop が起動する。
おまけ:
上記の操作だと、最小限のソフトウエアしかインストールされていない。Python等もインストールしておきたい場合には、Yocto の Recipe ファイルを作成して、Root File System を生成する。
1. recipe 追加
下記 Recipe ファイルを追加して、bitbake コマンドを以下のように実行する。生成される 「core-image-xfce-some2-cyclone5.tar.gz」には、Python などの各種ソフトが入っている。
File1:
~/yocto/meta-openembedded/meta-xfce/recipes-core/images/core-image-xfce-some2.bb
File 2:
~/yocto/poky/meta/recipes-core/packagegroups/packagegroup-core-buildessential2.bb
bitbake コマンド
(「Root File System の Build」(前述)の最後のコマンド)生成されるファイル
SD card イメージ生成時には、「core-image-minimal-xfce-cyclone5.tar.gz」の代わりに、今回作成した「core-image-xfce-some2-cyclone5.tar.gz」ファイルに対して、tar コマンドを実行する。これで、DE10-nano上の Linux で、Python が使えるようになる。
(recipeの設定が原因などで、うまくいかない時等、一度、環境を Clean にしたくなる時がある。その時は、「bitbake -c clean core-image-xfce-some2 」と打ち込むと Clean になる)
2. sshd 有効化設定
sshd も起動しておいて、他端末から ssh で入れるようにしておく。
他端末から ssh でログインする時は、「ssh root@DE10-nanoのip-address」と打ち込む(例:ssh root@192.168.1.29)。 IP address は、Serial 端末か、HDMIモニターに表示しているターミナルから、ifconfig コマンドを打ち込めば確認できる。
* /etc/ssh/sshd_config (line 13) 編集(Port 22 有効化)
* sshd 起動コマンド
* 起動時に sshd 起動するように設定する(コマンド)
* IP address 確認方法 (DE10-nano上での操作)
Ethernet ケーブルを DE10-nano に接続後、起動。
root でログイン後に、ifconfig と打ち込む。赤字部分が IP address。
参照URLs:
- DE10nano向けLinux Kernel Build
https://qiita.com/eofz/items/3413cbdf804154bc150e - Rocketboards.org
https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries - Terasic DE10-nano
http://de10-nano.terasic.com/ - Intel Download Center
https://fpgasoftware.intel.com/20.1/?edition=lite - linux-socfpga
https://github.com/altera-opensource/linux-socfpga/
はじめまして。
返信削除CycloneVのクロス開発環境について色々調べていてこちらにたどり着きました。
わかりやすくてとてもありがたいです。
このサイトをリピートしていましたが、
U-Bootの Buildでbsp-create-settings \~~~
を実行していて
SEVERE: nios2-bsp-create-settings failed.
で止まってしまいました。
Embedded Development Suite Standard Edition 20.1 をインストールしていますが
ARM_DSは有償のため入れていません。SoCEDSのインストールが不完全なのが問題でしょうか。
ご意見をいただけると助かります。
コメントありがとうございます。
削除本投稿内容では、ARM_DSは必要ありませんので、
(1) 環境変数"QUARTUS_ROOTDIR"," SOCEDS_DEST_ROOT”. “QSYS_ROOTDIR”が設定されているか、PATHに${QUARTUS_ROOTDIR}/bin:${QUARTUS_ROOTDIR}/sopc_builder/bin も追加されているか、
(2) Quartus Lite Edition 20.1 がインストールされているか、
(3) "~/intelFPGA/20.1/embedded/embedded_command_shell.sh" 実行後、その Terminal上で、bsp-create-settings ... を実行しているか
ご確認いただければと思います。
はじめまして。
返信削除DE10-nano初心者です。
色々ヒントを頂戴しました。
ありがとうございます。
一つ質問ですが、今回のクロス環境ではSoCEDS20.1にARM-DSとLinaro LinuxToolchain
はインストールされましたか?
有償ライセンスとのことで私は導入できずにいます。どのようになさっているかアドバイスしていただければ幸いです。
コメントありがとうございます。
削除ARM-DSはインストールしていません。
手順「Build Tool Chain のインストールと環境設定」にありますように、Linaroはインストールする必要があります。
お答えいただきありがとうございます。
返信削除それと重複した書き込みをして失礼いたしました。
いただいたアドバイスで挑戦して、またご報告させていただきます。
教えていただいた通りPATHを設定して、ブランチを2020.07→02021.07に変えて、
返信削除# Configure and build U-Boot
make socfpga_cyclone5_defconfig
を実施したところ
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
YACC scripts/kconfig/zconf.tab.c
/bin/sh: 1: bison: not found
scripts/Makefile.lib:222: recipe for target 'scripts/kconfig/zconf.tab.c' failed
make[1]: *** [scripts/kconfig/zconf.tab.c] Error 127
Makefile:564: recipe for target 'socfpga_cyclone5_defconfig' failed
make: *** [socfpga_cyclone5_defconfig] Error 2
とエラーでとまりました。
"zconf.tab.c"はGithubでもコードが見つからりませんでした。
このようなトラブルとその解決はご経験ありますでしょうか?
もし何らかの情報がありましたらご教授いただけますと助かります。
すみません。
返信削除先ほどの件は
bisonとflexの二つを追加インストールで解決
$ sudo apt-get install bison
$ sudo apt-get install flex
の二つを追加インストールで乗り越えました。お騒がせしました。
たびたび申し訳ありません。
返信削除Root File System の Buildの中で、
git clone -b master https://github.com/altera-opensource/meta-altera-refdes.git
を実行したところ
remote: Repository not found.
fatal: repository 'https://github.com/altera-opensource/meta-altera-refdes.git/' not found
と返ってまいりました。2段階認証とPersonal access tokensではgit cloneできないのでしょうか。質問ばかりですみません。
Github を見ると、https://github.com/altera-opensource/meta-altera-refdes.git が無くなって、代わりに、https://github.com/altera-opensource/meta-intel-fpga-refdes になったようです。
削除Rocketboards.org の方も見てみたら、本ブログ投稿時点から、だいぶ手順が変更されていますね。
https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries
上記のURLをまずはお試しください。こちらのブログの内容は、折をみて更新したいと思います。内容が古くて申し訳ありません。
わざわざご確認いただいた上ご回答までいただきありがとうございます。
返信削除Rocketboardsの内容が変わったのは最近のようですね。
お恥ずかしながらRocketboardsのサイトに従い環境構築と再コンパイルを行っているのですが、今のところ最後までコンパイルが終了しないことが多く、終了してもカーネルイメージが100MB程度です。
しかも実際にSDに入れてもUARTも起動しないです。
途中ERRORが数個出ていますので、少し調べてみようと思います。
ありがとうございました。
>内容が古くて申し訳ありません。
とんでもありません。
全体の作業の流れさえ判らなかった私のような初心者としては、
試行錯誤の機会をいただき、ついでに少しだけ全体像が見えた気がします。
大感謝です。
大変に参考にさせて頂きました。有難うございます。
返信削除私もde10-nanoで遊んでみましたので、webに公開させて頂きたいのですが宜しいでしょうか?(ほとんど引用ばかりなのですが)
あと、このページのurlも参考としてupしても宜しいでしょうか?
よろしくお願い致します。
コメントありがとうございます。内容が古いので、お恥ずかしい限りですが、引用いただいて問題ございません。最新のRocketboards.org の内容も参考にしていただければと思います。よろしくお願い致します。
削除ご返事ありがとうございます。
削除参考にさせて頂いたおかげで、完ぺきではありませんが、
・FPGAは、Quartus 21.1&Plarform Designer で再ジェネレート可
・u-bootは、v2021.07
・Kernelは、v5.14.0
debian 11で、xfceまで動きました。
情報を公開して頂いて、本当に有難うございました。
役に立つかは不明ですが、上記の手順は、順番に公開させて頂きます。
よろしくお願い致します。