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

 
 
 
Reply to this topicStart new topic
> Проблемы с сетью в Microblaze, ethernet_lite
G-Shadow
сообщение Oct 24 2014, 09:04
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 24-10-14
Из: Рыбинск
Пользователь №: 83 326



Добрый день!
Мне потребовалось сделать работающий Linux под Microblaze. Возникли две проблемы.
В этой теме опишу первую - с сетью.

Имеется ядро ethernet_lite. Прерывания подключены. Проверено на работоспособность в standalone (дефолтная тестовая программа периферии).
Далее я собрал ядро линукса (пробовал 3.17 с kernel.org и то, что у Xilinx в их репозитории, вроде бы 3.14).
Загрузка временно установлена с NFS. Система грузится, инициализирует ethernet_lite вроде бы успешно.
Дохолдит до NFS - и всё, пауза и Kernel panic - не может смонтировать NFS.

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

В общем, драйвер ethernet_lite запускается успешно, даже можно им послать пакет. Но отладка показывает, что линукс даже не пытается посылать ни единого пакета, не вызывается ни одна функция драйвера. Просто ждёт ничего не делая и потом пишет, что NFS не работает. Я пока что в тупике.
То есть, кроме функции xemaclite_of_probe() ничего вызвано не было, даже xemaclite_open().

Цитаты из лога загрузки (то что "DENIS" - это моя отладка в драйвере):
Код
(...)
Kernel command line: debug loglevel=7 earlyprintk=serial,ttyUL0,115200,keep time console=ttyUL0,115200n8 ip=:192.168.0.77:192.168.0.12:192.168.0.1:255.255.255.0:mblaze:eth0:off rootfstype=nfs root=/dev/nfs rw nfsroot=192.168.0.12:/shared/nfsroot,tcp
(...)
[    2.166621] device: '40e00000.ethernet': device_add
[    2.171214] bus: 'platform': add device 40e00000.ethernet
(...)
[    5.417568] bus: 'platform': add driver xilinx_emaclite
[    5.424447] bus: 'platform': driver_probe_device: matched device 40e00000.ethernet with driver xilinx_emaclite
[    5.434226] bus: 'platform': really_probe: probing driver xilinx_emaclite with device 40e00000.ethernet
[    5.444407] xilinx_emaclite 40e00000.ethernet: Device Tree Probing
[    5.451698] xilinx_emaclite 40e00000.ethernet: DENIS: I will overwrite MAC-addr with AA:AA:BB:BB:CC:CC
[    5.460747]  (null): DENIS: xemaclite_update_address:
[    5.465066]  (null): AA AA BB BB CC CC
[    5.469615] device: '40e00000': device_add
[    5.478423] libphy: Xilinx Emaclite MDIO: probed
[    5.546622] device: '40e00000:07': device_add
[    5.551571] bus: 'mdio_bus': add device 40e00000:07
[    5.558081] bus: 'mdio_bus': driver_probe_device: matched device 40e00000:07 with driver Marvell 88E1111
[    5.567349] bus: 'mdio_bus': really_probe: probing driver Marvell 88E1111 with device 40e00000:07
[    5.578738] driver: 'Marvell 88E1111': driver_bound: bound to device '40e00000:07'
[    5.586191] bus: 'mdio_bus': really_probe: bound device 40e00000:07 to driver Marvell 88E1111
[    5.596539] xilinx_emaclite 40e00000.ethernet: MAC address is now aa:aa:bb:bb:cc:cc
[    5.604576] device: 'eth0': device_add
[    5.633048] xilinx_emaclite 40e00000.ethernet: Xilinx EmacLite at 0x40E00000 mapped to 0xF0100000, irq=3
[    5.642295] driver: 'xilinx_emaclite': driver_bound: bound to device '40e00000.ethernet'
(...)
[    5.786611] nf_conntrack version 0.5.0 (1824 buckets, 7296 max)
[    5.825280] ip_tables: (C) 2000-2006 Netfilter Core Team
[    5.832490] TCP: cubic registered
[    5.835135] Initializing XFRM netlink socket
[    5.841995] NET: Registered protocol family 17
[    5.852747] Key type dns_resolver registered
[    5.861046] device: 'cpu_dma_latency': device_add
[    5.869706] device: 'network_latency': device_add
[    5.879007] device: 'network_throughput': device_add
[    5.891032] registered taskstats version 1
[  101.123335] VFS: Unable to mount root fs via NFS, trying floppy.
[  101.131625] List of all partitions:
[  101.134728] No filesystem could mount root, tried:  nfs
[  101.140949] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  101.148443] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  126.891875] random: nonblocking pool is initialized


