ラベル FPGA の投稿を表示しています。 すべての投稿を表示
ラベル FPGA の投稿を表示しています。 すべての投稿を表示
2021/05/10

PetaLinux 2020.2のDockerイメージを作成する

概要

私はPetaLinuxをDocker上で使用しています.ググると同じように環境構築されている方も多いようですね. GitHubで必要なファイル一式を公開していますので,ここにDockerイメージの作成方法をメモしておきます. 私はチュートリアルに毛が生えた程度しかPetaLinuxを触りませんので,もし不具合がありましたらissueでお知らせいただけると助かります. 私は,Dockerホスト環境としてUbuntu 16.04とUbuntu 20.04を使用しています.

準備

SSDまたはHDDの空き容量を15GB程度は準備しておいてください.作成するDockerイメージは10GB程度のサイズになります. 予め,XilinxのWebサイトからPetaLinuxのインストーラをダウンロードしておきます. ここではダウンロードディレクトリを/data1/Software/Xilinxとし,PetaLinux 2020.2をインストールすることにします.

ダウンロードしたファイルは下記のパスとします.

  • /data1/Software/Xilinx/petalinux-v2020.2-final-installer.run

GitHubからファイル一式を取得します. ここではgit clone先のディレクトリ名をpetalinux-baseとしていますが,未指定で既定のままでも問題ありません.

git cloneしたディレクトリに移動します.

docker build

PetaLinuxをインストールするベースとなるDockerイメージ,keitetsu/petalinux:ubuntu16.04-baseをビルドします.

PetaLinuxのインストール

ビルドしたDockerイメージを起動し,手動でPetaLinuxをインストールします. テキストエディタでrun_base.shを開き,--volumeオプションの/data1/Software/Xilinxの部分をpetalinux-v2020.2-final-installer.runを格納したディレクトリに書き換えます. このディレクトリは,Dockerコンテナ上では/dataとしてマウントされます.

PetaLinuxはrootではなく一般ユーザでインストールする必要があります. このため,Dockerホスト上のユーザのUIDとGIDを使ってDockerコンテナ起動時にユーザが作成されます. 任意のUIDとGIDを使用したい場合は,run_base.shで指定してください. これらの処理は,entrypoint.shに記載しています.

run_base.shを実行します.

通常通りPetaLinuxのインストールを進めてください.ただし,インストールディレクトリは/opt/Xilinx/PetaLinuxとしてください. このディレクトリはDockerイメージ上に予め用意されています.

インストーラを実行すると,ライセンスに同意するかどうかの入力が求められます. ライセンス文書が表示されたら'q'キーで閉じ,'y'を入力して同意します.3項目に同意が必要です.

インストールが完了してプロンプトが返ってきたら,Dockerホスト側で,今までDockerコンテナを操作していたものとは別の端末を開きます. docker psコマンドで,keitetsu/petalinux:ubuntu16.04-baseのコンテナIDを確認します.

DockerコンテナをDockerイメージとして保存します.${CONTAINER_ID}には,先ほど確認したコンテナIDを入れてください.

これでDockerイメージを作成できました. PetaLinuxをインストールするために起動したDockerコンテナはexitで終了してください.

使用方法

作成したDockerイメージを起動するためのシェルスクリプトは,run_base.shを改変して作成します.ここではrun.shとして保存します. /workspaceには,Dockerホスト上のPetaLinuxプロジェクトを格納するディレクトリを指定してください.

run.shを起動すると,下記のようにDockerコンテナが起動してPetaLinuxでの開発準備が整います.

Vitis, VivadoのDockerイメージ

VitisとVivadoの開発環境も同様にDocker上に作成することができます.私のファイル一式は上記です. こちらはまだ手順を書くことができていないのですが,PetaLinuxと同様に,下記の要領で作成します.また手順を書きたいと思います.

  1. ベースのDockerイメージをbuild/build.shでビルド
  2. run_base/run_base.shでDockerコンテナを起動
  3. install/installを参考にVitisをバッチモードでインストール
  4. install_xrt_bdf/build.shでXRTとサードパーティのbdfをインストール
  5. docker commit
  6. run/run.shでDockerコンテナを起動
2021/04/27

How to dump device tree from NAND flash to get dts (Zynq-7000)

In this article, I will dump the original device tree of the Zynq EBAZ4205 Board.

