Перейти к содержанию
    

Проблема взаимодействия ядра и PHY

Здравствуйте. Возникла следующая проблема, ядро версии 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

Поиск в гугле результатов не дал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пробуй 3.5.5

 

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

 

а вообще, нафига собирать все версии ядер?

Изменено пользователем am1808

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все я не собирал, только три =) Это по началу, еще с NAND проблема была, думал в более новых версия их поправили, а оказалось не поправили. Но для однозначности остановимся на 3.2.1.

И так ядру передаются следующие параметры:

mem=32M consoleblank=0 console=ttyS1,115200n8 rw rootwait earlyprintk root=/dev/mtdblock4 rw rootfstype=jffs2 ip=off

Конфиг ядра ниже.

config.txt

Изменено пользователем PavelG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

шаманство с ip дает что нибудь?

например, передать ip=dhcp

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

шаманство с ip дает что нибудь?

например, передать ip=dhcp

 

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

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

ip_dhcp.txt ip_static.txt ip_off.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Павел,

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. давайте ж все же попробуем передать ядру ip=192.168.1.1:192.168.1.5::255.255.255.0::eth0:off

Без изменений: ip_static2.txt

 

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

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

т.е. тебе нужно конфигурить для da830

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

 

Судя по исходникам, ядро не может получить ID от физики... пытаюсь разобраться почему.

Изменено пользователем PavelG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может перепутал на счет лога, но вроде ваш смотрел. а по юсб 1.1 все ж обратите внимание и на VBUS.

по поводу последнего лога, вижу, все поднялось. пинг есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может перепутал на счет лога, но вроде ваш смотрел. а по юсб 1.1 все ж обратите внимание и на VBUS.
USB я смотрел, в файле борды где идет инициализация usb, закоментил все что относится к USB1.1, а в логе загрузки всеравно выдает ее инициализацию, но с этим потом разберусь.

 

по поводу последнего лога, вижу, все поднялось. пинг есть?
Нет не работало, плюс там же тоже вышла эта ошибка...

 

Итог такой, поковырял файл 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);
    //}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в юбуте правили что нибудь касаемо езернета?

пинг из юбута есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в юбуте правили что нибудь касаемо езернета?

пинг из юбута есть?

Нет, из ютуба все прекрасно пингуется и передается по tftp.

Кстати, вопрос, а U-toob как-то передает ядру информацию о физике, или они ее иниициализируют независимо друг от друга?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Павел, тогда в ядре еще рас посмотрите пинмуксы, может там что конфликтует

Изменено пользователем am1808

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Павел, тогда в ядре еще рас посмотрите пинмуксы, может там что конфликтует

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Павел,

давайте пробовать

 

начнем,

# 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 не устанавливайте еще

Изменено пользователем am1808

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итог такой, поковырял файл davinci_emac.c

 

Лучше board-da830-evm.c поковыряйте :) вот тут

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...