Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM9260 и DM9161
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
EvgS
Не получается инициализировать Ethernet в АТ91SAM9260 и DM9161: не проходит автоматическое определение сети. Обмен с DM9161 есть, т. е. данные записываются и читаются. Запускаю автоматическую настройку и всё окончания этой процедуры не видно, выхожу по тайм-ауту. Работаю на плате AT91SAM9260-EK от фирмы Atmel. Может кто-то сталкивался с такой проблемой или работал с PHY DM9161?
Gemm
Цитата(EvgS @ Jun 13 2007, 14:37) *
Не получается инициализировать Ethernet в АТ91SAM9260 и DM9161: не проходит автоматическое определение сети. Обмен с DM9161 есть, т. е. данные записываются и читаются. Запускаю автоматическую настройку и всё окончания этой процедуры не видно, выхожу по тайм-ауту. Работаю на плате AT91SAM9260-EK от фирмы Atmel. Может кто-то сталкивался с такой проблемой или работал с PHY DM9161?


Работал с этим физиклом на плате от Аргуссофта, но автоопределения не запускал. Просто из соответствующих регистров читал скорость и дуплекс. Потом мы сменили физикл на RTL8201, и вот там пришлсь запускать auto negatiation, ждать завершения - и только после этого читать данные регистров.
sergeeff
Что то не ясно мне. 9161 link устанавливает совершенно самостоятельно. То есть без всякого вмешательства со стороны процессора. Если на плате установлен светодиод на выходе link - то он загорается, если 9161 к сети подцепился. Если не загорается - проверяй физическое подсоединение к сети.
EvgS
Цитата(sergeeff @ Jun 15 2007, 22:57) *
Что то не ясно мне. 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 из тестового режима???
EvgS
Из тестового режима DM9161 вывел, пришлось подать на него программный Reset от микропроцессора.
Теперь не работатет ни передача ни приём. процессор и PHY друг друга не слышат при передаче данных
MiniMax
На оригинаольной плате от 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 ?
aaarrr
Цитата(MiniMax @ Feb 7 2009, 19:59) *
Кто-то пробовал режим MII ?

А клоки-то на него правильно поданы для MII? (25MHz на XT1 вместо 50MHz на XT2).
DM9161AEP замечательно работает с SAM7X в режиме MII, EMAC'и у SAM7X и SAM9260 одинаковые.
MiniMax
Цитата(aaarrr @ Feb 7 2009, 21:28) *
А клоки-то на него правильно поданы для MII? (25MHz на XT1 вместо 50MHz на XT2).
DM9161AEP замечательно работает с SAM7X в режиме MII, EMAC'и у SAM7X и SAM9260 одинаковые.


25MHz кварц подключен правильно ( S7,S8 замкнуты)
Мне кажется , что проблема в U-boot.
Есть у кого скомпилированный рабочий U-boot для MII на AT91SAM9260-EK плате ?
RW9UAO
я помудохался в свое время с этим давикомом на rm9200. QNX драйвер делал. запустил режим RMII, а на MII забил. auto negatiation работал вроде нормально. вычитывал содержимое регистров и наверх отдавал 10/100 и FD/HD и no cable.
sergeeff
Цитата(RW9UAO @ Feb 8 2009, 08:09) *
я помудохался в свое время с этим давикомом на rm9200. QNX драйвер делал. запустил режим RMII, а на MII забил. auto negatiation работал вроде нормально. вычитывал содержимое регистров и наверх отдавал 10/100 и FD/HD и no cable.


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

Кто-нибудь сталкивался с такой проблемой ?
MiniMax
Цитата(MiniMax @ Feb 10 2009, 15:14) *
Похоже, что надо патчить 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) работают очень хорошо
demitry
А что єто за дефайн?- "#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

Помогите! -)), рад бы взглянуть на ваши исходники..
MiniMax
[quote name='demitry' date='Nov 16 2009, 11:53' post='678606'
Помогите! -)), рад бы взглянуть на ваши исходники..
[/quote]

Архив (8MB) с исходниками, BIN файлом и т.д. можно скачать отсюда
http://www.bipom.com/support/mmarm9260/u-b...2008.10.tar.bz2
demitry
Большое СПАСИБО Минимаксу!!.. пингим ходят но возможно в связи с железными проблемами большая часть пакетов при TFTP-передаче приходят с неправильной чек-суммой, а так - режим DM9161 проверил , регистры посмотрел - спасибо и на том. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.