Работа с USB-портом На плате OrangePi Zero2 имеется четыре USB-порта: Порты USB3 и USB4 не имеют на плате собственных USB-разъемов, их сигнальные цепи (D+ и D-) выведены на 13-контактный разъем (гребенка), к которому можно подключать внешние USB-розетки с подачей +5В и GND с этой же гребенки. Для загрузки через USB внешний диск или флешка подключаются к разъему порта USB1. Описание хост-контроллера USB 2.0 и его регистров: В дереве устройств SPI-SPL USB1 описан в узле /soc следующим образом: usb@5200000 { compatible = "allwinner,sun50i-h616-ehci", "generic-ehci"; reg = <0x05200000 0x00000100>; interrupts = <0x00000000 0x0000001c 0x00000004>; clocks = <0x00000002 0x00000069 0x00000002 0x0000006d 0x00000002 0x00000062>; resets = <0x00000002 0x0000002b 0x00000002 0x0000002f>; phys = <0x00000015 0x00000001>; phy-names = "usb"; status = "okay"; phandle = <0x00000038>; };
Для сравнения - этот же узел в дереве устройств OpiZero2 для Android: Узел ehci1-controller@0x05200000 В переменных окружения ENV для загрузки через USB используются следующие переменные: boot_targets=fel mmc0 usb0 pxe dhcp distro_bootcmd=
bootcmd_usb0=
preboot=usb start usb_boot=
Из анализа этих команд следует, что для загрузки будет использован порт USB0, т.е. OTG, и это очень странно... В оболочке U-Boot для работы с USB предназначены команды: => help usb usb - USB sub-system Usage: usb start - start (scan) USB controller usb reset - reset (rescan) USB controller usb stop [f] - stop USB [f]=force stop usb tree - show USB device tree usb info [dev] - show available USB devices usb test [dev] [port] [mode] - set USB 2.0 test mode (specify port 0 to indicate the device's upstream port) Available modes: J, K, S[E0_NAK], P[acket], F[orce_Enable] usb storage - show details of USB storage devices usb dev [dev] - show or set current USB storage device usb part [dev] - print partition table of one or all USB storage devices usb read addr blk# cnt - read `cnt' blocks starting at block `blk#' to memory address `addr' usb write addr blk# cnt - write `cnt' blocks starting at block `blk#' from memory address `addr' Информационные команды показывают: => usb tree USB device tree: 1 Hub (12 Mb/s, 0mA) U-Boot Root Hub 1 Hub (12 Mb/s, 0mA) U-Boot Root Hub => usb info 1: Hub, USB Revision 1.10 - U-Boot Root Hub - Class: Hub - PacketSize: 8 Configurations: 1 - Vendor: 0x0000 Product 0x0000 Version 0.0 Configuration: 1 - Interfaces: 1 Self Powered 0mA Interface: 0 - Alternate Setting 0, Endpoints: 1 - Class Hub - Endpoint 1 In Interrupt MaxPacket 2 Interval 255ms 1: Hub, USB Revision 1.10 - U-Boot Root Hub - Class: Hub - PacketSize: 8 Configurations: 1 - Vendor: 0x0000 Product 0x0000 Version 0.0 Configuration: 1 - Interfaces: 1 Self Powered 0mA Interface: 0 - Alternate Setting 0, Endpoints: 1 - Class Hub - Endpoint 1 In Interrupt MaxPacket 2 Interval 255ms => usb dev no usb devices available => => usb storage No storage devices, perhaps not 'usb start'ed..? => Таким образом, данная версия пока не поддерживает полноценную работу с USB, поэтому загрузка системы с USB-диска не представляется возможной. |