реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> DM365 и RTL8201, не работает
/dev/null
сообщение Dec 1 2010, 10:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



Доброго дня!
Имеется самодельная плата с процессором DM365 и сетевой Realtek RTL8201, в работе используется linux-2.6.18_pro500, из состава SDK, и u-boot 1.3.4.
Слегка модифицировав u-boot я добился работающего ping-а, к сожалению tftp пока не работает.
Но более приоретным является работоспособность сети в Linux, драйвер davinci_emac от TI видит чип, но смонтировать файловую систему по NFS не может, NFS-сервер в это время работает.
Из странного в работе - постоянно горит индикатор линка, но при попытке монтирования файловой сети он тухнет.
Привожу лог загрузки, касающейся сети:
Код
Linux version 2.6.18_pro500-davinci_evm-arm_v5t_le-gb43d9841-dirty (kirill@kirill) (gcc version 4.2.0 (MontaVista 4.2.0-16.0.32.0801914 2008-08-30)) #1 PREEMPT Mon Nov 29 12:55:40 MSK 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: DaVinci DM365 EVM
...............................................
Kernel command line: console=ttyS0,115200n8 noinitrd rw eth=00:01:02:03:04:05 ip=192.168.10.254:192.168.10.3:::arm:eth0:off root=/dev/nfs nfsroot=192.168.10.3:/home/kirill/nfs/rootfs,nolock
TI DaVinci EMAC: kernel boot params Ethernet address: 00:01:02:03:04:05
....................................................
Generic PHY: Registered new driver
......................................................
RTL8201PHY: Starting realtek_init.
Realtel RTL8201: Registered new driver
Davinci EMAC MII Bus: probed
i2c_davinci i2c_davinci.1: timeout waiting for bus ready
i2c_davinci i2c_davinci.1: timeout waiting for bus ready
i2c_davinci i2c_davinci.1: timeout waiting for bus ready
i2c_davinci i2c_davinci.1: timeout waiting for bus ready
MAC address is 02:00:10:00:00:00
TI DaVinci EMAC Linux version updated 4.0
...............................................
IPv4 over IPv4 tunneling driver
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
...........................................
RTL8201PHY: Starting rtl8201_config_init.
found Realtek RTL8201 PHY
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
      device=eth0, addr=192.168.10.254, mask=255.255.255.0, gw=255.255.255.255,
     host=arm, domain=, nis-domain=(none),
     bootserver=192.168.10.3, rootserver=192.168.10.3, rootpath=
Looking up port of RPC 100003/2 on 192.168.10.3
portmap: server 192.168.10.3 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/1 on 192.168.10.3
portmap: server 192.168.10.3 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.10.3 not responding, timed out
Root-NFS: Server returned error -5 while mounting /home/kirill/nfs/rootfs
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

Строки начинающиеся на RTL8201PHY являются выводом из моей попытки дописать работу с RTL8201 к Generic PHY.
Может кто-нибудь решил эту проблему?
Спасибо.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 1 2010, 17:47
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(/dev/null @ Dec 1 2010, 13:07) *
NFS-сервер в это время работает.
.......

Looking up port of RPC 100005/1 on 192.168.10.3
portmap: server 192.168.10.3 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.10.3 not responding, timed out


Уверены что сервер работает ? Демон portmap запущен ?
#ps -A | grep portmap
Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 2 2010, 06:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



Абсолютно.
Код
$ ps aux | grep nfs | grep -v grep
root      1106  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsiod]
root      1387  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd4]
root      1388  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1389  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1390  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1391  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1392  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1393  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1394  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]
root      1395  0.0  0.0      0     0 ?        S    Nov29   0:00 [nfsd]

$ ps aux | grep portmap | grep -v grep
daemon    1076  0.0  0.0   1796   444 ?        Ss   Nov29   0:00 /sbin/portmap

У меня создаётся впечатление, что в момент подключения к серверу сетевой чип выключают. Косвенно это подтверждает выключение светодиода на сетевом разъёме.
Поддерживаемые в ядре 2.6.18 PHY:
Код
$ ls drivers/net/phy | grep c
broadcom.c
cicada.c
davicom.c
fixed.c
icplus.c
Kconfig
lxt.c
marvell.c
mdio_bus.c
phy.c
phy_device.c
phy_device.o
qsemi.c
realtek.c
smsc.c
vitesse.c

Файл realtek.c - это моя попытка добавить поддержку RTL8201, на данный момент неудачная.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 2 2010, 08:19
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(/dev/null @ Dec 2 2010, 09:43) *
Файл realtek.c - это моя попытка добавить поддержку RTL8201, на данный момент неудачная.


Вообще я сомневаюсь что для него вообще нужен какой-то драйвер smile.gif
http://www.realtek.com/faqs/faqsView.aspx?...d=1&Level=3

Цитата
# Q9: Why don't I find RTL8201x driver on the website?

