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

Не получается инициализировать Ethernet в АТ91SAM9260 и DM9161: не проходит автоматическое определение сети. Обмен с DM9161 есть, т. е. данные записываются и читаются. Запускаю автоматическую настройку и всё окончания этой процедуры не видно, выхожу по тайм-ауту. Работаю на плате AT91SAM9260-EK от фирмы Atmel. Может кто-то сталкивался с такой проблемой или работал с PHY DM9161?

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


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

Не получается инициализировать Ethernet в АТ91SAM9260 и DM9161: не проходит автоматическое определение сети. Обмен с DM9161 есть, т. е. данные записываются и читаются. Запускаю автоматическую настройку и всё окончания этой процедуры не видно, выхожу по тайм-ауту. Работаю на плате AT91SAM9260-EK от фирмы Atmel. Может кто-то сталкивался с такой проблемой или работал с PHY DM9161?

 

Работал с этим физиклом на плате от Аргуссофта, но автоопределения не запускал. Просто из соответствующих регистров читал скорость и дуплекс. Потом мы сменили физикл на RTL8201, и вот там пришлсь запускать auto negatiation, ждать завершения - и только после этого читать данные регистров.

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


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

Что то не ясно мне. 9161 link устанавливает совершенно самостоятельно. То есть без всякого вмешательства со стороны процессора. Если на плате установлен светодиод на выходе link - то он загорается, если 9161 к сети подцепился. Если не загорается - проверяй физическое подсоединение к сети.

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


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

Что то не ясно мне. 9161 link устанавливает совершенно самостоятельно. То есть без всякого вмешательства со стороны процессора. Если на плате установлен светодиод на выходе link - то он загорается, если 9161 к сети подцепился. Если не загорается - проверяй физическое подсоединение к сети.

Почему не работает, вроде ясно: DM9161 включается в тестовом режиме (после сброса выход RX-DV защёлкивает 1). Теперь не могу понять как его из этого режима вывести. Можно ли его вывести в нормальный режим программным путём записью какого-нибудь бита в управляющий регистр? Апаратная доработка стандартной Atlmel-овской платы поиогло (подтянули вход RX-DV к 0), но хотелось бы сделать это без аппаратной доработки, плата-то должна быть рабочая.

В примерах на SAM7 используют вход PWRDOWN, его завели на выход микропроцессора и перед настройкой PHY выставляют на выходе связанном с RX-DV сигнал 0 и подают PWDOWN.

Но у меня на плате PWDOWN жестко посажен на землю.

А запись в регистр 0 бит 11 (PowerDown) ничего не даёт: из тестового режима PHY не выходит. Как вывести DM9161 из тестового режима???

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


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

Из тестового режима DM9161 вывел, пришлось подать на него программный Reset от микропроцессора.

Теперь не работатет ни передача ни приём. процессор и PHY друг друга не слышат при передаче данных

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


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

На оригинаольной плате от ATMEL AT91SAM9260-EK Ethernet работает без проблем в режите RMII ( микросхема DM9161AEP)

в U-boot моей сборки.

 

Попробовал переключить в MII режим.

R49, R50, R127 удалены из платы. S7,S8 замкнуты.

 

Скомпилировал новый U-boot c

/* Ethernet */

#define CONFIG_DRIVER_ETHER 1

#define CONFIG_DRIVER_DM9161AEP 1

#define CONFIG_MACB 1

#undef CONFIG_RMII

#define CONFIG_MII 1

#define CONFIG_NET_MULTI 1

#define CONFIG_NET_RETRY_COUNT 20

#define CONFIG_RESET_PHY_R 1

#undef CONFIG_BOOTP_DNS2

#undef CONFIG_CMD_SNTP

 

Не работает. И похоже, что не у меня одного

 

http://www.at91.com/samphpbb/viewtopic.php?p=12486

http://www.at91.com/samphpbb/viewtopic.php...p;sk=t&sd=a

 

Это лог регистров Davicom

 

macb0: PHYID1=0x0181

macb0: PHYID2=0xb8a0

macb0: DM9161 reset...

DM9161_BMCR Basic Mode Control Register = 0x3100

DM9161_BMSR Basic Mode Status Register = 0x7849

DM9161_PHYID1 PHY Idendifier Register 1 = 0x0181

DM9161_PHYID2 PHY Idendifier Register 2 = 0xb8a0

DM9161_ANAR Auto_Negotiation Advertisement Register = 0x01e1

DM9161_ANLPAR Auto_negotiation Link Partner Ability Register = 0x0000

DM9161_ANER Auto-negotiation Expansion Register = 0x0000

DM9161_DSCR Specified Configuration Register = 0x0d14

DM9161_DSCSR Specified Configuration and Status Register = 0xf200

DM9161_10BTCSR 10BASE-T Configuration and Satus Register = 0x5800

DM9161_MDINTR Specified Interrupt Register = 0x1f00

DM9161_RECR Specified Receive Error Counter Register = 0x0000

DM9161_DISCR Specified Disconnect Counter Register = 0x0000

DM9161_RLSR Hardware Reset Latch State Register = 0xdee0

macb0: Autonegotiation timed out (status=0x7849)

macb0: link down (status: 0x7849)

 

 

Кто-то пробовал режим MII ?

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

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


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

Кто-то пробовал режим MII ?

А клоки-то на него правильно поданы для MII? (25MHz на XT1 вместо 50MHz на XT2).

DM9161AEP замечательно работает с SAM7X в режиме MII, EMAC'и у SAM7X и SAM9260 одинаковые.

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


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

