Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9G45/M10
Отваливается Ethernet после загрузки ядра
JedaY
Добавлено 16.03.2011 01:50
0
Сообщение: 1
JedaY
0

Пункты: 1031
Регистрация: 03.12.2009
добрый день
Наткнулся на очередную проблему. В u-boot для работы сети добавил запуск внешнего клока для PHY в файл инициализации платы. Локальная сеть работает, пингуются машины. Но когда стартует ядро, оба светодиода на разъеме гаснут, хотя по логу видно что ядро находит PHY и настраивает интерфейс. ifconfig говорит что eth0 настроен, только счетчики пакетов по нулям.
На SAM9260 борде такого не наблюдал... Или может все намного проще, надо какой-то командой eth0 запустить, он по умолчанию выключен?
Вот полный лог загрузки:

Код
Uncompressing Linux... done, booting the kernel.
Linux version 2.6.37.3 (user@CORE-I5) (gcc version 4.5.1 (Sourcery G++ Lite 2010.09-50) ) #3 Mon Mar 14 15:31:56 MSK 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: SK-AT91SAM9M10G45
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: mem=64M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait ip=192.168.0.107
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60972k/60972k available, 4564k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffa00000 - 0xffe00000 ( 4 MB)
vmalloc : 0xc4800000 - 0xfee00000 ( 934 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0024000 ( 112 kB)
.text : 0xc0024000 - 0xc039e644 (3562 kB)
.data : 0xc03a0000 - 0xc03c3280 ( 141 kB)
NR_IRQS:192
AT91: 160 gpio irqs in 5 banks
Console: colour dummy device 80x30
console [tty0] enabled
console [ttyS0] enabled
Calibrating delay loop... 199.47 BogoMIPS (lpj=997376)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c-gpio i2c-gpio.0: using pins 52 (SDA) and 53 (SCL)
Switching to clocksource pit
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
msgmni has been set to 119
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfeffee00 (irq = 1) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfff90000 (irq = 8) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung )
Scanning device for bad blocks
Bad eraseblock 270 at 0x0000021c0000
Bad eraseblock 886 at 0x000006ec0000
Bad eraseblock 1294 at 0x00000a1c0000
Bad eraseblock 1910 at 0x00000eec0000
atmel_nand: No partitions defined, or unsupported device.
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffa4000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffbc000 irq 25 (3e:36:65:ba:6f:be)
eth0: attached PHY driver [Micrel KS8001 or KS8721] (mii_bus:phy_addr=ffffffff:01, irq=-1)
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
atmel-ehci atmel-ehci: Atmel EHCI UHP HS
atmel-ehci atmel-ehci: new USB bus registered, assigned bus number 1
atmel-ehci atmel-ehci: irq 22, io mem 0x00800000
atmel-ehci atmel-ehci: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 2
at91_ohci at91_ohci: irq 22, io mem 0x00700000
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
mice: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!
i2c /dev entries driver
at_hdmac at_hdmac: Atmel AHB DMA Controller ( cpy slave ), 8 channels
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
NET: Registered protocol family 17
rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 11, 1 slots
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SD card at address 0002
mmcblk0: mmc0:0002 SD1GB 958 MiB
mmcblk0: p1 p2
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
device=eth0, addr=192.168.0.107, mask=255.255.255.0, gw=255.255.255.255,
host=192.168.0.107, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:2.
Freeing init memory: 112K
eth0: link up (100/Full)
Initializing random number generator... done.
Starting network...
ifup: interface lo already configured
Starting dropbear sshd: OK
Starting sshd: sshd (902): /proc/902/oom_adj is deprecated, please use /proc/902/oom_score_adj instead.
OK

Welcome to Buildroot

buildroot login:
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.03.2011 08:47 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
В u-boot для работы сети добавил запуск внешнего клока для PHY в файл инициализации платы. Локальная сеть работает, пингуются машины. Но когда стартует ядро, оба светодиода на разъеме гаснут, хотя по логу видно что ядро находит PHY и настраивает интерфейс. ifconfig говорит что eth0 настроен, только счетчики пакетов по нулям.

мне не ясен смысл телодвижений для юбута - там вроде сетка и так поднимается.. или что-то экзотическое?
судя по номеру - ставите "свежее" ванильное ядро? в файле борды сетку правили?
я с месяц назад запускал взятое с кернела - поднял все, кроме звука, тачскрина и нанда (может еще что упустил), подробности уже не помню..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 16.03.2011 09:07 Редактировалось 16.03.2011 09:09 Сообщение: 3
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Загляните сюда, ну а с новым ядром, при отсутстии кварца и подавно никакой сети не будет (если PCK в ядре не настраивали).
Спуститься к концу Подняться к началу
Персональная информация
JedaY
Добавлено 16.03.2011 11:21 Сообщение: 4
JedaY
0

