2014年10月19日日曜日

ZYBO 7 (DigilentのEmbedded Linux Hands-on Tutorial for the ZYBOを試してみる)

Digilent社のEmbedded Linux Hands-on Tutorial for the ZYBO.pdf (http://digilentinc.com/Data/Products/ZYBO/ZYBO-Embedded_Linux_Hands-on_Tutorial.pdf)に習ってZYBOでLinuxを動かしてみた。


記述内容が最新のリソースと整合していない点や誤植と思われる点も少なからずあって、手間取ることもあったが、基本的には書かれていることをトレースしていけば回路を作成し、U-bootをビルドし、Linuxをビルドし、作成した回路を制御するための簡単なドライバを作成し、実機で動作させることができた。

文書と不整合または注意を要する箇所のまとめ
  • 17ページ、Figure 34のU-Bootのコンパイルの部分でconfig名としてzynq_ZYBO_configとなっているが、これはzynq_zybo_configにする必要がある。 Makefileを見るとこのzynq_ZYBO_configという文字列はmkconfigというスクリプトに渡され、"_config"の部分を除いた文字列がCONFIG_NAMEという変数に設定されており、最終的にinclude/configs/$(CONFIG_NAME}.h をincludeするconfig.hを生成している。 したがって、config名の前半部はinclude/configs/下にあるファイル名と同じにする必要があるようだ。
  • 24ページ、Figure 46のgitリポジトリからLinuxカーネルソースを持ってくる部分でdefaultのブランチからgetしているが、このリポジトリにはzynq用のデバイスツリーのソースが含まれていないので、master-next branchからgetしたほうが良い。 つまり、 git clone -b master-next https://github.com/DigilentInc/Linux-Digilent-Dev.git  とやる。  2.4節のタイトルに"(Use the Master-Next Branch Until Further Notice)"という注記があるので、これで合っていると思う。 
  • 26ページ、Figure 51のdevice treeの編集の部分で、initrd=0x800000,8M とinitrdのアドレスとサイズを指定しているが、これだと内部で使用している別の領域とオーバラップしてしまうようで kernel panicになってLinuxが起動しない。

 文書作成時よりもLinuxカーネル内のサイズが増えて競合するようになったのかも知れない。initrdのアドレス指定は無くてもよくて、その場合は自動的に決定されるようだ。 zedboard用のdtsでも指定されていないので、指定しなくても良いと思う。 なので、以下のようにした。


  • 26ページ、Figure 52のUramdisk Image作成で、種ファイルとしてramdisk8M.image.gzを指定しているが、ファイルの作成法や存在場所等の説明が無い。 このファイルはDigilentのサイトから入手することができた。


このように色々と躓きがあって動作確認できるまでに時間がかかったが、それを除いて考えれば、誰でも、容易にLinuxを実装し、PL部に作成した回路用のドライバ並びにそれを制御するアプリを作成して動作させることができると言える。 まったく便利というか凄いことになったもんだ。


0 件のコメント:

コメントを投稿

TE0720 No.4 (BNN-PYNQを動かしてみる 2)

TE0720でBNN-PYNQを動かすことが出来た。 以下は前回に続いてBNN-PYNQが動くまでの記録。 gdb (GNU debugger)で例外が出る原因を調べてみた。 例外が発生しているのはシェアードライブラリ(python_hw-cnv-pynq.so)の中であ...