Since the Zynq EBAZ4205 Board is not a development board, the design information is not provided by the manufacturer. You need to get the necessary information yourself.

From the device tree source text (dts) file converted from the dumped device tree blob (dtb) file, you can get reference information when developing a custom Linux image using Vivado and PetaLinux.

Prepare

Insert the microSD card into the Zynq EBAZ4205 Board. This microSD card is used to transfer the dumped dtb file to the PC.

If you can use Ethernet, you can transfer the file by other methods.

Dump

Boot original Linux from the NAND flash on the Zynq EBAZ4205 Board.

Make sure the microSD card is mounted.

Execute the following command to dump the device tree from the NAND flash and save it as dtb file on the microSD card.

Convert

Copy the dtb file from the microSD card to your PC.

Convert dtb file to dts file. Use the device tree compiler (dtc) command for this conversion.

For Ubuntu, you can install it with the following command.

Execute the dtc command.

Now you have a dts file.

Tips

One of the information that can be obtained from the dts file is the NAND flash timing parameters and existing partition information.

For example, in the dts file, it was described as follows.

For the timing parameters nand-cycle-t0 to nand-cycle-t6, refer to the Xilinx Wiki.

If you are developing a custom Linux image using Vivado and PetaLinux, set these parameters in Vivado. At this time, you should also check the NAND flash data sheet.

Note: The parameters in the screenshot are examples and have not been tested.

Partition information can be set in PetaLinux.

This information is reflected in the device tree automatically generated by PetaLinux. The device tree is generated in the following directory when you run the petalinux-build command.

  • /components/plnx_workspace/device-tree/device-tree

My Vivado design and PetaLinux project are available on GitHub.

If there are any mistakes in the description, please let me know.

2021/04/23

Solves the warning when loading the U-Boot environment (Zynq-7000, PetaLinux 2020.2)

I have built a boot image for the Zynq EBAZ4205 Board with Xilinx PetaLinux 2020.2. Linux was able to boot normally, but the following warning was displayed when U-Boot was booted.

The Zynq EBAZ4205 Board does not have SPI Flash. In order to solve this warning, it was necessary to change the U-Boot configurations.

Open the U-Boot configuration with the following command.

Enable "Environment is not stored".

Environment-> Environment is not stored

Disable "Environment is in SPI flash".

Environment-> Environment is in SPI flash

Exit from the U-Boot configuration and rebuild the U-Boot.

The following 2 lines are added to the U-Boot settings.

An example of the PetaLinux project can be found below.

2015/02/12

Zynq Linuxの使用メモリを制限する

はじめに

下記の記事で,device treeのbootargsを編集してLinuxの使用メモリを制限する方法が紹介されていました. 試してみたところKernel panicを起こしてしまいましたので,その対処方法もメモしておきます.

今やってみたいのはZYBOのVGAまたはHDMIからGUIを出力することなのですが,やり方がよくわからず困っています. もっとハードルが低いことからコツコツやった方が早いかも….

DTSのbootargsを編集する

「mem=384M」を加えて,Linuxの使用メモリを384MBに制限してみます. ZYBOはメモリを512MB搭載していますので,アドレス 0x18000000 ~ 0x1fffffff まではLinuxの管理外になるはずです.

Kernel panicが発生して起動しませんでした. わからないなりにログを眺めてみると,Kernelの読込み開始直後に落ちているようです.

Kernel panicの対処方法 / uEnv.txtの編集

原因と対処方法を調べてみると,下記Webページが引っかかりました. u-bootがdevice treeをメモリの上限アドレス付近に配置するため,Kernelの使用メモリを制限するとdevice treeが存在するアドレスを参照できない,ということでしょうか. 対処方法は,u-bootがdevice treeを配置する際の上限アドレス(fdt_high)を変更すれば良いようです.

u-bootのソースコード上では, include/configs/zynq-common.h で 0x20000000 に設定されているようです(自信はないです). ソースコードを編集してu-bootをリビルドするのは面倒なので,uEnv.txtでの設定を試してみました. 下記の1行目を追加しました.

正常に起動しました. /proc/meminfo を参照すると,使用メモリが384MB程度に制限されていることがわかります.

2015/02/09

Xilinx SDKでDevice Treeを生成する

はじめに