Пункты: 1031
Регистрация: 03.12.2009
Цитата
мне не ясен смысл телодвижений для юбута - там вроде сетка и так поднимается.. или что-то экзотическое?

В утубе надо запустить PCK, который тактирует PHY изернета, плюс автоопределение его адреса, по умолчанию стоит 0, а работает на 1. Ну или место автоопределения жестко задать 1.

Цитата
судя по номеру - ставите "свежее" ванильное ядро? в файле борды сетку правили?

Да ванильное свежее ядро, только файл board-sam9m10g45ek.c меняю свой исправленый..

Цитата
Загляните сюда, ну а с новым ядром, при отсутстии кварца и подавно никакой сети не будет (если PCK в ядре не настраивали).

Я в убуте PCK запустил после чего сеть поднялась.
В ядре я не знаю как PCK настроить. Я думал что ядро настроенное раннее PCK трогать не будет...
Спасибо за инфу на счет кварца, так и сделаю. Не буду зацикливаться на этом PCK.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.03.2011 17:50 Сообщение: 5
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
В ядре я не знаю как PCK настроить. Я думал что ядро настроенное раннее PCK трогать не будет...

пройдите поиском по сорцам ядра - может кто занимает пин под свои нужды или pck перестраивает. кстати, с какого пина тактовая берется для PHY?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
JedaY
Добавлено 16.03.2011 22:57 Сообщение: 6
JedaY
0

Пункты: 1031
Регистрация: 03.12.2009
Нога PE31/PWM2/PCK1.
В схеме AT91SAM9M10-G45-EK эта нога используется похожим способом как на данной плате только тактирует AC97(WM9711L). PWM2 в ресурсах системы зарегистрирован на ноге PD26.
В исходнике arch/arm/mach-at91/at91sam9g45.c нашел описание PCK1
Код
/*
* The two programmable clocks.
* You must configure pin multiplexing to bring these signals out.
*/
static struct clk pck1 = {
.name = "pck1",
.pmc_mask = AT91_PMC_PCK1,
.type = CLK_TYPE_PROGRAMMABLE,
.id = 1,
};
static void __init at91sam9g45_register_clocks(void)
{
...
clk_register(&pck1);
}


В коментарии написано что надо PCK1 пин на выход настроить, значит он где-то сбрасывается... Наверно коментирование вызова clk_register(&pck1); никакого результата не даст..
Других мест где упоминается PE31 не нашел
Спуститься к концу Подняться к началу
Персональная информация
JedaY
Добавлено 16.03.2011 23:23 Сообщение: 7
JedaY
0

Пункты: 1031
Регистрация: 03.12.2009
Закоментил строку clk_register(&pck1); Теперь при загрузке ядра светодиоды на разъеме изернета не гаснут. Но ping с платы не видит компы в сети, девайс тоже не пингуется.
uboot сетевые компы пинговал, но плата в сети была все равно не видна.
Странно как-то. Завтра попробую внешний кварц впаять для эксперимента
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 17.03.2011 09:25 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Но ping с платы не видит компы в сети, девайс тоже не пингуется.

вставьте где-нить в конце инита борды распечатку содержимого регистров состояния этого пина (функция, направление, состояние) или принудительно пропишите нужную позу. хорошо бы осциллом глянуть..

Цитата
uboot сетевые компы пинговал, но плата в сети была все равно не видна.

мне сейчас не проверить - но юбут вроде не дает себя увидеть, только ответит на пинг извне..

Цитата
Странно как-то. Завтра попробую внешний кварц впаять для эксперимента

решение правильное (лично я сторонник - каждому камню свой кварц), не забудьте про обвязку и устраните влияние АРМа (PE31)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
JedaY
Добавлено 17.03.2011 19:23 Редактировалось 17.03.2011 19:24 Сообщение: 9
JedaY
0

Пункты: 1031
Регистрация: 03.12.2009
Запустился изернет :)
проблема была в инициализации в файле board-sam9m10g45ek.c
В плате используется MII интерфейс, а в атмеловской -EK - MII
Надо исправить:
Код
/*
* MACB Ethernet device
*/
static struct at91_eth_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PD5,
.is_rmii = 1,
};

строчку .is_rmii = 1 на .is_rmii = 0 Из-за этого не все ножки конфигурировались.
Я внимательно посмотрел на исправления Павла, у него исправлено. Плюс добавлена инициализация PCK1 функции static void __init ek_board_init(void).
Может быть вариант с моего предыдущего поста с коментарием строки clk_register(&pck1); и рабочий, но я уже кварц впаял так что проверить не смогу.

Спасибо что откликнулись :)
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9G45/M10