--------------------
Itsumo sobani, itsumo hitori
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 26 2014, 18:18
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(G-Shadow @ Oct 24 2014, 13:04) *
Добрый день!
Мне потребовалось сделать работающий Linux под Microblaze. Возникли две проблемы.
В этой теме опишу первую - с сетью.

Имеется ядро ethernet_lite. Прерывания подключены. Проверено на работоспособность в standalone (дефолтная тестовая программа периферии).
Далее я собрал ядро линукса (пробовал 3.17 с kernel.org и то, что у Xilinx в их репозитории, вроде бы 3.14).
Загрузка временно установлена с NFS. Система грузится, инициализирует ethernet_lite вроде бы успешно.
Дохолдит до NFS - и всё, пауза и Kernel panic - не может смонтировать NFS.

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

В общем, драйвер ethernet_lite запускается успешно, даже можно им послать пакет. Но отладка показывает, что линукс даже не пытается посылать ни единого пакета, не вызывается ни одна функция драйвера. Просто ждёт ничего не делая и потом пишет, что NFS не работает. Я пока что в тупике.
То есть, кроме функции xemaclite_of_probe() ничего вызвано не было, даже xemaclite_open().

Цитаты из лога загрузки (то что "DENIS" - это моя отладка в драйвере):
Код
(...)
Kernel command line: debug loglevel=7 earlyprintk=serial,ttyUL0,115200,keep time console=ttyUL0,115200n8 ip=:192.168.0.77:192.168.0.12:192.168.0.1:255.255.255.0:mblaze:eth0:off rootfstype=nfs root=/dev/nfs rw nfsroot=192.168.0.12:/shared/nfsroot,tcp
(...)
[    2.166621] device: '40e00000.ethernet': device_add
[    2.171214] bus: 'platform': add device 40e00000.ethernet
(...)
[    5.417568] bus: 'platform': add driver xilinx_emaclite
[    5.424447] bus: 'platform': driver_probe_device: matched device 40e00000.ethernet with driver xilinx_emaclite
[    5.434226] bus: 'platform': really_probe: probing driver xilinx_emaclite with device 40e00000.ethernet
[    5.444407] xilinx_emaclite 40e00000.ethernet: Device Tree Probing
[    5.451698] xilinx_emaclite 40e00000.ethernet: DENIS: I will overwrite MAC-addr with AA:AA:BB:BB:CC:CC
[    5.460747]  (null): DENIS: xemaclite_update_address:
[    5.465066]  (null): AA AA BB BB CC CC
[    5.469615] device: '40e00000': device_add
[    5.478423] libphy: Xilinx Emaclite MDIO: probed
[    5.546622] device: '40e00000:07': device_add
[    5.551571] bus: 'mdio_bus': add device 40e00000:07
[    5.558081] bus: 'mdio_bus': driver_probe_device: matched device 40e00000:07 with driver Marvell 88E1111
[    5.567349] bus: 'mdio_bus': really_probe: probing driver Marvell 88E1111 with device 40e00000:07
[    5.578738] driver: 'Marvell 88E1111': driver_bound: bound to device '40e00000:07'
[    5.586191] bus: 'mdio_bus': really_probe: bound device 40e00000:07 to driver Marvell 88E1111
[    5.596539] xilinx_emaclite 40e00000.ethernet: MAC address is now aa:aa:bb:bb:cc:cc
[    5.604576] device: 'eth0': device_add
[    5.633048] xilinx_emaclite 40e00000.ethernet: Xilinx EmacLite at 0x40E00000 mapped to 0xF0100000, irq=3
[    5.642295] driver: 'xilinx_emaclite': driver_bound: bound to device '40e00000.ethernet'
(...)
[    5.786611] nf_conntrack version 0.5.0 (1824 buckets, 7296 max)
[    5.825280] ip_tables: (C) 2000-2006 Netfilter Core Team
[    5.832490] TCP: cubic registered
[    5.835135] Initializing XFRM netlink socket
[    5.841995] NET: Registered protocol family 17
[    5.852747] Key type dns_resolver registered
[    5.861046] device: 'cpu_dma_latency': device_add
[    5.869706] device: 'network_latency': device_add
[    5.879007] device: 'network_throughput': device_add
[    5.891032] registered taskstats version 1
[  101.123335] VFS: Unable to mount root fs via NFS, trying floppy.
[  101.131625] List of all partitions:
[  101.134728] No filesystem could mount root, tried:  nfs
[  101.140949] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  101.148443] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  126.891875] random: nonblocking pool is initialized


