Edited at

Ultra96 ボードで petalinux 2019.1 を動かすメモ

久々の投稿です。

悪戦苦闘の結果、ultra96 (version 1 基板?) 上で petalinux 2019.1 を動かすことが出来たので、メモします。


準備

Vivado で ultra96 ボードを選択し(ultra96ボードの定義ファイルは avnet の GitHub に落ちています)、プロジェクトを作成します。

ZynqMP+ を配置し、クロックのみ配線します(右側に出ているクロック端子を左の2つのクロック端子に直配線します)。

通常通り bitstream 作成を行い、Vivado SDK にエクスポートします。この時、bitstream を含むようにします。


wpa_supplicant.conf の編集

自分が使う AP に合わせて wpa_supplicant.conf を編集します。


wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant

ctrl_interface_group=0
update_config=1

network={
key_mgmt=WPA-PSK
ssid="[ssid]"
psk=[wpa_passphrase で生成したパスワード]
}


などとすれば OK。


petalinux プロジェクトの作成


コンソール

petalinux-create -t project -n ultra96 --template zynqMP


などとして、ultra96 プロジェクトを作成します。ultra96 ディレクトリに cd で移動します。


コンソール

petalinux-config --get-hw-description=[Vivado SDK 用の hdf を含むディレクトリ]


でハードウェア情報を取り込みます。


デバイスツリーの修正

デバイスツリーを修正して、デバイスが認識できるようにします。

微妙な感じですが、私が適用したものをここに置きましたのでご参考までに。

device-tree ディレクトリ以下にあるファイルを ultra96/project-spec/meta-user/recipes-bsp/device-tree 以下にコピーします。


kernel の設定

nl80211 および wl18xx デバイスドライバを利用するように設定します。petalinux のデフォルトでは両方とも使用するようになっているようです。


roofs への iw, wifi-firm アプリの追加


コンソール

petalinux-create -t apps -n iw

petalinux-create -t apps -n wifi-firm

を実行し、iw, wifi-firm アプリを生成します。これらはここに置いてある iw, wifi-firm で置き換えます。

ちなみに iw は iw-5.0 の Makefile を bitbake 用に書き換えたものです。wifi-firm は TI wl18xx 用のファームウェアです。公式版はここに置いてあることになっていますが、私の手持ちとちょっと違うようです。


ライブラリ、アプリの有効化


コンソール

petalinux-config -c rootfs


を実行し、libnl, wpa_supplicant, iw, wifi-firm を選択する。


コンパイル実行

petalinux-build を叩いて bitbake を起動する。気長に待つ。

途中ワーニングが出るが気にしない。


BOOT.BIN 作成と SD イメージ作成

後は SD カードを用意していつもの作業。

SD カードは fdisk で予めパーティションを2つ切っておきます。


コンソール

cd images/linux

petalinux-build --force --boot --fsbl zynqmp_fsbl.elf --fpga system.bit --pmufw pmufw.elf --u-boot
sudo mount -t vfat /def/sdd1 /mnt
sudo cp BOOT.BIN image.ub /mnt
sudo umount /mnt
sudo dd if=rootfs.ext4 of=/dev/sdd2
sudo e2fsck -f /dev/sdd2
sudo resize2fs /dev/sdd2

私の環境では SD カードスロットが /dev/sdd* でしたが、それぞれの環境に合わせてください。

SD カードを ultra96 に挿して起動すると wifi が起動するはずです。

お疲れ様でした。


問題点


  1. wpa_supplicant.conf-sane はコンフィグ時に定期的に監視しているらしく、いつの間にか置き換え前の内容に戻ってしまう場合があります。

    その場合は改めて wpa_supplicant.conf-sane をコピーして bitbake を起動し直すと良いようです。


  2. ユーザは最初 root しかいませんが、ssh は root によるログインを禁止しているため、結局ネットワーク経由では最初は入れません!

    この問題は新たなユーザを useradd 等で作成すると解決できますが、bitbake 時に予め作っておく方法が分かりませんでした。