ZYBOで動く更新頻度が高いLinuxディストリビューションを探すシリーズ。
何か程よいのを見つけて、さっさとHDLの勉強に入りたいのだが、自分にとってPS/PLを使うのに一番楽な方法を探したいのだ。
Yocto Projectはレイヤーを選ぶことでいい線までいったけど、bitstreamをなんとかせんといかんようなので、一時中断。
Xillinuxはよさそうだったけど、Ubuntu 12.04 LTS for ARMもサポートが終了したのかもしれないので、今回は見送り。
次に出てきたのは、PetaLinuxだ。
次、というよりは、Xilinxがメンテナンスしているから、むしろ本命だろう。
ダウンロードはこちら。
毎回最新のものが置かれているようで、今は2017/06/29にリリースされたv2017.2がダウンロードできる。
リリースノート。
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っぽいものが出てきた。
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という設定があった。
なんじゃこりゃ?
リファレンスガイドのAppendix CにAuto Config Settingsの説明がある。
この辺のファイルを設定しておいたら、自動的に参照してkernelなどに反映してくれるような気がする。
深みにはまりそうなので、次回に回そう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。