FPGAの部屋を読んでいると,Xilinx SDKでDeviece Tree Source (DTS)を生成できることがわかりました. 下記の記事が参考になりましたが,開発環境が異なるほか,ファイルの取得方法が変わっていましたので,私の作業メモを残しておきます.

Xilinx Wikiの該当ページは下記のとおりです.
開発環境

DTSの生成に使用するXilinx SDK 2014.4は,Windowsにインストールしています.

OS Microsoft Windows 7 Professional x64 Service Pack 1
SDK Xilinx SDK 2014.4

ファイル取得に使用するgitクライアントやDTSからDevice Tree Blob (DTB)を生成する環境は,VMware Player上のUbuntuにインストールしています. Windowsとのファイル共有には,WinSCPを使用しています.

OS Ubuntu 14.04 LTS 32bit
Device Tree Generatorのセットアップ

Ubuntu環境でDevice Tree Generatorのgitリポジトリを取得しました. その後,ディレクトリごとWindows環境の「C:\work」にコピーしました. これにより,「C:\work\device-tree-xlnx」ができたことになります.

Vivadoでプロジェクトを開き,「File」 - 「Launch SDK」からXilinx SDKを起動しました. Xilinx SDKのツールバーから「Xilinx Tools」 - 「Repositories」をクリックし,「Preferences」ウィンドウを開きました. 「Local Repositories」に,「C:\work\device-tree-xlnx」を追加しました.


Preferences
DTSの生成

Xilinx SDKの「File」 - 「New」 - 「Board Support Package」をクリックしました. 「New Board Support Package Project」ウィンドウが開きましたので,「Board Support Package OS」を「device-tree」に変更して「Finish」しました.


Board Support Package

「Board Support Package Settings」ウィンドウが開きましたので,「bootargs」の「Value」に下記を入力しました. これは一例ですので,各自の環境に合わせる必要があります.


Board Support Package Settings

「Board Support Package Settings」ウィンドウを「OK」で閉じると,自動的に「device-tree_bsp_0」プロジェクトのビルドが開始され,DTSが生成されました.


device-tree_bsp_0
DTBの生成

「device-tree_bsp_0」ディレクトリごとUbuntu環境にコピーし,DTBを作成しました. ほとんどGUI操作だけでdevicetree.dtbが生成でき,タイプミス起因のエラーを回避できるのは良さそうですね.

2015/02/01

ZYBO (Zynq PS)にI2Cキャラクタ液晶を接続する

はじめに

Zynq PSのI2Cモジュールを使用して,I2Cキャラクタ液晶を制御してみました.


テストプログラムの実行結果
開発環境
OS Microsoft Windows 7 Professional x64 Service Pack 1
Vivado Vivado 2014.4 WebPACK Edition (Windows)
SDK Xilinx SDK 2014.4
I2Cキャラクタ液晶

AitendoのI2C低電圧キャラクタ液晶モジュール(16x2行) [SPLC792-I2C-M]を使用しました. バックライトユニットも搭載されていて375円です.安いですね…. LCDモジュール単体でも取扱いがあります.

接続方法については,下記の記事が大変参考になりました. 私も,ピンヘッダを変換基板に取り付けて接続しています. 変換基板の短辺側にあるランド(SHL, DIRC)にもピンヘッダを取り付け,ジャンパピンでショートさせることで,液晶モジュールの表示方向を変更できるようにしました. バックライトユニットの電源(BL+)には,330Ωの抵抗を直列接続して3.3Vを印加しました.


ピンヘッダの取り付け
Vivadoでの作業メモ
  1. Zynq Block Designの設定変更
  2. ZYBO Base System Designを流用しました. Block Design上のZYNQ7 Processing SystemをダブルクリックしてRe-customize IPウィンドウを開き,Zynq Block Designで「I2C 1」にチェックを入れました. なお,下図ではTTCにもチェックを入れていますが,I2Cキャラクタ液晶の制御には必要ありません.


    Zynq Block Design
  3. MIO Configurationの設定変更
  4. Re-customize IPウィンドウでMIO Configurationに表示を切り替え,I2C 1のIOを「EMIO」に設定しました. なお,下図ではTTCについても設定していますが,I2Cキャラクタ液晶の制御には必要ありません.


    MIO Configuration
  5. Diagramの変更
  6. Re-customize IPウィンドウを閉じ,Diagram上で右クリックしました. 右クリックメニューのCreate Interface PortをクリックしてI2C 1用のインタフェースポート「IIC_1」を作成し,ZYNQ7 Processing SystemのIIC_1と接続しました.


    Diagram
  7. I/O Portsの変更
  8. 「Run Synthesis」後,「Open Synthesized Design」し,IIC_1関連のI/Oポートをアサインするためにツールバーの「Window」 - 「I/O Ports」を開きました. 私は,ZYBOのPmod JBコネクタのJB1 (T20)にiic_1_scl_ioを,JB2 (U20)にiic_1_sda_ioをアサインしました.


    I/O Ports