А клоки-то на него правильно поданы для MII? (25MHz на XT1 вместо 50MHz на XT2).

DM9161AEP замечательно работает с SAM7X в режиме MII, EMAC'и у SAM7X и SAM9260 одинаковые.

 

25MHz кварц подключен правильно ( S7,S8 замкнуты)

Мне кажется , что проблема в U-boot.

Есть у кого скомпилированный рабочий U-boot для MII на AT91SAM9260-EK плате ?

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


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

я помудохался в свое время с этим давикомом на rm9200. QNX драйвер делал. запустил режим RMII, а на MII забил. auto negatiation работал вроде нормально. вычитывал содержимое регистров и наверх отдавал 10/100 и FD/HD и no cable.

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


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

я помудохался в свое время с этим давикомом на rm9200. QNX драйвер делал. запустил режим RMII, а на MII забил. auto negatiation работал вроде нормально. вычитывал содержимое регистров и наверх отдавал 10/100 и FD/HD и no cable.

 

Могу подтвердить. Аналогично, режим RMII на готовой микроплатке ECO920 (rm9200 + davicom) - без проблем, а MII - ни в какую.

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


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

U-boot заработал с MII режимом :-)

/*
                 * Disable pull-up on:
                 *                 RXDV (PA17) => PHY normal mode (not Test mode)
                 *                 ERX0 (PA14) => PHY ADDR0
                 *                 ERX1 (PA15) => PHY ADDR1
                 *                 ERX2 (PA25) => PHY ADDR2
                 *                 ERX3 (PA26) => PHY ADDR3
                 *                 ECRS (PA28) => PHY ADDR4  => PHYADDR = 0x0
                 *
                 * PHY has internal pull-down
                 */
                writel(pin_to_mask(AT91_PIN_PA14) |
                       pin_to_mask(AT91_PIN_PA15) |
                       pin_to_mask(AT91_PIN_PA17) |
                       pin_to_mask(AT91_PIN_PA25) |
                       pin_to_mask(AT91_PIN_PA26) |
                       pin_to_mask(AT91_PIN_PA28) |
                       pin_to_mask(AT91_PIN_PA29),
                       pin_to_controller(AT91_PIN_PA0) + PIO_PUDR);

Просто добавил pin_to_mask(AT91_PIN_PA29) в board/atmel/at91sam9260ek/at91sam9260ek.c

 

Осталась проблема с Linux

 

MACB_mii_bus: probed

eth0: Atmel MACB at 0xfffc4000 irq 21 (00:50:c2:90:46:00)

eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=ffffffff:00, irq=-1)

...

eth0: link up (100/Full)

...

ifconfig

eth0 Link encap:Ethernet HWaddr 00:50:C2:90:46:55

inet addr:192.168.0.15 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Interrupt:21 Base address:0x4000

 

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

 

Все определилось. Линк есть. Но "пинги не ходят".

Похоже, что надо патчить Linux драйвер, который думает, по всей вероятности,

что чип находится в режиме RMII

 

Кто-нибудь сталкивался с такой проблемой ?

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


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

Похоже, что надо патчить Linux драйвер, который думает, по всей вероятности,

что чип находится в режиме RMII

 

Решил и эту проблему.

 

В arch/arm/mach-at91/board-sam9260ek.c надо заменить

.is_rmii = 1," на ".is_rmii = 0,

/*
* MACB Ethernet device
*/
static struct at91_eth_data __initdata ek_macb_data = {
                .phy_irq_pin                 = AT91_PIN_PA7,
                .is_rmii                 = 0,
};

 

Вывод.

В связке AT91SAM9260+ DM9161AEP оба режима ( MII и RMII) работают очень хорошо

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

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


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

А что єто за дефайн?- "#define CONFIG_DRIVER_DM9161AEP 1"

и какой убут используете.. ?

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

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


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

Рад, что у Вас все получилось в DM9161 только вот у меня с ним аналогичные проблемы. Мудохаюсь неприлично долго.

Подключение DM9161 к AT91sam9xe аналогично подключению в At91sam9260. Учел Ваши рекомендации относительно "pin_to_mask(AT91_PIN_PA29),", 25MHz кварц подключен правильно ( S7,S8 замкнуты, R49, R50, R127 - их нет).

Устанавливаю ipaddr, netmask, serverip, ethaddr, gatewayip, hostname

U-Boot> ping #.#.#.#

Trying macb0

Dm. macb_writel(macb, USRIO, MACB_BIT(CLKEN));

macb0: PHY present at 1

macb0: Starting autonegotiation...

macb0: Autonegotiation complete

macb0: link up, 100Mbps full-duplex (lpa: 0x45e1)

Using macb0 device

sending ARP for 3538a8c0

ARP broadcast 1

packet received

packet received

.....................

Receive from protocol 0x800

Got IP

len=78, v=45

packet received

packet received

.....................

Got IP

len=78, v=45

packet received

packet received

Receive from protocol 0x800

Got IP

len=78, v=45

ping failed; host #.#.#.# is not alive

 

Помогите! -)), рад бы взглянуть на ваши исходники..

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


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

[quote name='demitry' date='Nov 16 2009, 11:53' post='678606'

Помогите! -)), рад бы взглянуть на ваши исходники..

 

Архив (8MB) с исходниками, BIN файлом и т.д. можно скачать отсюда

http://www.bipom.com/support/mmarm9260/u-b...2008.10.tar.bz2

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


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

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

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

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

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

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

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

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

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

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