2020年11月6日金曜日

meta-ultra96v2を作って、yoctoでビルドしてみたをwifi対応させてみた

前回のmeta-ultra96v2をwifi動作(+bluetooth, i2c, usb対応)させた話。 お手本はultra96v2向けのpetalinux projectで生成されるもの。

改訂版のmeta-ultra96v2はここ。 ビルド用のrepoはここだけど、時間が立つとこの記事に記載以上のものが追加される予定。(主にros2関係) petlainux-image-minimal-ultra96hwのビルドで同じものが生成されるようにはしておく。

今回はimageを新しく作成している。petalinux-image-minimalをコピーし、 必要なイメージをappendしている。 wifiだけ動かすつもりがどうせだからとHW動かすのに必要そうなものを乗せて、 petalinux-image-minimal-ultra96v2hwというimageを新しく作成した。

Wifi設定

CORE_IMAGE_EXTRA_INSTALL_appendで必要なパッケージを追加していく。 ultra96-ap-setupが必要そうなので、追加したが、エラーとなった。

対象の機能はCOMPATIBLE_MACHINEでultra96-zynqmpが指定されているため、 ultra96v2-zynqmpはCOMPATIBLEではないとのことであった。

ポイントはmeta-ultra96v2/conf/machine/ultra96v2-zynqmp.confに、 MACHINEOVERRIDES =. "ultra96-zynqmp:"を指定することだった。 これによってultra96v2-zynqmpのMACHINE設定はultra96-zynqmpとしても扱われるようになるため、 ultra96-zynqmp向けの設定を利用することができるようになる。 派生開発を行う際に非常に有用だなと思った。

他に必要となりそうなwilc,wilc3000-fw,wpa-supplicantとethtoolとbluetooth,i2c,usb関連ファイルを追加した。 Wifiは使えると便利なので確認したけどbluetooth,i2c,usbは使う時が来たときに確認する。

sdイメージへのファイル追加

実機動作させる際にpetalinux-image-minimal-ultra96v2hw-ultra96v2-zynqmp.wic.qemu-sdを使用しても 立ち上がらなかったので中を除いてみるとboot.binが無い様だった。

meta-ultra96v2/conf/machine/ultra96v2-zynqmp.confのIMAGE_BOOT_FILESにboot.binを追加して事なきを得た。 こうしておくと以下のようにsdのデバイスに対してddするだけでよくなるので便利。 この方法だとroot領域拡張するには少し工夫がいるので注意は必要。

dd if=<build_directory>/tmp/deploy/images/petalinux-image-minimal-ultra96v2hw-ultra96v2-zynqmp.wic.qemu-sd of=/dev/sdX

準備

https://github.com/Xilinx/yocto-manifests に記載の通り、repo環境を整える。

curl -k https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod a+x repo
sudo mv repo /usr/local/bin/

manifestを取得し、yocto環境を整える

cd <petalinux-project-path>
repo init -u http://github.com/akira-nishiyama/petalinux-ros2-manifests -b main
repo sync
source setupsdk

この後環境を整える。 build/conf/local.confを開き、末尾のコメントアウトされている部分を編集する。 xsaは指定しないとエラーになるかも。(デフォルト設定があるかどうかよく知らない) QB_TAP_OPTはお好みで。

HDF_EXT_ultra96v2-zynqmp = "xsa"
HDF_BASE_ultra96v2-zynqmp = "file://"
HDF_PATH_ultra96v2-zynqmp = "<xsa-file-path>/<yourdesign.xsa>"
QB_TAP_OPT_forcevariable = "-netdev tap,id=net0,ifname=tap0"

もしも適当なxsaが無い場合はこれを使用してxsa生成すると良いかも。 5a685e1e648a6ba7814c3b99ba6bafd71ceab74bが記事作成時点のデータとなっている。 以下のようにしてxsaが得られる。 windows環境で動くようにはしていないのであしからず。

cd
git clone https://github.com/akira-nishiyama/vivado_cmake_helper.git
gic clone https://github.com/akira-nishiyama/ultra96v2_4z
source <path>/<to>/Vivado/2019.2/settings.sh
source vivado_cmake_helper/setup.sh
cd ultra96v2_4z
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<xsa-file-path>
make
make install

ビルド

設定したら今度は以下のコマンドを発行。

cd <petalinux-project-path>/build
MACHINE=ultra96v2-zynqmp bitbake petalinux-image-minimal-ultra96v2hw

動作確認

ddでwic.qemu-sdを書き込み動作。 シリアルを確認するとrootでログインしているのが確認できる。 wifiの電波も飛んでいるので、接続の上、以下のコマンドで192.168.2.1にsshでrootアクセス可能なことを確認した。

ssh 192.168.2.1 -l root

0 件のコメント:

コメントを投稿