プログラム

今更ながらGitHubのアカウントを作成しましたので,GitHubにて公開します.

Xilinx SDKで作成したプロジェクト内には「system.mss」というファイルがあります. このファイル内に,Zynq PSのI2Cモジュール「iicps」のドキュメントとサンプルプロジェクトのリンクがあり,大変参考になりました. このI2Cキャラクタ液晶のテストプログラムは,サンプルプロジェクト「xiicps_polled_master_example」を基に作成したものです.

また,I2Cキャラクタ液晶の制御方法の理解には,下記の記事が大変参考になりました.

製品紹介
2015/01/26

ZYBOの収納ケースとACアダプタ

ZYBOの収納ケース

購入時の紙箱のままでは頼りないので,ZYBOを収納するためのケースを準備しました. そんな機会があるのかはともかくとして,持ち運びにも便利です.


ZYBOの収納ケース(蓋を閉じた状態)

ZYBOの収納ケース(蓋を開けた状態)

100円ショップで購入した,プラスチックの葉書ケースです. ZYBOは葉書よりも一回り小さい程度なので,サイズ的にピッタリでした. 葉書ケースの蓋側にドリルで穴を開け,M3ネジでZYBOの足を固定しています.


ZYBOの収納ケース(蓋側)

蓋側にZYBOを固定した理由は,各種コネクタへのアクセスのしやすさを重視したためです. この葉書ケースは,簡単に蓋と本体を分離・連結することができます. 本体側を取り払ってしまえば,ZYBOを葉書ケースの蓋に固定していることをほとんど意識しなくて良くなります. 100円ショップを何件か回り,いくつか候補を見つけましたが,最終的にこの葉書ケースにした理由はここです.


ZYBOの収納ケース(蓋と本体が分離・連結可能)

安価かつ簡単に収納ケースを作ることができますので,是非お試しください.

ZYBOのACアダプタ

年末に大阪日本橋のデジットに立ち寄った際,ちょうど良いACアダプタを見つけました. 出力はDC5V,1A,プラグ規格はφ2.1のセンタープラスですから,ZYBOに適合しています. コンセント形状が海外規格ですが,ちゃんと国内規格に変換するアダプタが付属しています. 価格は180円でした. 良い買い物ができました…これで海外出張対策も万全!?

[追記 2015/02/25] DC4.5V~5.5V出力で最低でも2.5A供給可能な外部電源が必要であると,「ZYBO FPGA Board Reference Manual」の4ページに記載されていることを教えていただきました. 私がちゃんとリファレンスマニュアルを読んでいないのがバレバレですね…. 現在のところ電源不足に陥ったような症状には遭遇していませんが,これから購入される方は,DC5V出力で2.5A以上供給できるACアダプタを探したほうが良いと思います.


ACアダプタ
2015/01/25

ZYBOでUbuntuのルートファイルシステムを使用する

はじめに

前回記事「Embedded Linux Hands-on Tutorial for the ZYBOをやってみました」で,ZYBO上でのLinux起動に成功しましたので,使用するルートファイルシステムをUbuntuのものに変更してみました. そもそも,私はまだLinuxやルートファイルシステム自体をよく理解していません. 本記事のタイトルからして適切なのか不安ですが,追々勉強して,理解しながら訂正や追記をしていきたいと思います.

下記記事を参考に作業しました.

開発環境

仮想マシン上のUbuntu 14.04 LTS 32bitで作業しました.

OS Ubuntu 14.04 LTS 32bit
作業ログ
1. microSDHCのフォーマット

前回記事「Embedded Linux Hands-on Tutorial for the ZYBOをやってみました」の内容を終えていることが前提となっています. ディレクトリ構造については,各自の環境に置き換えて読み進めてください.

