Jump to content

    

Bear_ku

Участник
  • Content Count

    175
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Bear_ku

  • Rank
    Частый гость

Recent Profile Visitors

2215 profile views
  1. MAC + PHY

    Всем спасибо. Проблема была все-таки в тактовой частоте. На выходе LAN7801 она появлялась только после поиска имеющихся PHY, соответственно ничего найти и не получалось. После исправления данного явления нужные дрова для PHY подтянулись без каких-либо дополнительных манипуляций. Осталось разобраться как осуществляется переключение с меди на оптику.
  2. MAC + PHY

    По поводу сброса. Сигнал сброса PHY_RESET_N LAN7801 как уже выше написал висит 2 мс, хотя в ДШ сказано минимум 4 мс. По простому это время увеличить не удалось (хотел периодически устанавливать флаг сброса). Соединил сигналы сброса RESET_N у микросхем MAC и PHY с кнопкой сброса, результат не изменился. Или MAC обязательно должен сам сбросить PHY?
  3. MAC + PHY

    Драйвер должен быть рабочим. Коллега на работе уже имел с ним дело, но он подключался напрямую к FPGA Xilinx. Т.е. его опыт мне не помог )
  4. MAC + PHY

    Сброс 2мс. Спасибо, попробую проверить сейчас этот вариант. Соответствуют ДШ, 2.2 кОм. Когда экспериментировал, пробовал менять номиналы подтяжек и добавлял их еще на MDC, ничего не дало.
  5. MAC + PHY

    Делал. Никакого отличия. Но в случае модуля я знаю как посмотреть его загрузку, а вот если включить в ядро - нет )
  6. MAC + PHY

    Драйвера на MAC смотрел, но сильно глубоко не копался. Как раз исходя из них и сделал вывод, что надо где-то указать используемый PHY. С включением питания надо разбираться отдельно, но при перезагрузке дело доходит до сообщения: ... phydev = phy_find_first(dev->mdiobus); if (!phydev) { ... } else { if (!phydev->drv) { netdev_err(dev->net, "no PHY driver found\n"); return NULL; } } Т.е. сам МАС "найден", а вот драйверы для него - нет. При этом в структурах сидят следующие значения: phydev->phy_id = 0 phydev->mdio->addr = 0 Значение в phy_id на сколько я понимаю должно соответствовать 88E1512, что явно далеко до истины. Вот разводка данной части, сигналы MDIO и MDC снизу, отдельно выделены. Слои TOP - зеленый, BOTTOM - желтый, GND - внутренний слой земли. Единственное что сигналы изначально на схеме были перепутаны и их пришлось перекинуть проводами, но тут не те скорости чтобы это на что-то повлияло. Подтяжка к питанию осталась на MDIO. Ресет проверю. А вот usb 3.1 тут по факту не используется, т.к. USB HUB 2.0. Или все равно это может на что-то повлиять?
  7. MAC + PHY

    Не разбираясь в вопросе, сложно собрать сразу всю необходимую информацию. PHY вообще не грузится, просто понимает это драйвер LAN7981 только после перезагрузки и тогда сетевое соединение уже не появляется в системе. При сборке ядра были добавлены модули: Deivice Drivers ---> Network device support ---> PHY Device support and Infrastructure ---> <M> Marvell PHYs USB Network Adapters ---> <M> Microchip LAN78XX Based USB Ethernet Adapters Вот модуль драйвера marvell на загруженной системе: pi@raspberrypi:/lib/modules/4.19.71-rt24-v7+/kernel/drivers/net/phy$ ls marvell.ko mdio-bitbang.ko Список загруженных системой модулей одинаковый при включении и перезагрузке: Module Size Used by sha256_generic 20480 0 cfg80211 626688 0 rfkill 28672 2 cfg80211 8021q 32768 0 garp 16384 1 8021q stp 16384 1 garp llc 16384 2 garp,stp lan78xx 49152 0 bcm2835_codec 36864 0 snd_bcm2835 24576 1 bcm2835_v4l2 45056 0 v4l2_mem2mem 24576 1 bcm2835_codec bcm2835_mmal_vchiq 32768 2 bcm2835_codec,bcm2835_v4l2 raspberrypi_hwmon 16384 0 v4l2_common 16384 1 bcm2835_v4l2 hwmon 16384 1 raspberrypi_hwmon videobuf2_dma_contig 20480 1 bcm2835_codec snd_pcm 98304 1 snd_bcm2835 videobuf2_vmalloc 16384 1 bcm2835_v4l2 videobuf2_memops 16384 2 videobuf2_dma_contig,videobuf2_vmalloc videobuf2_v4l2 24576 3 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem videobuf2_common 45056 4 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem,videobuf 2_v4l2 snd_timer 32768 1 snd_pcm snd 69632 5 snd_timer,snd_bcm2835,snd_pcm videodev 184320 6 bcm2835_codec,v4l2_common,videobuf2_common,bcm28 35_v4l2,v4l2_mem2mem,videobuf2_v4l2 media 36864 3 bcm2835_codec,videodev,v4l2_mem2mem vc_sm_cma 36864 1 bcm2835_mmal_vchiq uio_pdrv_genirq 16384 0 uio 20480 1 uio_pdrv_genirq fixed 16384 0 ip_tables 24576 0 x_tables 32768 1 ip_tables ipv6 454656 22 Т.е. видно что драйвер marvell даже и не думал грузиться. По крайней мере мне сказали что если модуль был загружен, то вряд ли его кто-то выгружал. Про питание уже писал, оно соответствует ДШ. Тактирование в норме. По отдельности обе микросхемы работают. Про MDIO уже выше писал, сигнал с LAN7981 идет, а вот ответа от PHY нет, по крайней в том запросе что ловится осциллографом. При этом если подключиться к этой шине (к выводам RPi), то регистры с PHY считываются без проблем. В схеме ничего секретного нет ( IM_61850.pdf ). Задавая тут вопрос, не думал что кто-то реально полезет со всем этим разбираться, просто надеялся на имеющийся опыт. А как может повлиять на MDIO разводка, вообще не представляю. Вырезки из логов выкладывал, вроде в dmesg ничего больше дела не касалось, но можно приложить и всю портянку. И о каких настройках идет речь? В системе все по умолчанию на данный момент, первое что начал делать это device tree, изменения в котором выложил выше.
  8. MAC + PHY

    Сейчас у меня к базовой плате подключено два одинаковых модуля. На одном адрес PHY "0", на другом "1". После включения (на пойманном осциллографе сообщении адрес 0, загрузились eth0 и eth1): [ 3.162884] usb 1-1.1: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 [ 3.177790] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.266887] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 3.365955] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 [ 3.380600] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 ... [ 10.741131] libphy: lan78xx-mdiobus: probed [ 10.741223] lan78xx 1-1.1:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.967083] libphy: lan78xx-mdiobus: probed [ 10.967241] lan78xx 1-1.2:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.998643] usbcore: registered new interface driver lan78xx При перезагрузке (на пойманном осциллографе сообщении адрес 1, загрузился только один eth0): [ 3.170826] usb 1-1.1: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 [ 3.185233] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.211023] systemd[1]: System time before build time, advancing clock. [ 3.273810] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 3.372948] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7801, bcdDevice= 3.00 ... [ 9.754045] libphy: lan78xx-mdiobus: probed [ 9.754149] lan78xx 1-1.1:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.007435] libphy: lan78xx-mdiobus: probed [ 10.007467] lan78xx 1-1.2:1.0 (unnamed net_device) (uninitialized): int urb period 64 [ 10.015888] lan78xx 1-1.2:1.0 eth1: no PHY driver found [ 10.015902] lan78xx 1-1.2:1.0 eth1: lan7801: PHY Init Failed [ 10.055475] lan78xx: probe of 1-1.2:1.0 failed with error -5 [ 10.055645] usbcore: registered new interface driver lan78xx Согласен, адрес PHY не меняется. Меняется адрес в сообщении, он задается программно и PHY к нему отношение имеет только косвенное, т.е. может ответить на свой и молчать на чужой.
  9. MAC + PHY

    Тут реально ошибка. Исправил на 7801, изменений нет. С отладочными сообщениями у меня проблема. Вроде бы и включил их в .config, размер библиотек вырос раза в 3. Но в dmesg новой информации, по крайней мере касательно интересующей темы, не появилось. Если подскажете как правильно сделать и куда смотреть, буду благодарен. По поводу осциллограмм написал выше. Обращение к PHY есть, но ответа нет, по крайней мере в том сообщении что я вижу. При этом адрес устройства в этом сообщении меняется, при включении "0", при перезагрузке "1". Но в обоих случаях PHY ничего не отвечает. Когда PHY проверял отдельно, он вел себя адекватно. Вот цитата из документации: Required properties: - compatible: Should be one of "usb424,7800", "usb424,7801" or "usb424,7850". Честно говоря не понял к чему это относится. Адрес выставляет LAN7801 и это программная часть, на PHY он задан подтяжкой к соответствующему уровню.
  10. MAC + PHY

    Настройку 88E1512 брал отсюда: https://forums.xilinx.com/t5/Embedded-Linux/Dual-Marvell-88e1512-PHY-Ethernet-problem-Xilinx-LInux/m-p/731207#M17356 Там используются два варианта настроек для "compatible": compatible = "marvell,88e1510"; и compatible = "marvell"; Оба варианта не дали никакого результата. Я выше добавил пример из документации, там делается так. Не знаю как по другому указать, что MDIO от PHY подключен именно к LAN7801 и как еще задать адрес. В ходе загрузки получается что модуль с драйвером marvell не грузится. На шине MDIO адрес при включении платы "0", после перезагрузки "1". Вообщем живет своей жизнью. Осциллографом успеваю поймать только одно обращение по шине. Вскоре приедет логический анализатор и может он хоть что-то даст. Ну и как написал выше, МАС адрес из Devicetree на сетевое устройство не подключается. Т.е. там может ерунда написана, но может его еще кто-то правит.
  11. MAC + PHY

    А что именно вас тут смущает? И может подскажете как посмотреть, что реально из этого загружается? Вот пример из Devicetree на lan78xx &usb { usb-port@1 { compatible = "usb424,2514"; reg = <1>; #address-cells = <1>; #size-cells = <0>; usb-port@1 { compatible = "usb424,2514"; reg = <1>; #address-cells = <1>; #size-cells = <0>; ethernet: ethernet@1 { compatible = "usb424,7800"; reg = <1>; local-mac-address = [ 00 11 22 33 44 55 ]; mdio { #address-cells = <0x1>; #size-cells = <0x0>; eth_phy: ethernet-phy@1 { reg = <1>; microchip,led-modes = < LAN78XX_LINK_1000_ACTIVITY LAN78XX_LINK_10_100_ACTIVITY >; }; }; }; }; }; };
  12. MAC + PHY

    Плату делал другой человек. Я сейчас перепроверяю за ним, каких-либо критических ошибок не нашел. VDDO_SEL подтянут к земле, т.е. выбраны уровни 2.5-3.3В, что соответствует уровням на плате 3.3В. CONFIG на одной плате подключил к земле, на другой к питанию, т.е. адреса PHY 0 и 1. Оба не грузятся. PHY_RESET_N c LAN7801 подключен напрямую к RESETn 88E1512. Ориентируясь на Device Tree от Raspberry Pi 3 добавил свой кусок: /dts-v1/; /plugin/; /{ compatible = "brcm,bcm2837"; fragment@0 { target = <&usb>; __overlay__ { usb2512b@1 { compatible = "microchip,usb2512b"; reg = <0x2c>; #address-cells = < 0x01 >; #size-cells = < 0x00 >; ethernet1: usbether@1 { compatible = "usb424,7800"; reg = <1>; local-mac-address = [ 00 11 22 33 44 55 ]; mdio { #address-cells = <0x1>; #size-cells = <0x0>; eth_phy1: ethernet-phy@1 { compatible = "marvell,88e1510"; device_type = "ethernet-phy"; reg = <0>; }; }; }; ethernet2: usbether@2 { compatible = "usb424,7800"; reg = <1>; local-mac-address = [ 00 10 20 30 40 50 ]; mdio { #address-cells = <0x1>; #size-cells = <0x0>; eth_phy2: ethernet-phy@2 { compatible = "marvell,88e1510"; device_type = "ethernet-phy"; reg = <0>; }; }; }; }; }; }; }; Но изменений нет, даже МАС адреса не изменяются. Все таки надеюсь что разгадка кроется где-то тут ) Дальше уже полезу кромсать плату и заводить MDIO на ноги RPi, минуя USB-MAC.
  13. MAC + PHY

    Проверил питание. На плате стоит преобразователь 5В в 3.3В, 1.8В и т.д., все уровни в норме. Результат "ifconfig eth0": eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 169.254.224.86 netmask 255.255.0.0 broadcast 169.254.255.255 inet6 fe80::9ebf:84d3:f9d9:3a78 prefixlen 64 scopeid 0x20<link> ether 36:47:d6:da:be:d5 txqueuelen 1000 (Ethernet) RX packets 33 bytes 5290 (5.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 197 bytes 13050 (12.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Но работает не стабильно (например при подключении к свичу теряется до 80% пакетов) и до первой перезагрузки. После этого вываливаются ошибки: [ 9.750190] lan78xx 1-1.1:1.0 eth0: no PHY driver found [ 9.750203] lan78xx 1-1.1:1.0 eth0: lan7801: PHY Init Failed Сейчас ищу способ подружить LAN7801 с 88E1512. А, да, еще есть такой момент. Для LAN7801 при включении вообще не важен PHY. А если убрать связь по MDIO с PHY, сетевое соединение не отваливается и при перезагрузке.
  14. MAC + PHY

    Результат "lsusb": Bus 001 Device 003: ID 0424:7801 Standard Microsystems Corp. Bus 001 Device 002: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Результат "cat /proc/net/dev" Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed eth0: 2402 27 0 2 0 0 0 0 9897 131 0 0 0 0 0 0 lo: 6270 66 0 0 0 0 0 0 6270 66 0 0 0 0 0 0 За совет спасибо, буду смотреть что делает драйвер lan78xx. С питанием проблем не должно быть, все подключено к лабораторному ИП и его возможности на порядок превышают требуемые. К ПК подключить не могу, плата с сетевыми интерфейсами сделана нашлепкой на базовую плату и стандартного разъема USB у нее нет. А вот результат команды "ethtool eth0": Settings for eth0: Supported ports: [ TP AUI BNC MII FIBRE ] Supported link modes: 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: off Cannot get wake-on-lan settings: Operation not permitted Current message level: 0x00000007 (7) drv probe link Link detected: yes Может подскажете почему lan7801 может так себя вести? откуда взялся эти 1000baseT и почему в списке нет меньших скоростей?
  15. MAC + PHY

    Добрый день. Пытаюсь подключить к Raspberry Pi CM3+ (Linux raspberrypi 4.19.75-v7+) через USB HUB (USB2514) платы с USB-MAC (LAN7801) и PHY (88E1512) подключенные к выводам MDIO USB-MAC. При подаче питания сетевое соединение появляется но на этом все хорошие новости заканчиваются. Согласно ethtool сетевое соединение поддерживает только 1000baseT/Full и сменить его не дает. После перезагрузки сетевое соединение вообще не появляется в устройствах. В dmseg касательно phy и lan7801 имеются следующие строки: При сборке ядра, драйвера Marvell для PHY подключал в ядро и в модули, разницы не заметил. Может кто подсказать что делать? Поможет ли конфигурация Device Tree и как это сделать для моего случая? Для проверки PHY подключался к его ножкам MDIO и считывал информацию с регистров, работает корректно.