tag:blogger.com,1999:blog-35893876629752416492024-03-15T01:54:57.656+09:00Fun Multicores(1) 組み込みLinux 構築例、
(2) FreeRTOS を NiosII で動作させる例や、(3) NTTドコモ "AIエージェント" 及び "my daiz" / Alexa Voice Service / Google speech api / snips.ai / と接続できる XMOS社のスマートマイク開発キットとxCORE技術、ならびに、Raspberry Pi を使用した構築例を紹介します。Takashi Okawahttp://www.blogger.com/profile/16938940970477590822noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-3589387662975241649.post-30606918544646644622023-07-01T12:13:00.001+09:002023-07-02T13:48:32.632+09:00Ubuntu 20.04 "dell_smm_hwmon: unable to get SMM Dell signature" メッセージ表示後、起動しない件<p>Dell Precision 3650 Tower に Ubuntu 20.04 をインストールして使用していたが、"apt upgrade" にて、 Kernel 5.15.* にアップグレード後、正常に起動しない問題が発生した。</p><p>このエラーメッセージから、NVIDIA Driver の再インストールの対策を紹介しているページがなかったので、備忘録的に記載しておく。</p><p></p><ul style="text-align: left;"><li><b>ハードウェア</b>:Dell Precision 3650 Tower (NVIDIA graphic card有)</li><li><b>OS</b>: Ubuntu 20.04 (Kernel 5.15.*)</li><li><b>現象</b>:"dell_smm_hwmon: unable to get SMM Dell signature" メッセージ表示後、Ubuntu 20.04 のブート処理が進まない</li><li><b>原因</b>: NVIDIA のドライバーが古いままだったことが原因だったようだ。</li><li><b>対策</b>: NVIDIA のドライバーの削除と最新版のインストール(これは、Google検索すれば多くのページで紹介している。詳しくは他のページを是非ご参照されたし)</li></ul><div><br /></div><div><b>[問題解決手順]</b></div><p></p><div><ol style="text-align: left;"><li>Kernel 5.14.* で Ubuntu 20.04起動(GNU GRUB optionの、Advanced options for Ubuntu から選択)</li><li>NVIDIA Driver 番号の確認</li><ul><li>sudo apt update</li><li>sudo ubuntu-drivers devices</li><li>表示される nvidia driver のうち、"recommended" と記載のある番号をメモ<br />以下は、「530」が確認された例<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwS8Nv2Zw8nFt78Kgcx5XyTM9pxAVWoUKjHjiXsfahFbrvjkr3ggY3K-etjOIHDbDGU_ugnQ1Lkk1wX0yvxXVVLr16iUr8gA7Cyozcsz9r5jGdE9lyVpbAKtyA2jR2FBkUukTvD_lq-bPEV-ZFBFJIo-SCBZ6I36KSCF5C7CJTAFC17D5rSz7XSmKWJgY/s598/Screenshot%20from%202023-07-01%2011-47-26.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="362" data-original-width="598" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwS8Nv2Zw8nFt78Kgcx5XyTM9pxAVWoUKjHjiXsfahFbrvjkr3ggY3K-etjOIHDbDGU_ugnQ1Lkk1wX0yvxXVVLr16iUr8gA7Cyozcsz9r5jGdE9lyVpbAKtyA2jR2FBkUukTvD_lq-bPEV-ZFBFJIo-SCBZ6I36KSCF5C7CJTAFC17D5rSz7XSmKWJgY/w400-h243/Screenshot%20from%202023-07-01%2011-47-26.png" width="400" /></a></div><br /></li></ul><li>NVIDIA Driver を削除する</li><ul><li>sudo apt remove *nvidia*</li></ul><li>NVIDIA Driver をインストール (1. NVIDIA Driver 番号の確認の手順で確認した番号を入力。以下では、530 が確認された時の例)</li><ul><li>sudo apt install nvidia-driver-530</li></ul><li>Reboot</li><ul><li>sudo reboot</li></ul><li>Kernel 5.15.* で起動 (GNU GRUB optionの、Advanced options for Ubuntu から選択)</li></ol></div><p><br /></p><p><br /></p><p><br /></p>Takashi Okawahttp://www.blogger.com/profile/16938940970477590822noreply@blogger.com0tag:blogger.com,1999:blog-3589387662975241649.post-89667901472620685102020-12-28T11:17:00.460+09:002022-02-02T20:39:02.875+09:00DE10-Nano編: Linux Desktop "Xfce" 環境構築 ー Terasic社提供 Reference Design を使って、Yocto (Linux Root File System Build) とLinux Kernel Build <p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlAHhEfU8XgM2wQNyQY-WKvq35xmg84r-jyMiaFDIAdIbnXwGqfzjanPpaYTkJUbl9FddM2dnIAJjMKXI-npaFHR38nrvj5hoJvZaZ_bcAAEOLSCd7w51siCIxlBTYk94-X7339Jw_HZE/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1058" data-original-width="1390" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlAHhEfU8XgM2wQNyQY-WKvq35xmg84r-jyMiaFDIAdIbnXwGqfzjanPpaYTkJUbl9FddM2dnIAJjMKXI-npaFHR38nrvj5hoJvZaZ_bcAAEOLSCd7w51siCIxlBTYk94-X7339Jw_HZE/w399-h304/image.png" width="399" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: right;">(2021年1月1日時点の情報であることにご注意ください)</div><div class="separator" style="clear: both; text-align: left;"><br /></div><h2 style="clear: both; text-align: left;"><b>本ページで紹介する内容:</b></h2><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">DE10-nano ボード(Intel FPGA Cyclone 5 SoC)を使用して、下記を実現したい時の手順</div><p></p><div class="separator" style="clear: both;"><ol style="text-align: left;"><li>Desktop環境 (<a href="https://www.xfce.org/?lang=ja" target="_blank">Xfce</a>) を有効にした Linux を Build したい</li><li>ボード上の HDMI出力ポートから、モニターに出力したい</li><li>とにかく無料でやりたい。個人使用なので、Copyright, GPL については気にしない。</li></ol><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkgXH2ARASAG3QQZBh_JqPfRRQEzuCK8Os3J9xo8RuJqHOdVPUSBX7AWqOLG9y05S_pLVLsrVYpWoXZ_Eo3zBiKuaksK8Yclkz4c8WvNt4r4BSvAGdSLedk0H-w2_4_pvnl2ZThs3ZcT4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="459" data-original-width="258" height="538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkgXH2ARASAG3QQZBh_JqPfRRQEzuCK8Os3J9xo8RuJqHOdVPUSBX7AWqOLG9y05S_pLVLsrVYpWoXZ_Eo3zBiKuaksK8Yclkz4c8WvNt4r4BSvAGdSLedk0H-w2_4_pvnl2ZThs3ZcT4/w303-h538/image.png" width="303" /></a></div><br /><br /></div><p></p><div class="separator" style="clear: both; text-align: left;"><br /></div><h2 style="clear: both; text-align: left;"><b>手順概要:</b></h2><div class="separator" style="clear: both; text-align: left;"><ol style="text-align: left;"><li>FPGAデザインを、terasic社 Web-site からダウンロード</li><li>Intel社 Web-site からQuartus ツール(Version 20.1)をダウンロード & インストール</li><li><a href="https://github.com/altera-opensource/linux-socfpga">https://github.com/altera-opensource/linux-socfpga</a> (<span style="color: red;">tag</span>: socfpga-4.14.130-ltsi) から、"driver/video/fbdev/altvipfb.c" をダウンロード(<span style="color: red;">tag</span>に注意!)</li><li>以下の Rocketboards.org の手順に従い、Build を進めるが、いくつかのステップを変更 & いくつかのファイルを変更しながら作業を進める<br /><a href="https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries">https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries</a></li></ol></div><div class="separator" style="clear: both; text-align: left;"><br /></div><h2 style="clear: both; text-align: left;"><b>用意するもの:</b></h2><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>Terasic社 DE10-nano ボード(付属のUSBケーブルと電源ケーブル)</li><li>Ubuntu 18.04 ホスト・パソコン</li><li>SD card (16GB)</li><li>HDMIモニター、HDMIケーブル</li></ul><div class="separator" style="clear: both; text-align: left;"><br /></div><h2 style="text-align: left;"><b>FPGAデザインを、terasic社 Web-site からダウンロード</b></h2></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>DE-10 nano のページ中の "Resource" のページから、ボードの Revision A/B/C に対応した CDROM イメージをダウンロード<br /><a href="http://de10-nano.terasic.com/">http://de10-nano.terasic.com/</a></li></ul><br /><div class="separator" style="clear: both; display: inline; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIzzU7WX-0bmqXeso4vD6-BS8tTRYNeowhHac3AFFpH7GJWnytt86D3xx-TLJVOQFyvn2SGmB0YZB12N1TbjeJ481nRX7ZraNrxaOpaYFqM3QQVRyHGVp-pjM4nUJmknCCjTsDlGvvJfA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="782" data-original-width="2072" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIzzU7WX-0bmqXeso4vD6-BS8tTRYNeowhHac3AFFpH7GJWnytt86D3xx-TLJVOQFyvn2SGmB0YZB12N1TbjeJ481nRX7ZraNrxaOpaYFqM3QQVRyHGVp-pjM4nUJmknCCjTsDlGvvJfA/w577-h218/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-12-27+21.04.37.png" width="577" /></a></div></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgFTA_cDy1Ynm38u_3S7J5rCt93HIIyP7QYsZTW7DU1Mjo-anVZ3ROi6ungZ7AVdvlrxqnJLCdJa0M9rDnPULvi-u8uliKP53NCmr9FX0eLA4M5d3pM2HbQu5p5sXsnrCabYXoxVIilY/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="678" data-original-width="960" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgFTA_cDy1Ynm38u_3S7J5rCt93HIIyP7QYsZTW7DU1Mjo-anVZ3ROi6ungZ7AVdvlrxqnJLCdJa0M9rDnPULvi-u8uliKP53NCmr9FX0eLA4M5d3pM2HbQu5p5sXsnrCabYXoxVIilY/w396-h280/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-12-27+21.08.36.png" width="396" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZnOWEhg2ktOrJCBCPb5ucNFRDAX3IiHv3SAzhLGmi0q0YZ_qMHz0BgezkIiYfhHbtmlZBBTORnnyHXR6Q1GltWXTkMD9kFYL9y6OBZs2daIt4XxDd05QJ4QASGuzGe00zfKuLfNf1d40/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="652" data-original-width="978" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZnOWEhg2ktOrJCBCPb5ucNFRDAX3IiHv3SAzhLGmi0q0YZ_qMHz0BgezkIiYfhHbtmlZBBTORnnyHXR6Q1GltWXTkMD9kFYL9y6OBZs2daIt4XxDd05QJ4QASGuzGe00zfKuLfNf1d40/w367-h244/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-12-27+21.08.54.png" width="367" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUaDNTzDL8WBPH6SozoNy4abY0GVRwy_BJrKYF683Y9V1O-8sB3NhC4Wwpgfvc9HKE8RTMJQUtPRvBMAUWdvQe3wlaroTxxqf0s4FB6OOnx8cdCcVBHt4wgfNoUQlYbWNJAdcOktbsv-4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="578" data-original-width="1354" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUaDNTzDL8WBPH6SozoNy4abY0GVRwy_BJrKYF683Y9V1O-8sB3NhC4Wwpgfvc9HKE8RTMJQUtPRvBMAUWdvQe3wlaroTxxqf0s4FB6OOnx8cdCcVBHt4wgfNoUQlYbWNJAdcOktbsv-4/w596-h255/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-12-27+21.09.11.png" width="596" /></a></div><br /><br /></div><ul><li style="text-align: left;">Rev. C の場合のダウンロードファイル名:<br />”DE10-Nano_v.1.3.8_HWrevC_SystemCD.zip”</li><li style="text-align: left;">解凍して、以下のフォルダーを、作業 Directory (今回は、$HOME)にコピーする<br />「Demonstrations/SoC_FPGA/DE10_NANO_SoC_FB」</li></ul><br /><br /><h2><span style="text-align: left;"><b>Intel社 Web-site からQuartus ツール(Version 20.1)の「Linux版」をダウンロード & インストール</b></span></h2><ul><li style="text-align: left;">Quartus Prime ライト・エディッション Version 20.1 をダウンロード<br /><a href="https://fpgasoftware.intel.com/20.1/?edition=lite">https://fpgasoftware.intel.com/20.1/?edition=lite</a></li><ul><li style="text-align: left;">個別ダウンロードをお勧めします。</li></ul><li style="text-align: left;">ダウンロードした "*.run" ファイルを実行して、Home Directory ($HOME)にインストール(chmod +x *.run; ./*.run)</li></ul></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJtfA-BEin5k8HbGDZkAbyUIVMXgas_cahRkdaI12nHi7UwRaaxHdRFMk-2YqACu7QtKdz1rWaR2bIsyPzoV4LTDMrEv-SZ2kd2i37frHZHPFCSRqIxB1FZhEXftTjNTybC7fyGN2Krxk/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1650" data-original-width="1614" height="447" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJtfA-BEin5k8HbGDZkAbyUIVMXgas_cahRkdaI12nHi7UwRaaxHdRFMk-2YqACu7QtKdz1rWaR2bIsyPzoV4LTDMrEv-SZ2kd2i37frHZHPFCSRqIxB1FZhEXftTjNTybC7fyGN2Krxk/w438-h447/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-12-27+21.20.30.png" width="438" /></a></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>Embedded Development Suite Standard Edition 20.1 をダウンロード<br /><a href="https://fpgasoftware.intel.com/soceds/20.1/?edition=standard&platform=linux&download_manager=direct">https://fpgasoftware.intel.com/soceds/20.1/?edition=standard&platform=linux&download_manager=direct</a></li><li style="text-align: left;">ダウンロードした "*.run" ファイルを実行して、Home Directory ($HOME)にインストール(chmod +x *.run; ./*.run)</li></ul><div><br /></div><div><ul style="text-align: left;"><li>Ubuntu 18.04 ホスト・マシンの ~/.bashrc に以下の環境変数を設定しておく</li><ul><li>export QUARTUS_ROOTDIR=~/intelFPGA_lite/20.1/quartus</li><li>export SOCEDS_DEST_ROOT=~/intelFPGA/20.1/embedded</li><li>export QSYS_ROOTDIR=${QUARTUS_ROOTDIR}/sopc_builder/bin</li><li>export PATH=${PATH}:\<br />${QUARTUS_ROOTDIR}/bin:\<br />${QUARTUS_ROOTDIR}/sopc_builder/bin</li></ul></ul></div></div><br /><b><br /></b></div><h2 style="text-align: left;"><b><a href="https://github.com/altera-opensource/linux-socfpga">https://github.com/altera-opensource/linux-socfpga</a> (<span style="color: red;">tag</span>: socfpga-4.14.130-ltsi) から、"driver/video/fbdev/altvipfb.c" をダウンロード(<span style="color: red;">tag</span>に注意!)</b></h2><br /></div><ul style="text-align: left;"><li>生憎、linux-socfpga 5.* Version から "<b>driver/video/fbdev/altvipfb.c</b>" が削除されている。</li><li>しかし、Terasic社提供のハードウエア・デザインをそのまま使用する場合には、前述のドライバー(<b>altvipfb.c</b>)を使うのが手っ取り早い。</li><li>一方、linux-socfpga 5.* 内で「<b>altvipfb.c</b>」を動作させるには、一部修正が必要(後述)</li></ul><ul style="text-align: left;"><li>URL:<a href="https://github.com/altera-opensource/linux-socfpga/blob/socfpga-4.14.130-ltsi/drivers/video/fbdev/altvipfb.c">https://github.com/altera-opensource/linux-socfpga/blob/socfpga-4.14.130-ltsi/drivers/video/fbdev/altvipfb.c</a></li></ul><p></p><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6OI-_ZPazamvuHdo0rVYFifjNXBHc3L5rQbRKOY1QRTYPG4U2dPMkyIh-ZjCrGOY-5-Lm4NP1CPesO5IRaVdn_1Vlt4nidZsMOnBtKANXlwaa7AmSLRdmrTGnMFaUbE3qNaQTUqmjIDo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1068" data-original-width="1976" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6OI-_ZPazamvuHdo0rVYFifjNXBHc3L5rQbRKOY1QRTYPG4U2dPMkyIh-ZjCrGOY-5-Lm4NP1CPesO5IRaVdn_1Vlt4nidZsMOnBtKANXlwaa7AmSLRdmrTGnMFaUbE3qNaQTUqmjIDo/w576-h312/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-12-27+21.41.14.png" width="576" /></a></div><br /><br /></div><h2 style="text-align: left;"><b><span style="font-size: large;">Build !</span></b></h2><div>準備作業終了。ここから、Build 関連作業を進めていく。</div><div><br /></div><div>基本的には、Rocketboards.org に記載されている公式の方法(下記URL)に沿って作業を進める。もちろん、以下のページは DE10-Nano向けの記載ではないので、一部手順は異なる。</div><div><a href="https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries">https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries</a></div><div><br /></div><div><br /></div><h2 style="text-align: left;"><b>Build Tool Chain のインストールと環境設定</b></h2><div><ul style="text-align: left;"><li>この作業は、Rocketboards.org の記載そのまま。ここでは、$HOME (~/)にインストールしている。</li><ul><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); color: #303030; font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;">cd ~/.
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-eabi/gcc-linaro-7.5.0-2019.12-x86_64_arm-eabi.tar.xz
tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-eabi.tar.xz
export PATH=~/gcc-linaro-7.5.0-2019.12-x86_64_arm-eabi/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-eabi-</pre></li></ul></ul><b><div><b><br /></b></div></b><h2 style="text-align: left;"><b>U-Bootの Build</b></h2></div><div><ul style="text-align: left;"><li>先ほど terasic社のページからダウンロードした「DE10_NANO_SoC_FB」を使用する。以下は、DE10_NANO_SoC_FBを $HOMEにコピーした場合の例。</li><li>以下に手順を記載するが、Rocketboards.org の手順との違いは、デザイン名(Directory)と、u-boot-socfpga の tag 名(2021年1月1日時点)</li><ul><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #303030;"><pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;">~/intelFPGA/20.1/embedded/embedded_command_shell.sh</pre></span></pre></li><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #303030;">cd ~/</span><span style="color: red;">DE10_NANO_SoC_FB/</span><span style="color: #303030;">
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Convert handoff data to device tree format </span>
mkdir -p software/bootloader
bsp-create-settings \
--type spl \
--bsp-dir software/bootloader \
--preloader-settings-dir "hps_isw_handoff/soc_system_hps_0" \
--settings software/bootloader/settings.bsp
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Get the U-Boot source code </span>
cd software/bootloader
git clone https://github.com/altera-opensource/u-boot-socfpga -b </span><span><span style="color: red;">socfpga_v2020.07</span><span style="color: #303030;"><br />cd u-boot-socfpga
</span></span><span style="color: #303030;">
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Generate handoff header files </span><span style="color: #303030;">
./arch/arm/mach-socfpga/qts-filter.sh cyclone5 ../../../ ../ ./board/altera/cyclone5-socdk/qts/
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Configure and build U-Boot </span><span style="color: #303030;">
make socfpga_cyclone5_defconfig
make -j 24</span></pre></li><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #444444;">cd ~/DE10_NANO_SoC_FB/../.
wget https://releases.rocketboards.org/release/2020.07/gsrd/cv_gsrd/u-boot.txt</span>
<span style="color: red;">./DE10_NANO_SoC_FB</span><span style="color: #303030;">/software/bootloader/u-boot-socfpga/tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Cyclone V script" -d u-boot.txt u-boot.scr</span></pre></li></ul></ul></div><div><span style="color: #303030; font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><br /></span></span></div><div><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><br /></span></span></div><h2 style="text-align: left;"><span style="font-family: inherit;"><span style="white-space: pre;"><b>Linux Kernel の Build </b></span></span></h2><div><ul style="text-align: left;"><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">Rockerboards.org の手順に従って、ファイルをダウンロードする。</span></span></li><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">tag は、「socfpga-5.4.74-lts」に設定している (2021年1月1日時点)</span></span></li><ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;"><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Get Linux source code</span><span style="color: #303030;">
cd ~/.
git clone https://github.com/altera-opensource/linux-socfpga -b </span><span><span style="color: red;">socfpga-5.4.74-lts</span><span style="color: #303030;"><br />cd linux-socfpga
</span></span></pre></span></span></li></ul></ul><ul style="text-align: left;"><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">Device Tree ファイルを追加する。</span></span></li></ul><div style="text-align: left;"><ul style="text-align: left;"><ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #303030;">cd ~/linux-socfpga/arch/arm/boot/dts/
cp socfpga_cyclone5_de0_nano_soc.dts socfpga_cyclone5_de0_nano_soc_FB.dts<br /></span></pre></span></span></li></ul></ul></div><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><br /></span></span><ul style="text-align: left;"><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;">追加した Device Tree ファイル「socfpga_cyclone_de0_nano_soc_FB.dts</span></span>」の最後に以下を追加する。</li></ul><ul style="text-align: left;"><ul><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); color: #444444; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><pre style="border-radius: 0px; border: medium none; box-sizing: inherit; color: black; line-height: 1.8; margin-bottom: 0px; margin-top: 0px; padding: 0px;"><span style="font-family: inherit;">&base_fpga_region {
ranges = <0x00000000 0xff200000 0x00200000>;
alt_vip_vfr_hdmi: vip@0x100031000 {
compatible = "ALTR,vip-frame-reader-14.0", "ALTR,vip-frame-reader-9.1";
reg = <0x00031000 0x00000080>;
max-width = <1024>;
max-height = <768>;
bits-per-color = <8>;
colors-per-beat = <4>;
beats-per-pixel = <1>;
mem-word-width = <128>;
};
};</span></pre></pre></li></ul></ul><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace" style="color: #444444;"><span style="font-size: 14.4px; white-space: pre;"><br /></span></span><ul style="text-align: left;"><li><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace" style="font-size: small;"><span style="white-space: pre;"><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace; white-space: normal;"><span style="white-space: pre;">「socfpga_cyclone_de0_nano_soc_FB.dtb</span></span><span style="font-family: "Hiragino Kaku Gothic ProN"; white-space: normal;">」を Makefile に追加する。line 952 付近に追加した例を記載する。</span></span></span></li><ul><li><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace"><span style="font-size: 14.4px; white-space: pre;"><span style="color: #444444; font-family: "Hiragino Kaku Gothic ProN"; font-size: medium; white-space: normal;"><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;">~/linux-socfpga/arch/arm/boot/dts/Makefile</pre></span></span></span></li><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><table class="highlight tab-size js-file-line-container" data-paste-markdown-skip="" data-tab-size="8" style="background-color: white; border-collapse: collapse; border-spacing: 0px; color: #24292e; font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px; tab-size: 8;"><tbody style="box-sizing: border-box;"><tr style="box-sizing: border-box;"><td class="blob-code blob-code-inner js-file-line highlighted" id="LC952" style="background-color: var(--color-blob-line-highlight-bg); box-shadow: inset 2px 0 0 var(--color-blob-line-highlight-border); box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;"><span class="pl-smi" style="box-sizing: border-box;">dtb-$(CONFIG_ARCH_SOCFPGA)</span> += <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="953" id="L953" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC953" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_arria5_socdk.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="954" id="L954" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC954" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_arria10_socdk_nand.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="955" id="L955" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC955" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_arria10_socdk_qspi.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="956" id="L956" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC956" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_arria10_socdk_sdmmc.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="957" id="L957" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC957" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_cyclone5_chameleon96.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="958" id="L958" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC958" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_cyclone5_mcvevk.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="959" id="L959" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC959" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_cyclone5_socdk.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="960" id="L960" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC960" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span><span style="color: black;">socfpga_cyclone5_de0_nano_soc.dtb </span><span class="pl-cce" style="box-sizing: border-box;"><span style="color: black;">\
</span><span style="color: red;">socfpga_cyclone5_de0_nano_soc_FB.dtb</span><span style="color: black;"> </span><span class="pl-cce" style="box-sizing: border-box; color: black;">\</span><span style="color: black;">
</span></span></span></td></tr><tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="961" id="L961" style="box-sizing: border-box; cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; padding: 0px 10px; text-align: left; user-select: none; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC961" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre;"><span style="color: black;">socfpga_cyclone5_sockit.dtb <span class="pl-cce" style="box-sizing: border-box;">\</span></span></td></tr></tbody></table>
</pre></li></ul></ul><div><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><br /></span></span></div></div><div><ul style="text-align: left;"><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">次に、先ほどダウンロードした「<b style="font-family: "Hiragino Kaku Gothic ProN"; white-space: normal;">altvipfb.c</b>」を以下の Directoryにコピーする。</span></span></li><ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">~/linux-socfpga/drivers/video/fbdev/.
</span></span></li></ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">「<b style="font-family: "Hiragino Kaku Gothic ProN"; white-space: normal;">altvipfb.c</b>」を編集</span></span></li></ul><div><ul><ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">line 220 の "dma_alloc_coherent()" の第一引数を NULL から &pdev->dev に変更</span></span></li><ul><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); color: #444444; font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span><span style="color: black;">< fbmem_virt = dma_alloc_coherent(NULL,
---
> fbmem_virt = dma_alloc_coherent(</span><span style="color: red;">&pdev->dev</span><span style="color: black;">,</span></span></pre></li></ul></ul></ul></div><ul style="text-align: left;"><ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">line 177 に以下を追加</span></span></li></ul></ul><ul style="text-align: left;"><ul><ul><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); color: #444444; font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: black;">info->var.pixclock = 6734;
info->var.left_margin = 148;
info->var.right_margin = 88;
info->var.upper_margin = 36;
info->var.lower_margin = 4;
info->var.hsync_len = 44;
info->var.vsync_len = 5;</span></pre></li></ul></ul></ul><div><br /></div><ul style="text-align: left;"><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">「altvipfb.c」が Build されるように、Makefileを編集</span></span></li><ul><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">~/linux-socfpga/drivers/video/fbdev/Makefile</span></span></li><li><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="white-space: pre;">line 14 付近に下記を追加</span></span></li></ul></ul><ul style="text-align: left;"><ul><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span><span style="color: #444444;">obj-$(CONFIG_FB_ALTERA_VIP_FB) += altvipfb.o
altvipfb_drv-objs := altvipfb.o</span></span></pre></li></ul></ul><div><br /><ul style="text-align: left;"><li><span style="font-family: inherit;"><span style="white-space: pre;">「altvipfb.c」が有効になるように、「~/linux-socfpga</span><span style="white-space: pre;">/drivers/video/fbdev/Kconfig</span>」「~/linux-socfpga/arch/arm/configs/socfpga_defconfig」ファイルも変更</span></li></ul><ul style="text-align: left;"><ul><li><span style="font-family: inherit;"><span style="white-space: pre;">~/linux-socfpga</span><span style="white-space: pre;">/drivers/video/fbdev/Kconfig (line 222付近) に以下を追加</span></span></li></ul></ul><div><ul style="text-align: left;"><ul><li><span><span style="color: #444444; white-space: pre;"><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;">config FB_ALTERA_VIP_FB<br /> tristate "Altera VIP Frame Buffer framebuffer support"<br /> depends on FB<br /> select FB_CFB_FILLRECT<br /> select FB_CFB_COPYAREA<br /> select FB_CFB_IMAGEBLIT<br /> ---help---<br /> This driver supports the Altera Video and Image Processing(VIP)<br /> Frame Buffer. This core driver only supports Arria 10 HW and newer<br /> families of FPGA<br /><br /></pre></span></span></li></ul></ul><div><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><br /></span></span></div><ul style="text-align: left;"><ul><li><span><span style="font-family: inherit; white-space: pre;">~/linux-socfpga/arch/arm/configs/socfpga_defconfig (line 121付近)に以下を追加</span></span></li><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="white-space: normal;"><span style="color: #444444; font-family: inherit;">CONFIG_FB_ALTERA_VIP_FB=y</span></span></pre></li></ul></ul></div></div></div><div><div><br /></div><ul style="text-align: left;"><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">次に、Kernel , Device Tree の Build を行う</span></li><ul><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: #444444;"><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;">cd ~/linux-socfpga/<br />make socfpga_defconfig
make -j 24 zImage dtbs modules
make modules_install INSTALL_MOD_PATH=modules_install
rm -rf modules_install/lib/modules/*/build
rm -rf modules_install/lib/modules/*/source</pre></span></li></ul></ul><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: #333333;"><br /></span></div></div><div><ul style="text-align: left;"><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">以下のファイルが生成されていることを確認する</span></li><li>~/linux-socfpga/arch/arm/boot/zImage</li><li>~/linux-socfpga/arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc_FB.dtb</li><li>~/linux-socfpga/modules_install</li></ul></div><div><br /></div><div><br /></div><div><br /></div><h2 style="text-align: left;">Root File System の Build</h2><div><br /></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">ここまでで、U-Boot, Linux Kernel, Driver/Module, Device Tree は作成できた。</span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">次に、Root File System を作成する。</span></div><div><ul style="text-align: left;"><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">基本操作は、<a href="https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries" target="_blank">Rocketboards.org</a> と同じですが、一部、XFCE を有効にするために、操作を変更。</span></li><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: red;">赤字</span><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">部分が、</span><a href="https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries" style="font-family: -apple-system, "Segoe UI", "Helvetica Neue", "Hiragino Kaku Gothic ProN", メイリオ, meiryo, sans-serif;" target="_blank">Rocketboards.org</a><span face="-apple-system, "Segoe UI", "Helvetica Neue", "Hiragino Kaku Gothic ProN", メイリオ, meiryo, sans-serif"> と異なる操作。</span></li><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #303030;">cd <span style="color: red;">~/</span>
mkdir yocto && cd yocto
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Clone required Yocto git trees </span>
git clone -b zeus https://git.yoctoproject.org/git/poky.git
git clone -b zeus https://git.openembedded.org/meta-openembedded
git clone -b master https://github.com/kraj/meta-altera.git
git clone -b master https://github.com/altera-opensource/meta-altera-refdes.git</span></pre></span></li></ul><div><span style="color: #444444; font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px;"><br /></span></span></div><ul style="text-align: left;"><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span><span style="color: #444444; white-space: normal;"># meta-altera-refdes/conf/layers.conf を編集<br /></span><span style="white-space: normal;"><span style="color: #444444;"># LAYERSERIES_COMPAT_meta-altera-refdes に "zeus" を追加</span><br /><span style="color: red;">sed -i "s/dunfell gatesgarth/zeus dunfell gatesgarth/"</span></span></span><span style="color: red;"> \
meta-altera-refdes/conf/layer.conf</span></pre></li></ul><div><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px;"><br /></span></span></div><ul style="text-align: left;"><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #303030;"><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Run script to initialize the build environment for bitbake</span>
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Note: You will be redirect to "build" folder once you execute the command below</span>
source poky/oe-init-build-env
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Remove default settings imported from template</span>
sed -i /MACHINE\ \?\?=\ \"qemux86-64\"/d conf/local.conf
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Use systemd</span>
echo 'DISTRO_FEATURES_append = " systemd"' >> conf/local.conf
echo 'VIRTUAL-RUNTIME_init_manager = "systemd"' >> conf/local.conf
<span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Use the LTS kernel and set version</span>
echo 'PREFERRED_PROVIDER_virtual/kernel = "linux-altera-lts"' >> conf/local.conf
echo 'PREFERRED_VERSION_linux-altera-lts = "</span><span style="color: red;">5.4%</span><span style="color: #303030;">"' >> conf/local.conf
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Build additional rootfs type</span><span style="color: #303030;">
echo 'IMAGE_FSTYPES += "tar.gz"' >> conf/local.conf
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Settings for bblayers.conf</span><span style="color: #303030;">
echo 'BBLAYERS += " ${TOPDIR}/../meta-altera "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../meta-altera-refdes "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../meta-openembedded/meta-oe "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../meta-openembedded/meta-networking "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../meta-openembedded/meta-python "' >> conf/bblayers.conf
</span><span style="color: red;">echo 'BBLAYERS += " ${TOPDIR}/../meta-openembedded/meta-xfce "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../meta-openembedded/meta-gnome "' >> conf/bblayers.conf
echo 'BBLAYERS += " ${TOPDIR}/../meta-openembedded/meta-multimedia "' >> conf/bblayers.conf</span><span style="color: #303030;"><br /><br /></span></pre></li></ul><div><span style="font-family: Bitstream Vera Sans Mono, Andale Mono, monospace;"><span style="font-size: 14px; white-space: pre;"><br /></span></span></div><ul style="text-align: left;"><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Set the MACHINE, only at a time to avoid build conflict</span><span style="color: #303030;">
echo "MACHINE = \"cyclone5\"" >> conf/local.conf
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Ensure we build in all kernel-modules</span><span style="color: #303030;">
echo "MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += \"kernel-modules\"" >> conf/local.conf
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Build rootfs image (3時間前後かかります)</span><span style="color: #303030;">
bitbake </span><span style="color: red;">core-image-minimal-xfce</span></pre></li></ul></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><h2 style="text-align: left;"><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">SD card への書き込み</span></h2><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">あとは、SD card image ファイルを作成して、SD card に書き込む。</span></div><div><ul style="text-align: left;"><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">基本操作は、<a href="https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries" target="_blank">Rocketboards.org</a> と同じだが、一部、生成されたファイル名が異なるので、その部分の操作が異なる。</span></li><li>異なる部分を<span style="color: red;">赤字</span>で示す。</li><li><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); font-family: "Bitstream Vera Sans Mono", "Andale Mono", monospace; font-size: 14px; line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><span style="color: #303030;"><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Create folder to keep the SD card binaries</span>
cd </span><span style="color: red;">~/</span><span style="color: #303030;">
mkdir sd_card && cd sd_card
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Get SD card creation script</span><span style="color: #303030;">#
wget https://releases.rocketboards.org/release/2020.05/gsrd/tools/make_sdimage_p3.py
chmod +x make_sdimage_p3.py
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Get SPL image</span><span style="color: #303030;">#
cp </span><span style="color: red;">~/DE10_NANO_SoC_FB</span><span style="color: #303030;">/software/bootloader/u-boot-socfpga/u-boot-with-spl.sfp .
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Prepare FAT partition contents</span><span style="color: #303030;">
mkdir fat && cd fat
cp </span><span style="color: red;">~/</span><span style="color: #303030;">linux-socfpga/arch/arm/boot/zImage .
cp </span><span style="color: red;">~/</span><span style="color: #303030;">linux-socfpga/arch/arm/boot/dts/</span><span style="color: red;">socfpga_cyclone5_de0_nano_soc_FB.dtb ./socfpga_cyclone5_socdk.dtb</span><span style="color: #303030;">
cp </span><span style="color: red;">~/DE10_NANO_SoC_FB</span><span style="color: #303030;">/output_files/*.rbf .<br />cp </span><span style="color: red;">~/</span><span style="color: #303030;">u-boot.scr .
mkdir extlinux && cd extlinux
wget https://releases.rocketboards.org/release/2020.07/gsrd/cv_gsrd/extlinux.conf
cd ../..
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Prepare Rootfs partition contents</span><span style="color: #303030;">#
mkdir rootfs && cd rootfs
sudo tar xf </span><span style="color: red;">~/</span><span style="color: #303030;">yocto/build/tmp/deploy/images/cyclone5/</span><span style="color: red;">core-image-minimal-xfce</span><span style="color: #303030;">-cyclone5.tar.gz<br />sudo rm -rf lib/modules/*
sudo cp -r </span><span style="color: red;">~/</span><span style="color: #303030;">linux-socfpga/modules_install/lib/modules/* lib/modules/
cd ..
</span><span class="foswikiBrownFG" style="background: none 0% 0% repeat scroll transparent; border: 0px none; color: #996633; margin: 0px; outline: currentcolor none 0px; padding: 0px;"># Build SD card image</span><span style="color: #303030;">#
sudo python3 make_sdimage_p3.py -f \
-P u-boot-with-spl.sfp,num=3,format=raw,size=10M,type=A2 \
-P rootfs/*,num=2,format=ext2,size=1500M \
-P fat/*,num=1,format=fat32,size=500M -s 2G \
-n sdcard.img</span></pre></li></ul><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div>生成された sdcard.img を、SDcard に書き込む。sdcard を umount 後に、ddコマンドで書き込む例。ここでは、SDcardが、/dev/sdc に割り当てられている例。</div><div><ul style="text-align: left;"><li>sudo umount /dev/sdc*</li><li>sudo dd bs=4M conv=sync if=sdcard.img of=/dev/sdc</li></ul></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div>その後、SD card をDE10-nanoに差し込んで、電源を入れれば、終了。</span></div><div>root でログイン後に、「startxfce4」と打ち込むと、XFCE desktop が起動する。</div><div><ul style="text-align: left;"><li><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><div class="separator" style="clear: both; text-align: center;"></div></span></li></ul><div class="separator" style="clear: both; color: #333333; display: inline; font-family: -apple-system, "Segoe UI", "Helvetica Neue", "Hiragino Kaku Gothic ProN", メイリオ, meiryo, sans-serif; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2zQqjhARiby3xx7m1rFVO0tI7bzawGtSkJ4ptbxZzryQDTvMBC1sFGMdcgLfzw_Ur21NrJ7WL205pSZsPFbUUCfQapuUbdYjfyvPdN0dh5LghNCe20ssOp-orpYQR92f0CgJBBBWrIs/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="826" data-original-width="464" height="459" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2zQqjhARiby3xx7m1rFVO0tI7bzawGtSkJ4ptbxZzryQDTvMBC1sFGMdcgLfzw_Ur21NrJ7WL205pSZsPFbUUCfQapuUbdYjfyvPdN0dh5LghNCe20ssOp-orpYQR92f0CgJBBBWrIs/w258-h459/DSC_2779.JPG" width="258" /></a></div><br style="color: #333333; font-family: -apple-system, "Segoe UI", "Helvetica Neue", "Hiragino Kaku Gothic ProN", メイリオ, meiryo, sans-serif;" /></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: #333333;"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: #333333;"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><h2 style="text-align: left;"><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><b>おまけ:</b></span></h2><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">上記の操作だと、最小限のソフトウエアしかインストールされていない。Python等もインストールしておきたい場合には、Yocto の Recipe ファイルを作成して、Root File System を生成する。</span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><h3 style="text-align: left;"><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">1. recipe 追加</span></h3><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div>下記 Recipe ファイルを追加して、bitbake コマンドを以下のように実行する。生成される 「core-image-xfce-some2-cyclone5.tar.gz」には、Python などの各種ソフトが入っている。</div><div><br /></div><div><br /></div><h4 style="text-align: left;"><b>File1</b>:</h4><div>~/yocto/meta-openembedded/meta-xfce/recipes-core/images/core-image-xfce-some2.bb<br /></div><div><br /></div><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em; text-align: left;"><span style="white-space: normal;"><span style="color: #444444; font-family: inherit;">DESCRIPTION = "A XFCE demo image 2."<br /><br />IMAGE_INSTALL = "packagegroup-core-boot \<br /> packagegroup-core-ssh-openssh \<br /> packagegroup-core-apt \<br /> packagegroup-core-buildessential2 \<br /> packagegroup-core-x11 \<br /> packagegroup-xfce-base \<br /> kernel-modules \<br />"<br /><br />inherit distro_features_check<br />REQUIRED_DISTRO_FEATURES = "x11"<br /><br />IMAGE_LINGUAS ?= " "<br /><br />LICENSE = "MIT"<br /><br />export IMAGE_BASENAME = "core-image-xfce-some2"</span></span></pre></div><div><br /></div><div><br /></div><h4 style="text-align: left;"><b>File 2:</b></h4><div>~/yocto/poky/meta/recipes-core/packagegroups/packagegroup-core-buildessential2.bb</div><div><br /></div><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em; text-align: left;"><span style="white-space: normal;"><span style="color: #444444; font-family: inherit;">#<br /># Copyright (C) 2007 OpenedHand Ltd.<br /># Copyright (C) 2012 Red Hat, Inc.<br />#<br /><br />SUMMARY = "Essential build dependencies2"<br /><br />inherit packagegroup<br /><br />RDEPENDS_packagegroup-core-buildessential2 = "\<br /> autoconf \<br /> automake \<br /> binutils \<br /> binutils-symlinks \<br /> cpp \<br /> cpp-symlinks \<br /> gcc \<br /> gcc-symlinks \<br /> g++ \<br /> g++-symlinks \<br /> gettext \<br /> make \<br /> cmake \<br /> libstdc++ \<br /> libstdc++-dev \<br /> libtool \<br /> pkgconfig \<br /> file \<br /> git \<br /> gdb \<br /> python \<br /> python3 \<br /> i2c-tools \<br /> "<br /><br /></span></span></pre></div><div><br /></div><p></p><p></p><h4 style="text-align: left;">bitbake コマンド</h4>(「Root File System の Build」(前述)の最後のコマンド)<p></p><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em; text-align: left;"><span style="color: #444444;"><span><span style="white-space: normal;">bitbake </span></span>core-image-xfce-some2</span></pre></div><div><br /></div><div><br /></div><h4 style="text-align: left;">生成されるファイル</h4><div><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><div><span style="color: #444444;">~/yocto/build/tmp/deploy/images/cyclone5/core-image-xfce-some2-cyclone5.tar.gz</span></div></pre></div></div><div> </div><div>SD card イメージ生成時には、「core-image-minimal-xfce-cyclone5.tar.gz」の代わりに、今回作成した「<span style="font-family: inherit;">core-image-xfce-some2-cyclone5.tar.gz</span>」ファイルに対して、tar コマンドを実行する。これで、DE10-nano上の Linux で、Python が使えるようになる。 </div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div>(recipeの設定が原因などで、うまくいかない時等、一度、環境を Clean にしたくなる時がある。その時は、「bitbake <span style="color: red;">-c clean</span> core-image-xfce-some2 」と打ち込むと Clean になる)</div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><h3 style="text-align: left;"><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">2. sshd 有効化設定</span></h3><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">sshd も起動しておいて、他端末から ssh で入れるようにしておく。</span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><br /></span></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">他端末から ssh でログインする時は、「</span>ssh root@DE10-nanoのip-address」と打ち込む(例:ssh root@192.168.1.29)。 IP address は、Serial 端末か、HDMIモニターに表示しているターミナルから、ifconfig コマンドを打ち込めば確認できる。</div><div><br /></div><h4 style="text-align: left;"><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">* /etc/ssh/sshd_config (line 13) 編集(Port 22 有効化)</span></h4><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><div style="white-space: normal;"><span style="color: #444444; font-family: inherit;">< #Port 22</span></div><div style="white-space: normal;"><span style="color: #444444; font-family: inherit;">----</span></div><div style="white-space: normal;"><span style="color: #444444; font-family: inherit;">> Port 22</span></div></pre></div><div><br /></div></span></div><h4 style="text-align: left;"><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif">* sshd 起動コマンド</span></h4><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><div style="white-space: normal;"><span style="color: #444444; font-family: inherit;">systemctl start sshd</span></div></pre></div><div><br /></div></span></div><h4 style="text-align: left;">* 起動時に sshd 起動するように設定する(コマンド)</h4><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif"><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><div style="white-space: normal;"><span style="color: #444444; font-family: inherit;">systemctl enable sshd</span></div></pre></div><div><br /></div></span></div><div><br /></div><h4 style="text-align: left;">* IP address 確認方法 (DE10-nano上での操作)</h4><div>Ethernet ケーブルを DE10-nano に接続後、起動。</div><div>root でログイン後に、ifconfig と打ち込む。赤字部分が IP address。</div><div><br /></div><div><pre style="background: none 0% 0% repeat scroll rgb(246, 246, 246); border: 1px solid rgb(221, 221, 221); line-height: 1.385em; margin-bottom: 0px; margin-top: 0px; outline: currentcolor none 0px; overflow: auto hidden; padding: 0.5em;"><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;">root@cyclone5:~# ifconfig</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><br /></span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;">eth0<span class="Apple-converted-space"> </span>Link encap:Ethernet<span class="Apple-converted-space"> </span>HWaddr xx:xx:xx:xx:xx:xx <span class="Apple-converted-space"> </span></span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>inet addr:</span><span style="color: red;">192.168.1.29</span><span class="Apple-converted-space" style="color: #444444;"> </span><span style="color: #444444;">Bcast:192.168.1.255</span><span class="Apple-converted-space" style="color: #444444;"> </span><span style="color: #444444;">Mask:255.255.255.0</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>UP BROADCAST RUNNING MULTICAST<span class="Apple-converted-space"> </span>MTU:1500<span class="Apple-converted-space"> </span>Metric:1</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>RX packets:149 errors:0 dropped:0 overruns:0 frame:0</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>TX packets:155 errors:0 dropped:0 overruns:0 carrier:0</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>collisions:0 txqueuelen:1000<span class="Apple-converted-space"> </span></span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>RX bytes:14671 (14.3 KiB)<span class="Apple-converted-space"> </span>TX bytes:15577 (15.2 KiB)</span></span></p><p class="p1" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span style="color: #444444;"><span class="Apple-converted-space"> </span>Interrupt:31 Base address:0xa000<span class="Apple-converted-space"> </span></span></span></p><p class="p2" style="font-family: Menlo; font-size: 11px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px; min-height: 13px; white-space: normal;"><span class="s1" style="font-variant-ligatures: no-common-ligatures;"></span></p></pre></div><div><br /></div><div style="text-align: center;"><br /></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: #333333;"><br /></span></div><div><br /></div><h2 style="text-align: left;"><span>参照URLs:</span></h2><div><ul style="text-align: left;"><li><span>DE10nano向けLinux Kernel Build<br /><a href="https://qiita.com/eofz/items/3413cbdf804154bc150e">https://qiita.com/eofz/items/3413cbdf804154bc150e</a></span></li><li><span>Rocketboards.org<br /><a href="https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries">https://rocketboards.org/foswiki/Documentation/CycloneVSoCGSRD#Rebuilding_the_GSRD_Binaries</a></span></li><li><span>Terasic DE10-nano<br /><a href="http://de10-nano.terasic.com/">http://de10-nano.terasic.com/</a></span></li><li>Intel Download Center<br /><a href="https://fpgasoftware.intel.com/20.1/?edition=lite">https://fpgasoftware.intel.com/20.1/?edition=lite</a></li><li>linux-socfpga<br /><a href="https://github.com/altera-opensource/linux-socfpga/">https://github.com/altera-opensource/linux-socfpga/</a></li></ul></div><div><span face="-apple-system, Segoe UI, Helvetica Neue, Hiragino Kaku Gothic ProN, メイリオ, meiryo, sans-serif" style="color: #333333;"><br /></span></div>Takashi Okawahttp://www.blogger.com/profile/16938940970477590822noreply@blogger.com13tag:blogger.com,1999:blog-3589387662975241649.post-15853179627155364842020-06-28T17:14:00.018+09:002021-01-02T15:24:35.299+09:00FreeRTOS v10.3.1: NiosII 用デモを DE0-Nano + Quartus/NiosII EDS v18.1 で動作させる<div> </div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7iNa1ubP4WOYL2Q5LNI5wJKry7xX9DU7vPTFer1u6s_rTMw2h6XkKQh2DBjS1dmCx66UxnoZhDv8ERReDeP4eART8j7P2DpUJsN5MnL7Z_zXgLpDfBbHWxHPsKwTNtzssKzQJd-usk8/s413/logo-1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="157" data-original-width="413" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7iNa1ubP4WOYL2Q5LNI5wJKry7xX9DU7vPTFer1u6s_rTMw2h6XkKQh2DBjS1dmCx66UxnoZhDv8ERReDeP4eART8j7P2DpUJsN5MnL7Z_zXgLpDfBbHWxHPsKwTNtzssKzQJd-usk8/w256-h98/logo-1.jpg" width="256" /></a></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGPVry9pYKGTNcNnapdsc7D9lv_i4X9Z7htBimAnSOv9GoiFOqkAPqSk7CvtjlBqnn5qcaCcRaEwlePxFYJ5-5Y3fOZxFDIaJQCQHo4_CKuSVO39dUsRHOZpFQaYe71VtskQPzACmv5M4/s550/image_60_thumb.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="451" data-original-width="550" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGPVry9pYKGTNcNnapdsc7D9lv_i4X9Z7htBimAnSOv9GoiFOqkAPqSk7CvtjlBqnn5qcaCcRaEwlePxFYJ5-5Y3fOZxFDIaJQCQHo4_CKuSVO39dUsRHOZpFQaYe71VtskQPzACmv5M4/w256-h210/image_60_thumb.jpg" width="256" /></a></div><div><br /></div><div> </div><a href="https://freertos.org/" target="_blank">FreeRTOS.org </a>からリリースされている Demo Example の中に、Intel FPGA / NiosII 向け Example があります(FreeRTOS/Demo/NiosII_CycloneIII_DBC3C40_GCC/)。<div><br /></div><div>生憎、この Example は非常に古いため、そのままでは最新の NiosII EDS では動作しません。</div><div><br /></div><div>そこで、DE0-Nano で(とりあえず)動作させる手順を、以下に纏めましたので、参考までに、ご紹介します。</div><div> </div><div> </div><div> </div><div>※FreeRTOS.org 提供のNiosII向け Exampleコード「全体」に対して、詳細な動作検証までは行っておりませんので、その点はご了承ください。</div><div><br /></div><div>* FreeRTOS.org: オープンソースの RTOS <a href="https://freertos.org/" target="_blank">https://freertos.org/</a></div><div>* FreeRTOS v10.3 コード(含 Examle): <a href="https://github.com/FreeRTOS/FreeRTOS/releases/download/V10.3.1/FreeRTOSv10.3.1.zip" target="_blank">Github, FreeRTOS donwload v10.3</a></div><div>* NiosII 向け Example: FreeRTOS/Demo/NiosII_CycloneIII_DBC3C40_GCC/</div><div>* <a href="https://www.terasic.com.tw/cgi-bin/page/archive.pl?No=593" target="_blank">DE0-Nano</a>: Terasic社製 Cyclone IV 低価格評価ボード </div><div>* Intel Quartus Prime / NiosII EDS: 今回は、v18.1 を使用</div><div>→ <a href="https://fpgasoftware.intel.com/18.1/?edition=lite" target="_blank">Quartus Prime Lite Edition をダウンロード</a></div><div>→ <a href="https://fpgasoftware.intel.com/soceds/18.1/?edition=standard&platform=windows&download_manager=direct" target="_blank">NiosII EDS をダウンロード</a></div><div><br /></div><div><br /></div><div><u>※1:モチベーション:</u></div><div>手持ちの低価格評価ボード DE0-Nano を使用して、最小限の工数で、一先ず、FreeRTOS を動かしてみたい。</div><div><br /></div><div><u>※2:CPU 及び Cyclone IV 上のハードウェア(HW):</u></div><div>CPU: NiosII</div><div>HW: ゴールデン・リファレンス・デザイン (Terasic提供)をカスタマイズ</div><div><br /></div><div><u>※3:HAL / OS</u></div><div>HAL: NiosII EDS にて生成</div><div>OS: FreeRTOS</div><div><br /></div><div><br /></div><h2 style="text-align: left;"><font size="5"><b>[1] FreeRTOS.org 提供の Example は、そのまま DE0-Nano のゴールデン・リファレンス・デザイン (GRD) で動作させることはできるのか?</b></font></h2><div> </div><div> </div><div> </div><div>残念ながら、次の理由で、動作させることはできません。</div><div> </div><div> </div><div>(a) FreeRTOS.org提供のExampleコードには、UART を使用する コードがある。しかし、GRD には UART ペリフェラルがない。→ Platform Designer (旧Qsys) + Quartus で、Hardware デザインを変更 + コンパイルする必要がある。</div><div> </div><div><br /></div><div>(b) 追加のマクロ定義をしないと、Compile エラーとなる。→ ソースコードの変更</div><div> </div><div><br /></div><div>(c) 古い Quartus / NiosII EDS を前提にコードが提供されているため、そのままではBSP (Board Support Package) / HAL を生成できない。→ Platform Designer (旧Qsys)からの出力ファイル *.socinfo ファイルと BSP Editor を使用して生成する。</div><div> </div><div><br /></div><div>(d) LED の記述を、DE0-Nano の GRD に合わせて変更する必要がある。</div><div> </div><div><br /></div><div>(e) vTaskDelay() 関数を使用すると、vTaskDelay() 以降の処理が実行されない。→ FreeRTOS 提供の NiosII 用 Exampleには、Exception Handler が含まれている。これが、最新の NiosII HAL/BSP の記述と相性が悪い(前提が異なる)。</div><div> </div><div><br /></div><div>(f) alt_irq_handler() 内部で無限ループとなる。→ 前述(e)と同じで、恐らく相性問題。詳細は追っていないが、とりあえずの回避策あり。</div><div> </div><div> </div><div><br /></div><div><br /></div><h2 style="text-align: left;"><font size="5"><b>[2] 対策方法:</b></font></h2><div>前述の(a)~(f) の対策を以下に記載します。</div><div><br /></div><h3 style="text-align: left;"><b>(a) Platform Designer (旧Qsys) + Quartus で、Hardware デザインを変更 + コンパイルする必要がある。</b></h3><div><br /></div><div>DE0-Nano 付属の CD-ROM に、各種ファイルがあります。"Demonstration” フォルダー以下に、「DE0_Nano_QSYS_DEMO」というデザインがありますので、これを変更して使用します。</div><div><br /></div><div>Quartus の使用方法の詳細は割愛します。</div><div>*DE0_Nano.qpf を使用して、Quartus を開きます。</div><div>*DE0_Nano_SOPC.qsys を使用して、Platform Designer を開きます。</div><div>*"UART" を追加します。"Name" の箇所を "uart" に変更します(下図参照)。クロックはNiosIIと同じクロックで、IRQ もNiosIIに接続します。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyP4TDuUs3fEysezrGgm3xvPAtDExg8EJetxYAp-XRqrZdpE1zygqnK5gxJRhGX-BcSWej4KMN5nTmyJfNv5Spa-MwFF1_jXQmn7EkU0nBoAFUTWWdYd7_2hxRLgpIYPtJ_8aS1aNhfjA/s1324/added_uart.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="530" data-original-width="1324" height="391" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyP4TDuUs3fEysezrGgm3xvPAtDExg8EJetxYAp-XRqrZdpE1zygqnK5gxJRhGX-BcSWej4KMN5nTmyJfNv5Spa-MwFF1_jXQmn7EkU0nBoAFUTWWdYd7_2hxRLgpIYPtJ_8aS1aNhfjA/w976-h391/added_uart.png" width="976" /></a></div><div><br /></div><div>*上記変更&ファイルを保存後、Platform上で Generate HDL を行います。また、Quartus 上で、Compile を行い、*.sof ファイルを生成します。Quartus Lite Edition を使用している場合には、生成される sof ファイル名は、「DE0_Nano_time_limited.sof」になります。</div><div>*この sof ファイルを、ソフトウェアを動作させる前に、Quartus の Programmer を使用して、NE0-Nanoボードにダウンロードします。</div><div> </div><div><br /></div><div><br /></div><div><h3 style="text-align: left;"><b>(b) 追加のマクロ定義をしないと、Compile エラーとなる。→ ソースコードの変更</b></h3><div>以下のコードを、FreeRTOS Example コードに追加します。</div></div><div><br /></div><div><b>FreeRTOSConfig.hファイル:</b></div><div>//Added 100MHz clock for NiosII</div><div><div>#define SYS_CLK_FREQ 100000000</div><div><br /></div></div><div><b>portable/GCC/NiosII/port.cファイル:</b></div><div>#include "altera_avalon_timer.h"</div><div>#define SYS_CLK_IRQ 0</div><div><br /></div><div>//SYS_CLK_BASE を TIMER_BASE に変更(6箇所)</div><div>//例:</div><div>IOWR_ALTERA_AVALON_TIMER_CONTROL( <b>SYS_CLK_BASE</b>, ALTERA_AVALON_TIMER_CONTROL_STOP_MSK );</div><div> ↓</div><div>IOWR_ALTERA_AVALON_TIMER_CONTROL( <b>TIMER_BASE</b>, ALTERA_AVALON_TIMER_CONTROL_STOP_MSK );</div><div><br /></div><div> </div><div><br /></div><div><b>(c) Platform Designer (旧Qsys)からの出力ファイル *.socinfo ファイルと BSP Editor を使用して生成する。</b></div><div><br /></div><div>NiosII EDS 上で、前述(a)の操作で生成された *.socinfo ファイルを使用して、BSP を生成する。BSP Editor 上では、特に変更する設定は無い。Generate ボタンをクリックするだけ。</div><div>(BSP Editor 操作の詳細は割愛)</div><div> </div><div><br /></div><div><br /></div><div><h3 style="text-align: left;"><b>(d) LED の記述を、DE0-Nano の GRD に合わせて変更する必要がある。</b></h3><div><br /></div></div><div><b>ParTest/ParTest.c ファイル:</b></div><div><br /></div><div>//LED_PIO_BASE を LED_BASE に変更(2箇所)</div><div>//</div><div>//1.</div><div>IOWR_ALTERA_AVALON_PIO_DIRECTION( <b>LED_PIO_BASE</b>, ALTERA_AVALON_PIO_DIRECTION_OUTPUT );</div><div> ↓</div><div>IOWR_ALTERA_AVALON_PIO_DIRECTION( <b>LED_BASE</b>, ALTERA_AVALON_PIO_DIRECTION_OUTPUT );</div><div><br /></div><div>//2.</div><div>IOWR_ALTERA_AVALON_PIO_DATA( <b>LED_PIO_BASE</b>, ulLedStates );</div><div> ↓</div><div>IOWR_ALTERA_AVALON_PIO_DATA( <b>LED_BASE</b>, ulLedStates );</div><div> </div><div><br /></div><div><br /></div><h3 style="text-align: left;"><b>(e) vTaskDelay() 関数を使用すると、vTaskDelay() 以降の処理が実行されない。→ FreeRTOS 提供の NiosII 用 Exampleには、Exception Handler が含まれている。これが、最新の NiosII HAL/BSP の記述と相性が悪い(前提が異なる)。</b></h3><div><br /></div><div>(ここが原因を探るのに最も苦労したところ)</div><div><br /></div><div><br /></div><div><b>portable/GCC/NiosII/port_asm.S ファイル:</b></div><div> </div><div><br /></div><div><u><b>[</b><span style="font-size: small;"><b>call_scheduler </b></span><b>オリジナル記述]</b></u></div><div><div><font size="2">call_scheduler:</font></div><div><font size="2"><span style="white-space: pre;"> </span>addi<span style="white-space: pre;"> </span>ea, ea, 4<span style="white-space: pre;"> </span># A trap was called, increment the program counter so it is not called again.</font></div><div><font size="2"><span style="white-space: pre;"> </span>stw<span style="white-space: pre;"> </span>ea, 72(sp)<span style="white-space: pre;"> </span># Save the new program counter to the context.</font></div><div><font size="2"><span style="white-space: pre;"> </span>call<span style="white-space: pre;"> </span>vTaskSwitchContext<span style="white-space: pre;"> </span># Pick the next context.</font></div><div><font size="2"><span style="white-space: pre;"> </span>br<span style="white-space: pre;"> </span>restore_sp_from_pxCurrentTCB<span style="white-space: pre;"> </span># Switch in the task context and restore. </font></div></div><div><br /></div><div><br /></div><div><u><b>[</b><span style="font-size: small;"><b>call_scheduler </b></span><b>変更後(line 147 に、movia,ldw,ldw の3行を追加)]</b></u></div><div><div><font size="2">call_scheduler:</font></div><div><font size="2"><span style="white-space: pre;"> </span>addi<span style="white-space: pre;"> </span>ea, ea, 4<span style="white-space: pre;"> </span># A trap was called, increment the program counter so it is not called again.</font></div><div><font size="2"><br /></font></div><div><font size="2"><span style="white-space: pre;"> </span>#New lines (start)</font></div><div><font size="2"><b><span style="white-space: pre;"> </span>movia<span style="white-space: pre;"> </span>et, pxCurrentTCB<span style="white-space: pre;"> </span># Load the address of the pxCurrentTCB pointer</b></font></div><div><font size="2"><b><span style="white-space: pre;"> </span>ldw<span style="white-space: pre;"> </span>et, (et)<span style="white-space: pre;"> </span># Load the value of the pxCurrentTCB pointer</b></font></div><div><font size="2"><b><span style="white-space: pre;"> </span>ldw<span style="white-space: pre;"> </span>sp, (et)<span style="white-space: pre;"> </span># Load the stack pointer with the top value of the TCB</b></font></div><div><font size="2"><span style="white-space: pre;"> </span>#New lines (end)</font></div><div><font size="2"><br /></font></div><div><font size="2"><span style="white-space: pre;"> </span>stw<span style="white-space: pre;"> </span>ea, 72(sp)<span style="white-space: pre;"> </span># Save the new program counter to the context.</font></div><div><font size="2"><span style="white-space: pre;"> </span>call<span style="white-space: pre;"> </span>vTaskSwitchContext<span style="white-space: pre;"> </span># Pick the next context.</font></div><div><font size="2"><span style="white-space: pre;"> </span>br<span style="white-space: pre;"> </span>restore_sp_from_pxCurrentTCB<span style="white-space: pre;"> </span># Switch in the task context and restore. </font></div></div><div><br /></div><div> </div><div> </div><div><br /></div><h3 style="text-align: left;"><b>(f) alt_irq_handler() 内部で無限ループとなる。対策は以下。</b></h3><div><br /></div><div>※注意事項: BSP Editor で生成する度に、以下の対策を実行する必要あり(上書きされてしまう)。</div><div><br /></div><div><b>*_bsp/HAL/src/alt_irq_handler.cファイル:</b></div><div>line 141行の do{ ~ } while(1) を、if (active) { ~ } で囲む。</div><div><br /></div><div><div> <b> if (active) //added for FreeRTOS demo</b></div><div> {</div><div> do</div><div> {</div><div> if (active & mask)</div><div> { </div><div>#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT</div><div> alt_irq[i].handler(alt_irq[i].context); </div><div>#else</div><div> alt_irq[i].handler(alt_irq[i].context, i); </div><div>#endif</div><div> break;</div><div> }</div><div> mask <<= 1;</div><div> i++;</div><div><br /></div><div> } while (1);</div><div> <b>}</b></div></div><div><br /></div><div> </div><div><br /></div><div><br /></div><h2 style="text-align: left;"><font size="5">[3] 確認したFreeRTOS を含むソフトウェア・コード:</font></h2><div><br /></div><div>とりあえず、動作確認したコードを紹介します。ここでは、vTaskDelay() を使用したLEDの点滅動作を確認しています。ボード上のLED01 が点滅します。</div><div><br /></div><div>#vTaskDelay()を動作させるには、前述(e) が不可欠ですのでご注意を!</div><div><br /></div><div><br /></div><div><b><u>Common_Demo_Tasks/flash.cファイル:</u></b></div><div><br /></div><div><div>static portTASK_FUNCTION( debug_task, pvParameters ){</div><div> for(;;) {</div><div><span> </span><span> </span><span> </span>vParTestToggleLED( 1 ); //LED01</div><div><span style="white-space: pre;"> </span> <b>vTaskDelay</b>(pdMS_TO_TICKS(50));</div><div> }</div><div>}</div></div><div><br /></div><div><div>void vStartLEDFlashTasks( UBaseType_t uxPriority )</div><div>{</div><div><span style="white-space: pre;"> </span>if (xTaskCreate( debug_task, "DEBUGx", ledSTACK_SIZE, NULL, uxPriority + 1, ( TaskHandle_t * ) NULL ) != pdPASS) {</div><div><span style="white-space: pre;"> </span>printf("debug: xTaskCreate failed, debug_task\n");</div><div><span style="white-space: pre;"> </span>}</div><div>}</div></div><div><br /></div><div><div><br /></div></div><div><br /></div><div><b><u>main.cファイル:</u></b></div><div><br /></div><div><div>int main( void )</div><div>{</div><div><span style="white-space: pre;"> </span>prvSetupHardware();</div><div> </div><div><span style="white-space: pre;"> </span>vStartLEDFlashTasks( tskIDLE_PRIORITY );</div></div><div><br /></div><div><div><span style="white-space: pre;"> </span>vTaskStartScheduler();</div><div><br /></div><div><span style="white-space: pre;"> </span>for( ;; );</div><div><br /></div><div><span style="white-space: pre;"> </span>return 0;</div><div>}</div></div><div><br /></div><div><br /></div><div><br /></div><div><u>※その他1:</u></div><div><br /></div><div><div>Makefile 中のALT_INCLUDE_DIRS変数の設定も忘れずに!</div><div><br /></div><div>(設定例)</div><div>ALT_INCLUDE_DIRS := . FreeRTOS/include Common_Demo_Tasks/include FreeRTOS/portable/GCC/NiosII</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyi1kVvTj4Qz1bsxIkLuc9A_QYisvvTHMFp9DNU1h9hrLkhJ_jYgUI2hBziM_dZEqUp9G1iZQT1xrl7SUfPyCJ6rz4CIGKmzsgJ9U7t9ojX9LQLRCVPlXvyOe7PwurS8ZGefly3AuogJA/s1252/Makefile.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="473" data-original-width="1252" height="369" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyi1kVvTj4Qz1bsxIkLuc9A_QYisvvTHMFp9DNU1h9hrLkhJ_jYgUI2hBziM_dZEqUp9G1iZQT1xrl7SUfPyCJ6rz4CIGKmzsgJ9U7t9ojX9LQLRCVPlXvyOe7PwurS8ZGefly3AuogJA/w976-h369/Makefile.png" width="976" /></a></div><div><br /></div><div><br /></div><div><br /></div><h2 style="text-align: left;">※その他2:</h2><div><br /></div><div>UART を動作させるには、上記の他に、UART のTX/RX ピンを、GPIO に割り当てる処理が必要になります。こちらについては、今回の記載には含まれておりません。こちらは、別途更新しようと思います。</div><div><br /></div><div><br /></div><div>Enjoy !</div><div><br /></div><div> </div><div><br /></div>Takashi Okawahttp://www.blogger.com/profile/16938940970477590822noreply@blogger.com0tag:blogger.com,1999:blog-3589387662975241649.post-70829030260652057952015-07-08T00:13:00.000+09:002020-05-10T11:27:14.619+09:00RTOS不要! マルチコア・プロセッサによる 新しい組込みソフトウェア開発技術!32bit RISCコア が8コ以上搭載されたプロセッサなのに、C言語さえ知っていれば、<br />
<div>
<br /></div>
<div>
「初心者でも簡単に組込みソフトウェアが開発できて」</div>
<div>
「モーター制御や音楽ストリーミング・データの処理が簡単にできて」</div>
<div>
「組込み製品開発が楽しくなる」</div>
<div>
<br /></div>
<div>
そんなマルチコア・プロセッサと、その開発環境を紹介していきます。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">参考URLs:</span><br />
<a href="http://www.xmos.com/" style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif;">www.xmos.com</a><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><a href="https://www.youtube.com/user/xmosmmcu">www.youtube.com/user/xmosmmcu</a></span><br />
<br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif; font-size: xx-small;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif; font-size: xx-small;"><br /></span><br />
<div style="text-align: center;">
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif; font-size: medium;"><b>「リアルタイムOS (RTOS)」不要</b></span></div>
<div style="text-align: center;">
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><b>コンテキスト・スイッチによるオーバーヘッドなし</b></span></div>
<div style="text-align: center;">
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><b>パイプライン・フラッシュによるペナルティなし</b></span></div>
<div style="text-align: center;">
<b><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">組込みソフトウェア・タスクの並列実行</span></b></div>
<div style="text-align: center;">
<b><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">ソフトウェア・</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">パイプライン設計が容易</span></b></div>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><b><br /></b></span><b><u>マルチコア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">・プロセッサ</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> xCORE</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> は、</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">組込みソフトウェア開発の生産性と品質を向上させるソリューション</span></u></b><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">この</span>マルチコア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">・プロセッサ</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> xCORE</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> デバイスには、「リアルタイムOS」がハードウェア実装されています。これはスケジューラと呼ばれるもので、ラウンドロビン方式(フェアネス・アルゴリズム)で各CPUに割り当てられたタスクを実行していきます。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">(実は、xCOREデバイスは、 </span>マルチコア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">・プロセッサ</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">といっても、8コのCPU毎に1系統のパイプラインが存在し、8コのCPUがパイプラインを共有するアーキテクチャなのです。このパイプラインは500MHz で動作しています。下記の16 CPUのデバイスでは、2系統のパイプラインがあります</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">)</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<br />
<div style="text-align: center;">
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">アーキテクチャ:<a href="http://www.xmos.com/published/xcore-architecture-flyer?version=latest">www.xmos.com/published/xcore-architecture-flyer?version=latest</a></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.xmos.com/files/images/cXE216.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://www.xmos.com/files/images/cXE216.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Source: <a href="http://www.xmos.com/">www.xmos.com</a></div>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">コンテキスト・スイッチや割り込みの概念が無いアーキテクチャのため、非常に見通しの良い「組込みソフトウェア」が開発できます。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">(「割り込み」機能に相当する機能があります。外部ピンからの入力に対応して処理を実行するイベント駆動型ソフトウェア処理です)</span><br />
<br />
マルチコア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">・プロセッサ</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> xCORE</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> デバイス上の各CPUは、それぞれにレジスタ・セットを持っています。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">共有メモリを使用せずに、</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">CPU間でデータを受け渡しすることが可能です。共有メモリを使用する代わりに、直接、他CPUのレジスタにアクセスして、データの受け渡しができます。このCPU間でデータを送受信する命令が、ISAに定義されています。</span><br />
<br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">割り算以外の命令は、全て 1 CPU cycle で処理が完了します。また、64ビットの乗算及び積和演算といったDSP演算命令を持ち、それらも </span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">1 CPU cycle で処理が完了します。</span><br />
<br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">これらの仕組みにより、各CPU上で動作する各タスク(ソフトウェア)をパイプライン化した「組込みシステム」を実現することができます。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><u>CPU/タスクのパイプライン例:</u></span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">入力 ---> [CPU1(Task1)] ---> [CPU2(Task2)] ---> [CPU3(Task3)] ---> [CPU4(Task4)] ---> 出力</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">特に<b>音楽業界</b>では、この</span>マルチコア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">・プロセッサ</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> xCORE</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> デバイスの採用が進んでいます。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">パイプライン化された各タスクが、</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">リアルタイムに入力される音楽ストリーム・データを</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">処理します。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">これまでご紹介してきた特徴により、マルチ・チャネル、ハイレゾ、ミキサー、エフェクタ機能を、容易にソフトウェアで実現することができるのです。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><b>シンプルで見通しのよいアーキテクチャは、美しく、バグが入り込む余地が少ない</b>ことは、皆様もご承知の通りです。</span><br />
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">そんな組込みシステム(</span>ソフトウェア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">)アーキテクチャを実現できる</span>マルチコア<span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;">・プロセッサ</span><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"> xCORE と、ソフトウェア開発方法について、次回より詳しく見ていきます。</span><br />
<span style="font-size: x-small;"><span style="font-family: "segoe ui" , "helvetica" , "arial" , sans-serif;"><br /></span>
</span><br />
<span style="font-size: x-small;"><br /></span>
<a href="http://blog.fun-multicores.tokyo/p/rtos.html" target="_blank">ソフトウェア統合開発環境「xTIMEcomposer STUDIO」</a><br />
<br />
(その他の投稿については、右上の「ページ」をご確認ください)<br />
<br /></div>
Takashi Okawahttp://www.blogger.com/profile/16938940970477590822noreply@blogger.com0