microSDHC内のデータは,バックアップしておいてください. Ubuntuであれば,microSDHCを挿入すると,自動認識してファイルマネージャが開くのではないかと思います. 特に使用しませんので,ファイルマネージャは閉じても大丈夫です(下図は,Mac OS Xライクな外観にしたUbuntuのウィンドウです).


microSDHC (フォーマット前)

lsblkコマンドでmicroSDHCのマウント位置を調べました. 私の環境では,/dev/sdbでした. fdiskを開始し,pコマンドで既存パーティションを表示した後,dコマンドで既存パーティションを削除しました.

第1パーティション(プライマリ,64MByte)を作成しました. nコマンドで新規パーティションの作成を開始し,'p'でパーティションタイプをプライマリに,'1'でパーティション番号を1に設定しました. 最初セクタは入力せず,Lastセクタは'+64M'としました.

第2パーティション(プライマリ,残りの領域)を作成しました. nコマンドで新規パーティションの作成を開始し,'p'でパーティションタイプをプライマリに,'2'でパーティション番号を2に設定しました. 最初セクタとLastセクタは入力しませんでした.

第1パーティションのシステムタイプをFAT32に変更し(tコマンド),ブート可能フラグを付加しました(aコマンド).

パーティションテーブルの書込みを実行しました. 書込み後,パーティションテーブルの再読込みでエラーが発生しました. partprobeコマンドを実行しても駄目でした.

一度,microSDHCをアンマウント(取り外し)し,再度挿入することで解決しました. 一応,再度パーティションテーブルを書込みしました.

パーティション名を設定し,ファイルシステムを作成しました.

2. ルートファイルシステムの書込み

ルートファイルシステムの書込みを行いました. 下記はコマンド実行ログです. 事前に,ディレクトリ「zybo_ubuntu」を作成し,前回記事「Embedded Linux Hands-on Tutorial for the ZYBOをやってみました」内で作成した「BOOT.bin」をコピーしておきました. tarコマンドは,実行に6分程度かかりました.

3. BOOT.binとuImageの書込み

BOOT.binとuImage(前回記事「Embedded Linux Hands-on Tutorial for the ZYBOをやってみました」内で作成)をZYBO_BOOTに書き込みました.

4. devicetree.dtbの書込み

前回記事「Embedded Linux Hands-on Tutorial for the ZYBOをやってみました」内で使用した「zynq-zybo.dts」をコピーし,編集しました.

「zynq-zybo.dts」の変更箇所は42行目と55行目の計2箇所です.

5. uEnv.txtの書込み

「uEnv.txt」を作成し,ZYBO_BOOTにコピーしました.

「uEnv.txt」の内容は下記のとおりです.

6. 実機テスト

Linuxが起動しました!下記はTera Term上のログです.

7. apt-get

ZYBO用のEmbedded Linux をブートするSDカードの作り方」にしたがい,Tera Term上で下記コマンドを実行しておきました.

ZYBOのFile System (ramdisk)を修正してみました

はじめに

前回の記事で,ZYBO上でのLinux起動に成功しました. しかし,ZedBoardのデザインからramdisk8M.image.gzを流用したため,Linux起動時に下記のような警告が発生しています. そこで,この問題を修正するとともに,myled.koをLinux起動時にinsmodするようにramdiskを修正してみました. 初心者ですので,非効率だったり,不可解だったりする操作をしている可能性があります. その場合は,コメントなどでご指摘いただければ幸いです….

下記の記事が参考になりました.ありがとうございます.

作業ログ
  1. microSDHCカードとramdiskをマウントする
  2. ZYBOでLinuxを起動し,作業開始しました. 下記は,Tera Term上でのコマンド実行ログです.

  3. ramdiskの編集:/lib/modules以下の編集
  4. /mnt/ramdisk/lib/modules以下を編集し,myled.koを追加しました.

  5. ramdiskの編集:/etc/init.d/rcSと/usr/bin以下の編集
  6. /mnt/ramdisk/etc/init.d/rcSと/usr/bin以下を編集し,Linux起動時にmyled.koがinsmodされるようにしました.

    rcSは,「echo "++ Starting OLED Display"」より下部を下記のように変更しました. 既存記述をコメントアウトし,2行を追加記述しています.

    rcSから実行される,load_myledを作成しました.

    load_myledの内容は,下記の通りです.

  7. ramdiskとmicroSDHCカードをアンマウントする
  8. microSDHCカードに編集済みのramdisk.image.gzをコピーします.

  9. ramdisk.image.gzをuramdisk.image.gzに変換する
  10. ZYBO上のLinuxにはmkimageコマンドがないようでしたので,これ以降はPCのUbuntu上で作業を行います. microSDHC上のramdisk.image.gzをUbuntu上の任意の作業ディレクトリにコピーし,下記コマンドを実行します. 生成されたuramdisk.image.gzをmicroSDHCカードに上書きして,作業は完了です.

