2022-11-28
- nerves_system_kr260 の gpio, i2c の動作確認
dfx-mgrd
, dfx-mgr-client
をそれぞれ動作させることができ、 FPGA に bin を書き込んで dtbo で認識させて GPIO の動作を確認するところまでできた。
nerves_system_kr260 を利用するプロジェクト側の rootfs_overlay で用意しているリソース群を nerves_system_kr260 側で用意させることができれば使いやすくなる。次はこれかな。
耳の炎症からどうも 良性発作性頭位めまい症 になった可能性がある。
today i read
Xilinx/xmutil
xmulti はいくつかの実行バイナリのラッパー。今日の作業で関係するのは以下、
xmutil unloadpp
はdfx-mgr-client -remove
xmutil loadapp [args]
はdfx-mgr-client -load [args]
Xilinx/dfx-mgr
デーモン, dfx-mgrd
と クライアント, dfx-mgr-client
からなる。
Once you compile petalinux by enabling the dfx-mgr recipe, you should have dfx-mgrd and dfx-mgr-client in /usr/bin of rootfs and libdfx-mgr.so in /usr/lib. The config file daemon.conf can be found in /etc/dfx-mgrd/. Config file is mandatory, refer the files section for details of it. A default daemon.conf will be copied by the recipe and the user is expected to update as required.
refs. https://github.com/Xilinx/dfx-mgr/blob/xilinx_v2022.1_update2/README.md
Ubuntu for Kria SOMs の /
を grep
sudo grep -irn "dfx-mgrd" ./*
バイナリファイル ./bin/dfx-mgrd に一致しました
./etc/dfx-mgrd/daemon.conf:3: "default_accel":"/etc/dfx-mgrd/default_firmware"
バイナリファイル ./lib/aarch64-linux-gnu/libdfx-mgr.so.1.0 に一致しました
./lib/systemd/system/dfx-mgr.service:7:Description=dfx-mgrd Dynamic Function eXchange
./lib/systemd/system/dfx-mgr.service:11:ExecStart=/usr/bin/dfx-mgrd
バイナリファイル ./usr/bin/dfx-mgrd に一致しました
バイナリファイル ./usr/lib/aarch64-linux-gnu/libdfx-mgr.so.1.0 に一致しました
./usr/lib/systemd/system/dfx-mgr.service:7:Description=dfx-mgrd Dynamic Function eXchange
./usr/lib/systemd/system/dfx-mgr.service:11:ExecStart=/usr/bin/dfx-mgrd
調査対象
以下であるため、
lrwxrwxrwx 1 root root 7 6月 9 19:08 bin -> usr/bin
lrwxrwxrwx 1 root root 7 6月 9 19:08 lib -> usr/lib
以下のみを調べれば良い。
- /usr/bin/dfx-mgrd
- /usr/lib/aarch64-linux-gnu/libdfx-mgr.so.1.0
- /etc/dfx-mgrd/daemon.conf
- /usr/lib/systemd/system/dfx-mgr.service
調査結果
ls -la ./usr/bin/dfx-mgrd
-rwxr-xr-x 1 root root 10168 6月 8 21:43 ./usr/bin/dfx-mgrd
ls -la ./usr/lib/aarch64-linux-gnu/libdfx-mgr.so.1*
lrwxrwxrwx 1 root root 17 6月 8 21:43 ./usr/lib/aarch64-linux-gnu/libdfx-mgr.so.1 -> libdfx-mgr.so.1.0
-rw-r--r-- 1 root root 146728 6月 8 21:43 ./usr/lib/aarch64-linux-gnu/libdfx-mgr.so.1.0
cat ./etc/dfx-mgrd/daemon.conf
{
"firmware_location": ["/lib/firmware/xilinx"],
"default_accel":"/etc/dfx-mgrd/default_firmware"
}
ls -la ./usr/lib/systemd/system/dfx-mgr.service
-rw-r--r-- 1 root root 405 5月 10 2022 ./usr/lib/systemd/system/dfx-mgr.service
cat ./usr/lib/systemd/system/dfx-mgr.service
#
# DFX manager daemon is used to demonstrate Dynamic Function eXchange (DFX)
# or partial reconfiguration feature on Xilinx Zynq UltraScale+ and newer.
# See: UG909 "Vivado Design Suite User Guide Dynamic Function eXchange"
[Unit]
Description=dfx-mgrd Dynamic Function eXchange
Documentation=https://github.com/Xilinx/dfx-mgr
[Service]
ExecStart=/usr/bin/dfx-mgrd
[Install]
WantedBy=multi-user.target
Xilinx/libdfx
dfx-mgr が利用するライブラリ。 dfx_cfg_load
等の関数が実装されている。
内部的に echo -n
を使っており、 Nerves default の ash built-in echo だとエラーになる。
iex(6)> cmd "echo -n k26_starter_kits.dtbo /configfs/device-tree/overlays/k26-starter-kits_image_1/path"
-n k26_starter_kits.dtbo /configfs/device-tree/overlays/k26-starter-kits_image_1/path
0
[ 230.236416] (NULL device *): Direct firmware load for -n k26_starter_kits.dtbo failed with error -2
refs. https://github.com/Xilinx/libdfx/blob/xilinx_v2022.1_update2/src/libdfx.c#L228-L231
busybox に オプションありの echo を追加することで動作させることができた。
※そもそも libdfx で -n
オプションを使う必要や echo
で書き込む必要があるのかというのはある。。