Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема взаимодействия ядра и PHY
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
PavelG
Здравствуйте. Возникла следующая проблема, ядро версии 3.2.1 и 3.4.6 на AM1705 не поднимают eth0 с ошибкой: net eth0: no phy, defaulting to 100/full
Пробовал на двух платах с разными PHY, на одной Micrel KSZ8721, на другой SMCS LAN8710. При этом в логе загрузки видно, что физика определяется без проблем (для LAN аналогично):
Код
...
davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
davinci_mdio davinci_mdio.0: detected phy mask ffffff7f
davinci_mdio.0: probed
davinci_mdio davinci_mdio.0: phy[7]: device 0:07, driver Micrel KS8001 or KS872
...

Однако под конец выдает Configuring network interfaces... net eth0: no phy, defaulting to 100/full.
В системе появляются следующие файлы:
./sys/devices/platform/davinci_emac.1/net/eth0
./sys/class/net/eth0
./proc/irq/36/eth0
./proc/irq/35/eth0
./proc/irq/34/eth0
./proc/irq/33/eth0
./proc/sys/net/ipv4/neigh/eth0
./proc/sys/net/ipv4/conf/eth0
Поиск в гугле результатов не дал.
am1808
пробуй 3.5.5

еще б конфиг и параметры ядра показал бы

а вообще, нафига собирать все версии ядер?
PavelG
Все я не собирал, только три =) Это по началу, еще с NAND проблема была, думал в более новых версия их поправили, а оказалось не поправили. Но для однозначности остановимся на 3.2.1.
И так ядру передаются следующие параметры:
mem=32M consoleblank=0 console=ttyS1,115200n8 rw rootwait earlyprintk root=/dev/mtdblock4 rw rootfstype=jffs2 ip=off
Конфиг ядра ниже.
Нажмите для просмотра прикрепленного файла
am1808
шаманство с ip дает что нибудь?
например, передать ip=dhcp

и выхлоп ядра бы весь хотелось увидеть
PavelG
Цитата(am1808 @ Oct 29 2012, 22:32) *
шаманство с ip дает что нибудь?
например, передать ip=dhcp

и выхлоп ядра бы весь хотелось увидеть

Нет, всегда одно и тоже, что нету phy. Логи для различных вариантов во вложение (ip=static, ip=off, ip=dhcp)
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
am1808
Павел,

1. на am1705 нет USB1.1, так что смело в комментите инициализацию для 1.1. Оставьте только для USB2.0
2. давайте ж все же попробуем передать ядру ip=192.168.1.1:192.168.1.5::255.255.255.0::eth0:off

з.ы. только свои значения подставьте

з.ы. 2: ядро как бы для am1705 надо собирать, а не для am18xx

т.е. тебе нужно конфигурить для da830
PavelG
Цитата(am1808 @ Oct 30 2012, 07:21) *
2. давайте ж все же попробуем передать ядру ip=192.168.1.1:192.168.1.5::255.255.255.0::eth0:off

Без изменений: Нажмите для просмотра прикрепленного файла

Цитата(am1808 @ Oct 30 2012, 07:21) *
з.ы. только свои значения подставьте
з.ы. 2: ядро как бы для am1705 надо собирать, а не для am18xx
т.е. тебе нужно конфигурить для da830

А с чего Вы взяли, что оно у меня для am18xx собирается? Выдержка из выхлопа Machine: DaVinci DA830/OMAP-L137/AM17x EVM, Вы меня так не пугайте wink.gif

Судя по исходникам, ядро не может получить ID от физики... пытаюсь разобраться почему.
am1808
может перепутал на счет лога, но вроде ваш смотрел. а по юсб 1.1 все ж обратите внимание и на VBUS.
по поводу последнего лога, вижу, все поднялось. пинг есть?
PavelG
Цитата(am1808 @ Oct 30 2012, 12:43) *
может перепутал на счет лога, но вроде ваш смотрел. а по юсб 1.1 все ж обратите внимание и на VBUS.
USB я смотрел, в файле борды где идет инициализация usb, закоментил все что относится к USB1.1, а в логе загрузки всеравно выдает ее инициализацию, но с этим потом разберусь.