что говорит с клиента
showmount -e NFS_server_IP_address


что говорит
exportfs
на NFS сервере


Опубликуйте конфигурацию u-boot
Go to the top of the page
 
+Quote Post
G-Shadow
сообщение Oct 28 2014, 06:35
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 24-10-14
Из: Рыбинск
Пользователь №: 83 326



Цитата(Tarbal @ Oct 26 2014, 18:18) *
что говорит с клиента
showmount -e NFS_server_IP_address

что говорит
exportfs
на NFS сервере

Опубликуйте конфигурацию u-boot


Я загружаю ядро напрямую в память через отладчик, сейчас uboot-а нет. Сервер FreeNFS запущен на винде и там нет статистики. Но вообще, если по сети не передаётся ни одного пакета, даже ARP, то тут уже сервер не при чём. А на "клиенте" просто падает в панику, там ничего не посмотреть, тока отладку. Мне кажется проблема в неработоспособности сети: драйвера либо настроек ядра каких-то.


--------------------
Itsumo sobani, itsumo hitori
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Oct 28 2014, 10:09
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



Приведите кусок DTS файл в котором описан ethernetLite.
Go to the top of the page
 
+Quote Post
G-Shadow
сообщение Oct 28 2014, 11:47
Сообщение #5





Группа: Новичок
Сообщений: 4
Регистрация: 24-10-14
Из: Рыбинск
Пользователь №: 83 326



Цитата(xor.kruger @ Oct 28 2014, 11:09) *
Приведите кусок DTS файл в котором описан ethernetLite.



Код
        ethernet_lite: ethernet@40e00000 {
            compatible = "xlnx,axi-ethernetlite-1.01.b", "xlnx,xps-ethernetlite-1.00.a";
            device_type = "network";
            interrupt-parent = <&axi_intc_0>;
            interrupts = <2 0>;
            local-mac-address = [00 0a 35 00 00 00];
            phy-handle = <&phy0>;
            reg = <0x40e00000 0x10000>;
            xlnx,duplex = <0x1>;
            xlnx,include-global-buffers = <0x0>;
            xlnx,include-internal-loopback = <0x0>;
            xlnx,include-mdio = <0x1>;
            xlnx,include-phy-constraints = <0x1>;
            xlnx,instance = "Ethernet_Lite";
            xlnx,rx-ping-pong = <0x0>;
            xlnx,s-axi-id-width = <0x1>;
            xlnx,s-axi-supports-narrow-burst = <0x0>;
            xlnx,tx-ping-pong = <0x0>;
            mdio {
                #address-cells = <1>;
                #size-cells = <0>;
                phy0: phy@7 {
                    compatible = "marvell,88e1111";
                    device_type = "ethernet-phy";
                    reg = <7>;
                };
            };
        };


Номер прерывания правильный (interrupts = <2 0>) - второе. Тип фая тоже верный - 88e1111.


--------------------
Itsumo sobani, itsumo hitori
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Oct 28 2014, 15:42
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