A9:
RTL8201, RTL8201BL, RTL8201CL, RTL8201CP, RTL8201N and RTL8211B(L) are all PHYceiver. That is a driverless hardware device. Software driver are relative to Network controller ( MAC ) which is integrated into chipset in such case mostly. Please contact your mother board maker or chipset manufacturer to obtain proper driver support.
Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 2 2010, 08:41
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



В U-Boot без драйвера не работало ничего, сейчас хоть ping заработал.
А насчёт нужности драйвера http://www.google.com/search?q=linux+rtl8201
Да и что-то не работает.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 2 2010, 09:04
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(/dev/null @ Dec 2 2010, 11:41) *
В U-Boot без драйвера не работало ничего, сейчас хоть ping заработал.
А насчёт нужности драйвера http://www.google.com/search?q=linux+rtl8201
Да и что-то не работает.


И что вы нашли в гугле - у этого PHY нет irq, зачем там драйвер ? Покажите что вы делаете в драйвере ? Поддержка например в at91 для rtl8201 заключается только в чтении идентификатора и констатации факта - да, там у меня rtl8201 висит smile.gif максимум что может потребоваться - это прописать идентификатор, чтобы драйвер MAC узнавал его и знал - что-то висит на MII.

PS кстати посмотрите - может в вашем дроайвере MAC тоже нужно просто дописать его идентификатор а то вполне возможно что он не узнает PHY и отрубается.

Сообщение отредактировал sasamy - Dec 2 2010, 09:11
Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 2 2010, 09:14
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



Я разве утверждаю, что в драйвере делаю что-то сложное? wink.gif
Код
#include <linux/module.h>
#include <linux/phy.h>

char debug = 1;
#define DBG(format, args...) if (debug) printk("RTL8201PHY: " format "\n", ##args)

static int rtl8201_config_init(struct phy_device *phydev)
{
    DBG("Starting %s.", __func__);
    phydev->irq = PHY_POLL;
    //phydev->interrupts = PHY_INTERRUPT_DISABLED;

    return 0;
}

static int rtl8201_ack_interrupt(struct phy_device *phydev)
{
    DBG("Starting %s.", __func__);
    return 0;
}

static int rtl8201_config_interrupt(struct phy_device *phydev)
{
    DBG("Starting %s.", __func__);
    return 0;
}
static struct phy_driver rtl8201_driver = {
    .phy_id = 0x8201,
    .phy_id_mask = 0xffff,
    .name = "Realtel RTL8201",
    .features = (SUPPORTED_10baseT_Half | \
                 SUPPORTED_10baseT_Full | \
                 SUPPORTED_100baseT_Half | \
                 SUPPORTED_100baseT_Full | \
                 SUPPORTED_Autoneg | \
                 SUPPORTED_MII),
    .flags = 0,
    .config_init = rtl8201_config_init,
    .config_aneg = genphy_config_aneg,
    .read_status = genphy_read_status,
    .ack_interrupt = rtl8201_ack_interrupt,
    .config_intr = rtl8201_config_interrupt,
    .driver = {.owner = THIS_MODULE},
};

static int __init realtek_init(void)
{
    int ret;
    
    DBG("Starting %s.", __func__);
    ret = phy_driver_register(&rtl8201_driver);
    if (ret) {
        printk("Can't registered driver for Realtek RTL8201.\n");
        phy_driver_unregister(&rtl8201_driver);
    }

    return ret;
}

static void __exit realtek_exit(void)
{
    DBG("Starting %s.", __func__);
    phy_driver_unregister(&rtl8201_driver);
}

module_init(realtek_init);
module_exit(realtek_exit);

MAC я передаю в параметрах загрузки.
Пробовал ядро с моим драйвером и без него, результат одинаковый - нет соединения по NFS.
Может действительно проблема в железе? Но проверка тестом из CodeComposer прошла, правда там там тупо шлют некоторое количество байтов и пожалуй это доказывает только то, что процессор видит сетевой чип.

Сообщение отредактировал /dev/null - Dec 2 2010, 09:15
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 2 2010, 09:23
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(/dev/null @ Dec 2 2010, 12:14) *
Я разве утверждаю, что в драйвере делаю что-то сложное? wink.gif


Ну понятно - этот драйвер ровным счетом ничего и не делает smile.gif смотрите драйвер ethernet вашего давинча - как он пытается PHY обнаружить.
Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 2 2010, 09:33
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



Код
#define PHY_ID_MASK        0xfffffff0
#define LXT971_ID        0x001378e0
#define KSZ8893MQL_ID    0x00221430
#define RTL8201_ID      0x8201

