2017/07/09

[zybo]PetaLinux (1)

ZYBOで動く更新頻度が高いLinuxディストリビューションを探すシリーズ。
何か程よいのを見つけて、さっさとHDLの勉強に入りたいのだが、自分にとってPS/PLを使うのに一番楽な方法を探したいのだ。

Yocto Projectはレイヤーを選ぶことでいい線までいったけど、bitstreamをなんとかせんといかんようなので、一時中断。
Xillinuxはよさそうだったけど、Ubuntu 12.04 LTS for ARMもサポートが終了したのかもしれないので、今回は見送り。


次に出てきたのは、PetaLinuxだ。
次、というよりは、Xilinxがメンテナンスしているから、むしろ本命だろう。


PetaLinux ツール

ダウンロードはこちら。
毎回最新のものが置かれているようで、今は2017/06/29にリリースされたv2017.2がダウンロードできる。

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html


リリースノート。
AR# 69372: PetaLinux 2017.2 - Product Update Release Notes and Known Issues

Yoctoもリストに載っているので、rel-v2017.2のyocto-manifestsをレイヤーとして選んでbitbakeするのと同じような環境になるのかもしれない。
リファレンスガイド(pdf)の最初にも「Yocto Extensible SDK」と書いてあるし。

対応ボードには、残念ながらZYBOは入っていない。
ZYBOのページからpetalinux-bspsに飛べたのだが、コメントを見る限りではv2016.2かv2015.4のようだ。

ただ、こちらを見ると、z-turnというボード向けにを汎用テンプレートから環境を作っているようなので、ZYBOも似たようなことができるはずだ。
電気回路/zynq/Petalinux のビルド - 武内@筑波大

まあ、それだったらYoctoでrel-v2017.2を試したときにやればよかったやん、ということになるが、あのときはまだ知識が足りなかったのだよ。


まずは、PetaLinuxツールのインストール。
うちはVirtualBoxで動いているXubuntu16.04にインストールした。

petalinux-v2017.2-final-installer.runというファイルがダウンロードできたのだが、これが7.7GBもある。
そして、インストールにはかなり時間がかかる。
インストールは実行したディレクトリに行われるか、引数で与えたディレクトリに行われる。
リファレンスガイドを読む前にインストールしたので、runファイルをダウンロードしたディレクトリで実行してしまい、長い時間待たされて、そのあとでインストールするディレクトリ選択が出てこなかったので、一度終了させてcdしてまたやりなおし、という手間を掛けてしまった。
なお、sudoはいらない。

インストール時に出てくるログは、武内氏のサイトとだいたい同じ。
環境変数を設定するスクリプトのことも出力されているようだが、いくつもインストールが行われているので流されてしまった。
リファレンスガイドでは、インストールディレクトリにあるsettings.shをsourceすればよいようだ。
これを実行すると、空きディスクなどもチェックするためか、まあまあ時間がかかる。
うちでは、tftp serverがないと警告された。
SDカードに焼くつもりだから、無くても大丈夫かな? ダメだったらインストールしよう。

gccはリリースノートに書いてあったように、6.2.1。


そして、z-turn用のプロジェクトを作っているのを真似して、ZYBOの環境を作りたい。
petalinux-createコマンドを実行すると、そのディレクトリにディレクトリが作られた。

$ petalinux-create -t project -n petazybo --template zynq

なお、-sでBSPのパスを指定することもできるようだ。
petalinux-bspsをcloneして指定したが、そういうものではないようだ。
plnx_bsp_creator.shというスクリプトを動かしてみたが、petalinux-packageでエラーになっている。
bootは"arm"しかサポートしていないなどといっているのだけど、今回は忘れよう。


そして、petalinux-configの実行
system.hdfだけじゃなくて、他にもいろいろいるようだ。
LED点滅だとHardware Exportが使えないので、ZYBOのチュートリアルで作ったフォルダを指定した。
platformの0と1が同じファイル構成に見えるので、よくわからんが0にしておいた。

$ petalinux-config --get-hw-description=../design_1_wrapper_hw_platform_0

そうすると、menuconfigっぽいものが出てきた。

image

Exitして保存すると、bitbakeが走り出した。
時間がかかるので、放置しておこう。

ここまで、エラー無しで完了した。
まだZYBOっぽい設定はしていないのだけど、大丈夫だろうか。。



次はkernelのビルド
サイトの人はここでエラーが出たらしいが、うちはどうだろう?

$ petalinux-build -c kernel

うちは大丈夫だった。
バージョンが上がったので、なんか対処されたのかもしれないし、ずっと開発に使っているXubuntuなので別のことで対処されていたのかもしれん。
LANGはen_US.UTF-8にしていた。

$ ls images/linux
design_1_wrapper.bit  rootfs.tar.gz     u-boot.bin  zImage
rootfs.cpio           system.dtb        u-boot.elf  zynq_fsbl.elf
rootfs.cpio.gz        System.map.linux  vmlinux

-cなしでビルドすると、image.ubとrootfs.tar.gzもできるらしい。
最初からそれでよかったのかも。

