#環境
トラブルが起きた環境は以下の通り。
- Petalinux v2018.2 (v2015.4でも同様にエラー)
- Zybo Z7-20
ZYBO-Z7を用いたLチカ(Ubuntu16.04編)を参考にZybo上でUbuntuをSDブートで起動、Lチカの動作まで確認した。
最終的な目標はOpenCRボードをZynqに接続してTurtlebot3を動作させることだが、OpenCRを認識しなかった。試しにUSBメモリを接続したところ、給電すらされていないことがわかった。
sudo fdisk -l
を実行してもUSBメモリを認識しない。
#対処方法
Zynq Linux USB Device Driver
Zybo+PetalinuxでUVCカメラを使う
これらを参考にデバイスツリーを編集する。ユーザが定義するデバイスツリーはプロジェクト名/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dstiにある。
/include/ "system-conf.dtsi"
/{
usb_phy0: usb_phy@0 {
compatible = "ulpi-phy";
#phy-cells = <0>;
reg = <0xe0002000 0x1000>;
view-port = <0x0170>;
drv-vbus;
};
};
&usb0 {
compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2";
status = "okay";
clocks = <0x1 0x1c>;
dr_mode = "host";
interrupt-parent = <0x4>;
interrupts = <0x0 0x15 0x4>;
reg = <0xe0002000 0x1000>;
usb-phy = <&usb_phy0>;
};
編集しおわったらpetalinux-build
コマンドでビルドし直せばUSBに給電・USBメモリは認識される。
USBカメラなどを使うにはカーネルの設定が更に必要らしい。
#Kernel Configurationの表示方法
Zynq Linux USB Device DriverにはKernel Configurationという項目がある。
このメニューは
petalinux-config -c kernel
で表示させることができる。(今回はデフォルトでOK)
#解決までに参照したリンク
このあたりの問題は解決されているらしい? OTGを切れと書いてあるけど別に切らなくてもデバイスツリーを編集すれば解決した。
Zynq 7000 USB with mainline kernel is broken
Petalinux 2015.2.1 usb not working
次はOpenCRとUSBカメラを動作させる。