petalinux 2018.2 で ZYBO の eth0 を使う

本当に久々の記事更新です。
既知の問題かも知れませんが、散々ぐぐっても出てこなかったので、ここにメモしておきます。

petalinux 2018.2 を使い、ZYBO (Z7 ではなくて古いボード) の eth0 を使おうとしたところ

macb e000b000.ethernet eth0: unable to generate target frequency: 125000000 Hz

という謎のエラーが出て PHY チップと通信できない問題が発生。

ぐぐってもよくわからず、最終的に

https://github.com/wzab/Z-turn-examples/blob/master/README.md

を読んで気づきました。Vivado 2018.2 では ZYNQ-7000 の ENET0 のクロックソースがデフォルトで External になっていることを…。

記事にある通り、IO PLL に設定して hdf ファイルを再作成し、petalinux を再コンパイルしたところ、問題なくリンクが上がりました。
(petalinux 設定はこのサイトを見て実行しました。また、eth0 ポートは GbE に挿してください。)

あとはジャマな IPv6 設定を

echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

として無効化し、udhcpc を再起動すると IPv4 アドレスが無事、家庭内ルータから取得できました。