$ petalinux-build
(...)

$ ls images/linux
design_1_wrapper.bit  rootfs.cpio.gz  System.map.linux  vmlinux
image.ub              rootfs.tar.gz   u-boot.bin        zImage
rootfs.cpio           system.dtb      u-boot.elf        zynq_fsbl.elf

増えてる。



uImageの作成はやらなくてよいことがわかったらしいので、スキップ。
BOOT.binの作成はいるだろう。

petalinux-packageコマンドは、petalinux-bspsで失敗したあれだ。
生成されているファイル名もサイトと同じなので、同じことをやってみよう。

$ petalinux-package --boot --fsbl images/linux/zynq_fsbl.elf --fpga  images/linux/design_1_wrapper.bit --u-boot --force
INFO: File in BOOT BIN: "/home/xxx/Xilinx/petauser/petazybo/images/linux/zynq_fsbl.elf"
INFO: File in BOOT BIN: "/home/xxx/Xilinx/petauser/petazybo/images/linux/design_1_wrapper.bit"
INFO: File in BOOT BIN: "/home/xxx/Xilinx/petauser/petazybo/images/linux/u-boot.elf"
INFO: Generating zynq binary package BOOT.BIN...
INFO: Binary is ready.
WARNING: Unable to access the TFTPBOOT folder /tftpboot!!!
WARNING: Skip file copy to TFTPBOOT folder!!!

TFTP serverを準備していないので警告が出ているが、全体としては問題なさそうだ。
カレントディレクトリに2.5MBくらいのBOOT.BINができていた。
images/linuxにもコピーされているようだ。


SDカードにコピーする前に、リファレンスガイドを読んでおこう。
バージョンが違うので、何か違いがあるかもしれん。

  • 今回のpetalinux-createの使い方は、"Create New Project"に書いてあるやり方。
    --templateでCPU_TYPEを指定する。
  • "Version Control"でgitignoreの中身が書いてある。
    petalinux-bspsのスクリプトにもあったが、確かめていないし、今回はgitに入れてない。
  • "Import Hardware Configuration"がsystem.hdfのあるフォルダを指定したところ。
    項目の"Subsystem AUTO Hardware Settings"を確認するように書かれているが、今回はやってないな。
  • "Build System Image"は、同じだ。
  • "Generate uImage"は、今回スキップした内容だろう。
    FITを使いたくないときは、これでuImageを作るとよいそうだから、覚えておこう。
  • BOOT.BINは、"Generate Boot Image for Zynq Family Devices"だろう。
    今回は--forceを付けたが、リファレンスガイドには付いていなかった。
  • "Package Prebuilt Image"は、JTAG/QEMUでブートするためのものか?
    "not mandatory to boot with JTAG/QEMU"と書いてあるけど、withoutではなかろうか。
  • "Boot a PetaLinux Image on Hardware with SD Card"がSDカードの準備だろう。
    BOOT.BINとimage.ubをFAT32に置けばよいらしい。

というわけで、サイトに書いてあるのと同じだ。


コピーして、ZYBOに挿して起動すると、普通に立ち上がってしまった。

PetaLinux 2017.2 petazybo /dev/ttyPS0

petazybo login: root
Password:
Login incorrect

いや、パスワードなんて知らないんですけど!
あ、rootのrootでいいのか。

# uname -a
Linux petazybo 4.9.0-xilinx-v2017.2 #1 SMP PREEMPT Sun Jul 9 12:54:30 JST 2017 armv7l GNU/Linux

へー。
ZYBOっぽいことを何もしなくても、立ち上がるだけなら立ち上がるんだ。
DONE LEDも点灯している。


起動ログを載せたいところだが、ブログエディタでそういう便利なものがまだ使えないので、割愛だ。

最初はU-Bootのログから始まる。
これは、SPLがU-Boot側で提供されるとか何とか書いてあったことと関係するのかな?

しかし、bitstreamを読んだようなログがないし、FPGAっぽいものといえば、

FPGA manager framework
fpga-region fpga-full: FPGA Region probed

くらいだ。


困ったことに、ethernetにつながらない。
DHCPでも見つからないし、staticに割り当てても見つからん。
しかし、LINK LEDは点灯しているし、ACT LEDも点滅している。
ということは、ドライバなんだろう。

Generic PHY e000b000.etherne:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=e000b000.etherne:00, irq=-1)
e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
e1000e: Copyright(c) 1999 - 2015 Intel Corporation.

とログが出ているが、ZYBOに載っているチップにカニが見えるので、Realtekだろう。

petalinux-configして出てくるmenuconfigで、"Subsystem AUTO Hardware Settings"の中を見るとEtherenetの設定があって、その中にPrimary Ethernetという設定があった。

image

なんじゃこりゃ?

リファレンスガイドのAppendix CにAuto Config Settingsの説明がある。
この辺のファイルを設定しておいたら、自動的に参照してkernelなどに反映してくれるような気がする。


深みにはまりそうなので、次回に回そう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。