Цитата(am1808 @ Oct 30 2012, 12:43) *
по поводу последнего лога, вижу, все поднялось. пинг есть?
Нет не работало, плюс там же тоже вышла эта ошибка...

Итог такой, поковырял файл davinci_emac.c и вот, что обнаружил. В функции открытия emac закоментировал if и заставил искать физику, и все заработало
ping есть. Вопрос, насколько грубо я исправил проблему, и как это можно cделать лучше?
Код
[Выхлоп ядра:]
net eth0: !!!!!!davinci_emac.c::1584:: Check phy id=3225088728!!!!!!!!
net eth0: !!!!!!davinci_emac.c::1590:: Check phy id=3248789512!!!!!!!!
net eth0: !!!!!!davinci_emac.c::1600:: !!!!!!!!
net eth0: attached PHY driver [Micrel KS8001 or KS8721] (mii_bus:phy_addr=0:07,
id=221619)

Исправленный кусок
Код
//if (!priv->phy_id) {
        struct device *phy;

        phy = bus_find_device(&mdio_bus_type, NULL, NULL, match_first_device);
        dev_err(emac_dev, "!!!!!!davinci_emac.c::1590:: Check phy id=%u\n!!!!!!!!", phy);
                
        if (phy)
            priv->phy_id = dev_name(phy);
    //}
am1808
а в юбуте правили что нибудь касаемо езернета?
пинг из юбута есть?
PavelG
Цитата(am1808 @ Oct 30 2012, 13:58) *
а в юбуте правили что нибудь касаемо езернета?
пинг из юбута есть?

Нет, из ютуба все прекрасно пингуется и передается по tftp.
Кстати, вопрос, а U-toob как-то передает ядру информацию о физике, или они ее иниициализируют независимо друг от друга?
am1808
Павел, тогда в ядре еще рас посмотрите пинмуксы, может там что конфликтует
PavelG
Цитата(am1808 @ Oct 30 2012, 14:34) *
Павел, тогда в ядре еще рас посмотрите пинмуксы, может там что конфликтует


Проверил, была возможность для конфликта (EMACа с McASP0), хотя этот модуль у меня и неинициализировался, я его закоментировал, что бы не смущал. Итог тод же, спасает только, как говорил выше, если заставить ядро искать по новой PHY а именно его ID.
am1808
Павел,
давайте пробовать

начнем,
Код
# CONFIG_KS8851 is not set
# CONFIG_KS8851_MLL is not set
# CONFIG_MICREL_PHY is not set
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
# CONFIG_SMSC_PHY is not set
# CONFIG_MDIO_BITBAN is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_SEEQ8005 is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_SMC91X is not set
# CONFIG_SMC911X is not set
# CONFIG_SMSC911X is not set
# CONFIG_SMSC911X_ARCH_HOOKS is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_B44 is not set
# CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_DM9000 is not set
# CONFIG_DNET is not set

Код
CONFIG_LXT_PHY=y
CONFIG_LSI_ET1011C_PHY=y


далее,
откатываемся к той версии ядра, где вы ничего не трогали, касаемо phy и ethernet

жду лог

и CONFIG_MDIO_GPIO не устанавливайте еще
sasamy
Цитата(PavelG @ Oct 30 2012, 14:48) *
Итог такой, поковырял файл davinci_emac.c


Лучше board-da830-evm.c поковыряйте sm.gif вот тут
http://lxr.free-electrons.com/source/arch/...v=3.2;a=arm#L37

#define DA830_EVM_PHY_ID ""

вместо ""

#define DA830_EVM_PHY_ID NULL

phy_id can be one of the following:
- NULL : use the first phy on the bus,
- "" : force to 100/full, no mdio control
- "<bus>:<addr>" : use the specified bus and phy
PavelG
Цитата(sasamy @ Nov 1 2012, 18:09) *
Лучше board-da830-evm.c поковыряйте sm.gif
#define DA830_EVM_PHY_ID NULL

"Ура! Заработало!" Матроскин
Спасибо am1808 и sasamy за помощь.
am1808
лог можно в студию?
PavelG
Вот лог системы, надеюсь я Вас правельно понял, что лог нужен после того как я поправил файл борды.
Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.