Замените номер phy с 7 на 1.
Вот так:
Код
            phy-handle = <&phy0>;
            mdio {
                #address-cells = <1>;
                #size-cells = <0>;
                phy0: phy@1 {
                    compatible = "marvell,88e1111";
                    device_type = "ethernet-phy";
                    reg = <1>;
                };

Должно помочь.
Go to the top of the page
 
+Quote Post
G-Shadow
сообщение Nov 7 2014, 07:19
Сообщение #7





Группа: Новичок
Сообщений: 4
Регистрация: 24-10-14
Из: Рыбинск
Пользователь №: 83 326



Проблема оказалась дурацкая: в аргументах ядра в параметре ip=... в начале стояло двоеточие. При этом все параметры сети видимо сдвинулись вправо и ядро пыталось ломиться не в eth0, а в mblze, который типа имя хоста sm.gif


Странно, что даже с полной отладкой никакого сообщения о неверном числе аргументов, несуществующем устройстве сети итд - просто молча упёрся. А номер phy всёже 7 правильно сгенерился.

Ещё вопрос: где можно добыть некий комплект для сборки минимальной файловой системы. В смысле, где shell, всякие там ls, cp, и подобное. Не знаю как загуглить, нахожу только руководства как собирать софт из исходников. Врядли кто-то реально качает и собирает все эти десятки утилит поштучно и потом руками копирует в папки bin итд. Должно быть что-то автоматизированное.

Проблема оказалась дурацкая: в аргументах ядра в параметре ip=... в начале стояло двоеточие. При этом все параметры сети видимо сдвинулись вправо и ядро пыталось ломиться не в eth0, а в mblze, который типа имя хоста sm.gif


Странно, что даже с полной отладкой никакого сообщения о неверном числе аргументов, несуществующем устройстве сети итд - просто молча упёрся. А номер phy всёже 7 правильно сгенерился.

Ещё вопрос: где можно добыть некий комплект для сборки минимальной файловой системы. В смысле, где shell, всякие там ls, cp, и подобное. Не знаю как загуглить, нахожу только руководства как собирать софт из исходников. Врядли кто-то реально качает и собирает все эти десятки утилит поштучно и потом руками копирует в папки bin итд. Должно быть что-то автоматизированное.

Проблема оказалась дурацкая: в аргументах ядра в параметре ip=... в начале стояло двоеточие. При этом все параметры сети видимо сдвинулись вправо и ядро пыталось ломиться не в eth0, а в mblze, который типа имя хоста sm.gif


Странно, что даже с полной отладкой никакого сообщения о неверном числе аргументов, несуществующем устройстве сети итд - просто молча упёрся. А номер phy всёже 7 правильно сгенерился.

Ещё вопрос: где можно добыть некий комплект для сборки минимальной файловой системы. В смысле, где shell, всякие там ls, cp, и подобное. Не знаю как загуглить, нахожу только руководства как собирать софт из исходников. Врядли кто-то реально качает и собирает все эти десятки утилит поштучно и потом руками копирует в папки bin итд. Должно быть что-то автоматизированное.


--------------------
Itsumo sobani, itsumo hitori
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Nov 23 2014, 12:35
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



Цитата
Ещё вопрос: где можно добыть некий комплект для сборки минимальной файловой системы.


Смотрите Buildroot и Busybox - разобратся с ними не составит никаких проблем.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 26 2014, 16:53
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(G-Shadow @ Nov 7 2014, 10:19) *
Ещё вопрос: где можно добыть некий комплект для сборки минимальной файловой системы. В смысле, где shell, всякие там ls, cp, и подобное. Не знаю как загуглить, нахожу только руководства как собирать софт из исходников. Врядли кто-то реально качает и собирает все эти десятки утилит поштучно и потом руками копирует в папки bin итд. Должно быть что-то автоматизированное.


Это не руководство к действию, но реальный способ строить рут файл систему и многое другое. Именно вручную. Может вам сейчас и не подойдет, но иногда нужно залезть глубоко, а здесь вся информация кто на ком стоял.
http://www.linuxfromscratch.org/

Сообщение отредактировал Tarbal - Nov 26 2014, 16:56
Go to the top of the page
 
+Quote Post

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

 


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


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