static int emac_phy_init(struct emac_dev *dev, u8 phy_num, u8 *phy_cnt,
             u8 *phy_max)
{
    char phy_id[BUS_ID_SIZE];

    snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, 1, phy_num);

    dev->phydev[phy_num] = phy_connect(dev->owner, phy_id,
        &emac_update_phy_status, 0, PHY_INTERFACE_MODE_MII);
    if (IS_ERR(dev->phydev[phy_num])) {
        if (dev->phydev[phy_num] == ERR_PTR(-ENODEV))
            dev->phydev[phy_num] = NULL;
        return PTR_ERR(dev->phydev[phy_num]);
    }

    dev->phydev[phy_num]->supported = PHY_BASIC_FEATURES;

    if (dev->init_cfg.gigabit)
        dev->phydev[phy_num]->supported |= SUPPORTED_1000baseT_Full;

    dev->phydev[phy_num]->advertising = dev->phydev[phy_num]->supported;

    if ((dev->phydev[phy_num]->phy_id & PHY_ID_MASK) == LXT971_ID) {
        /*
         * CRITICAL: Fix for increasing PHY signal drive strength for
         * TX lockup issue. On DaVinci EVM, the Intel LXT971 PHY
         * signal strength was low causing TX to fail randomly. The
         * fix is to Set bit 11 (Increased MII drive strength) of PHY
         * register 26 (Digital Config register) on this phy.
         */
        int control;

        pr_info("applying Intel LTX971 workaround..\n");

        control = phy_read(dev->phydev[phy_num], 26);
        phy_write(dev->phydev[phy_num], 26, (control | 0x800));
        phy_read(dev->phydev[phy_num], 26);
    } else if ((dev->phydev[phy_num]->phy_id & PHY_ID_MASK) ==
            KSZ8893MQL_ID) {
        /*
         * KSZ8893MQL is a layer 2 switch that connects to EMAC via
         * MII.  The MII setting is required to be fixed with autoneg
         * off, 100Mbps, and full duplex.  This happens to be the
         * settings and behavior when phy_mode is set to SNWAY_NOPHY.
         * Therefore, we set the phy_mode to SNWAY_NOPHY whenever
         * KSZ8893MQL is detected.
         */
        dev->init_cfg.phy_mode = SNWAY_NOPHY;

        /* The third phy is used for MII, so only expect 2 phys */
        *phy_max = 2;
    } else if ((dev->phydev[phy_num]->phy_id & 0xffff) == RTL8201_ID) {
        pr_info("found Realtek RTL8201 PHY\n");
        //dev->init_cfg.phy_mode = SNWAY_NOPHY;
    }

    *phy_cnt = *phy_cnt + 1;
    phy_start(dev->phydev[phy_num]);

    return 0;
}

PHY обнаруживается, при загрузке я вижу строку "found Realtek RTL8201 PHY".

Сообщение отредактировал /dev/null - Dec 2 2010, 09:34
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 2 2010, 10:08
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(/dev/null @ Dec 2 2010, 12:33) *
PHY обнаруживается, при загрузке я вижу строку "found Realtek RTL8201 PHY".


Смотрите драйвер изернет - включите отладочную информацию тогда ясно будет почему он линк гасит, как вы понимаете проблема не может быть в ничего не делающем драйвере smile.gif
Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 2 2010, 11:47
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



Уважаемые, не сочтите за труд, посмотрите на правильность схемы.
Прикрепленные файлы
Прикрепленный файл  BP.pdf ( 184.83 килобайт ) Кол-во скачиваний: 107
 
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 2 2010, 14:39
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(/dev/null @ Dec 2 2010, 14:47) *
Уважаемые, не сочтите за труд, посмотрите на правильность схемы.


linux-xx/Documentation/networking/phy.txt

Цитата
Generic PHY driver

If the desired PHY doesn't have any errata, quirks, or special
features you want to support, then it may be best to not add
support, and let the PHY Abstraction Layer's Generic PHY Driver
do all of the work.


Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 2 2010, 15:24
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



Читал я этот файл. Повторю ещё раз - не работает в любом случае, добавлю я свой драйвер или нет.
Некоторые странности в поведении наводят на мысль о ошибке в разводке, для чего выложил схему, или сбой железа.
Странности заключаются в следующем:
- при питании от 12В индикатор линка гаснет при попытке подсоединится по NFS, индикатор активно не горит, соединение по NFS не устанавливается
- при питании по POE когда идёт подсоединение по NFS, индикатор линка гаснет, но через секунду зажигается снова, также зажигается индикатор активности и даже слегка подмигивает, соединение по NFS не устанавливается.
Вставив отладку в драйвер производителя выяснил следующее - устанавливается скорость в 100 Мб/с, режим дуплекса UNKNOW, состояние чипа READY (функция emac_phy_init).
После этого запускается функция phy_start, которая переводи чип в состояние PHY_UP.
Разбираюсь дальше.

P.S. Неужто никто не применяет RTL8201? Или у меня так загрязнены чакры? wink.gif
Go to the top of the page
 
+Quote Post
Arischenko Ivan
сообщение Dec 3 2010, 09:13
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 29-10-06
Пользователь №: 21 768



Покажите :

cat /etc/exports
Go to the top of the page
 
+Quote Post
/dev/null
сообщение Dec 3 2010, 09:33
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-06
Пользователь №: 22 438



/home/kirill/nfs/rootfs 192.168.10.254(rw,no_root_squash,no_all_squash,subtree_check,sync)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 21:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01533 секунд с 7
ELECTRONIX ©2004-2016