編集後のLinux起動ログ

myled.koがLinux起動時にinsmodされるようになりました.

製品紹介

Embedded Linux Hands-on Tutorial for the ZYBOをやってみました

はじめに

Digilentが提供している,Embedded Linux Hands-on Tutorial for the ZYBOをやってみました.

日本語情報としては,下記記事を参考にさせていただきました. Hands-on Tutorialだけでは初心者の私にはわかりづらい箇所は,ほとんど下記記事で補完されていました. 大変助かりました.

開発環境
Hardware Customization, Generate BOOT.BIN

ZYBO Base System Designのカスタマイズ関係(1. Hardware Customization, 3. Generate BOOT.BIN)は,Windows環境で行いました.

OS Microsoft Windows 7 Professional x64 Service Pack 1
Vivado Vivado 2014.4 WebPACK Edition (Windows)
SDK Xilinx SDK 2014.4
Compile U-Boot, Compile Linux Kernel以降

コンパイル環境については,Xilinx SDKを使用せず,PetaLinuxツールを使用しました. 参考にした上記記事との違いは,この点くらいです.

OS Ubuntu 14.04 LTS 32bit
PetaLinuxツール Zynq、MicroBlaze用 PetaLinux 2014.4
PetaLinuxツールのインストール

PetaLinuxツールをインストールしました.XilinxのWebサイトからFirefoxでダウンロードし,Installation Guideを参考にして,下記のようにコマンドを実行しました.

私の環境では,初回インストール時に下記メッセージが表示されてエラー終了しました.

下記コマンドでgawkをインストールすることで解決しました.

インストール中,下記のような警告が表示されました. どうやら,MicroBlazeシステムにLinuxシステムのイメージをダウンロードするために必要のようです. 今回は関係ないと判断し,無視しました.

作業ログ
1. Hardware Customization

上記の参考記事を読みながら進めました. 特に躓くことはなかったと思います. プロジェクトを開きなおすと「system_LEDs_4Bits_1.upgrade_log」が見つからないとのCritical Warningが出るので,プロジェクトから該当ファイルを削除しておきました.


Hardware Customization
2. Compile U-Boot

ここでも,特に躓くことはなかったと思います. Ubuntu上でのコマンド実行ログです.

3. Generate BOOT.BIN

参考記事と重複しますが,注意点だけ書きます.

  • workspaceのビルドが進まない
  • FSBLプロジェクトを作成後,自動的にビルドが開始されますが,進捗率が79%のまま動かなくなってしまいました. ビルドを中断させてFSBLプロジェクトを削除し,Xilinx SDKを再起動して再試行すると上手くいきました.
  • system.bitではなく,system_wrapper.bit
  • Hands-on Tutorialの3.2.10ではsystem.bitになっていますが,system_wrapper.bitでした.
4. Compile Linux Kernel

Ubuntu上でのコマンド実行ログです.

5. Test Kernel Image with Pre-built File System

参考記事にしたがい,5.2.1のzynq-zybo.dtsの編集は実行しませんでした. また,ramdisk8M.image.gzはZedBoardのデザインから流用しました.

[追記 2015/01/25] ramdisk8M.image.gzは,下記リンクからwget (ダウンロード)してきた方が良さそうです. 下記で述べているような,Linux起動時の警告が出なくなります. 「yuki-sato.com - 7. Zynq RAMディスク」が参考になりました. ありがとうございます.

Linuxが起動しました!下記はTera Term上のログです. 228行目付近で警告が出ています.ramdisk8M.image.gzをZedBoardのデザインから流用したことが原因でしょう. この問題については,次回記事「ZYBOのFile System (ramdisk)を修正してみました」で解決しました.

6. Modify Device Tree and Compose Kernel Driver

Ubuntu上でのコマンド実行ログです.

7. User Application

Ubuntu上でのコマンド実行ログです.