Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ethernet 100Mbit - как получить >4МБайт/сек?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SimpleSoft
День добрый.

Появилась задача в реализации некоторого сервера для передачи данных на настольный ПК со скоростью не менее 4 Мбайт/сек.
Протокол не важен - т.е. UDP или TCP не критично, но сервер естественно должен отвечать на ICMP (Ping) и ARP запросы. Порывшись в интернете, нашел достаточно много исходников,
таких как FreeRTOS cо встроенным TCP/IP стеком и для разных процессоров, посему проблему с организацией TCP/IP стека не считаю существенной.
В наличии уже есть микросхема Ethernet - Davicom DM9000, посему вопрос: Что можно поставить ему в помощь, дабы получить требуемые скорости передачи или придётся отказаться вообще от Davicom и использовать что-то вроде EP9301/2 со встроенным Ethernet MAC-контроллером?

З.Ы.: Желательно, чтобы корпуса у микросхем были не BGA.
VladislavS
Ну 100 Мбит встроено, например, в AT91RM9200. Уточни задачу. По Ethernet прокачать 4Мбайт/cек как три пальца, а где их проц возьмет? Или куда денет?
SimpleSoft
Цитата(VladislavS @ Feb 1 2006, 09:33) *
Ну 100 Мбит встроено, например, в AT91RM9200. Уточни задачу. По Ethernet прокачать 4Мбайт/cек как три пальца, а где их проц возьмет? Или куда денет?



Скажем я в данном устройстве настраиваю порт 71 для приема, и 72 для передачи. На ПК открываю 72 соответственно и посылаю на 71 в устройство. В процессор я ввожу данные через GPIO или ещё какой нить паралельный интерфейс со скоростью >4MБайт/сек из ПЛИС. Хотелось бы просто не наступить награбли с нехваткой скорости передачи.

Да и AT91RM9200 реально ли купить? Часто с Атмелем такая засада: хочешь купить, а у нас ещё нет...
VladislavS
Ну если плисину на EBI подцепить с разрядностью бит 16 хотя бы, то похоже вытянуть скорость можно. А покупабельность реальна. Мне группа снабжения привозит практически со склада в Москве.
iosifk
Цитата(SimpleSoft @ Jan 31 2006, 17:44) *
В наличии уже есть микросхема Ethernet - Davicom DM9000, посему вопрос: Что можно поставить ему в помощь, дабы получить требуемые скорости передачи или придётся отказаться вообще от Davicom и использовать что-то вроде EP9301/2 со встроенным Ethernet MAC-контроллером?

Хочу спросить: зачем Вы берете микросхему у которой нет режима синхронного чтения - записи по процессорной шине? Нет режима проверки имреданса и обрыва и КЗ в линии! Нет автоопределения Tx-Rx!

Зачем Вам ПЛИС?
Почему Вы не хотите сделать поиск и найти за те-же деньги микросхему с большими возможностями.
Потом получить образец, документацию, или купить стартовый набор?

И Вам точно нужно 1 порт Ethernet а не 2?
Удачи!
AndyBig
Где-то здесь мелькала ссылка на буржуйский сайт по at91rm9200. На этом сайте в форуме говорили, что на RM9200 под линухом вытягивают до 90 Мбит по езернету. Так что, думаю, 4 МБайта - легко.
Но тогда в качестве физического интерфейса (PHY) нужно взять какой-либо чип с MII или RMII интерфейсом. К примеру KS8721.
defunct
Берем любую приглянувшуюся сетевую карту 10/100 за $5, качаем к ней исходник пакетного драйвера, или пишем его самостоятельно. Цепляем к выбранной вами FreeRTOS, и собсно все..
SimpleSoft
Цитата(iosifk @ Feb 2 2006, 10:49) *
Цитата(SimpleSoft @ Jan 31 2006, 17:44) *

В наличии уже есть микросхема Ethernet - Davicom DM9000, посему вопрос: Что можно поставить ему в помощь, дабы получить требуемые скорости передачи или придётся отказаться вообще от Davicom и использовать что-то вроде EP9301/2 со встроенным Ethernet MAC-контроллером?

Хочу спросить: зачем Вы берете микросхему у которой нет режима синхронного чтения - записи по процессорной шине? Нет режима проверки имреданса и обрыва и КЗ в линии! Нет автоопределения Tx-Rx!

Зачем Вам ПЛИС?
Почему Вы не хотите сделать поиск и найти за те-же деньги микросхему с большими возможностями.
Потом получить образец, документацию, или купить стартовый набор?

И Вам точно нужно 1 порт Ethernet а не 2?
Удачи!


1. DM9000 был выран, т.к. стоимость составляет 9$, проверка импеданса, КЗ, обрыва и TX/RX не надо.
2. Дело в том, что Ethernet я делаю специально для дополнения к готовому прибору, в котором уже реализован USB. Ядром в приборе является ПЛИС у которой реализована 8/16 битная шина данных и стробы чтения/записи. Посему идея подключения SoC к ПЛИС через EBI (SRAM I/F) очень даже устраивает.
3. Точно 1.
Postoroniy_V
Цитата(iosifk @ Feb 2 2006, 09:49) *
Цитата(SimpleSoft @ Jan 31 2006, 17:44) *

В наличии уже есть микросхема Ethernet - Davicom DM9000, посему вопрос: Что можно поставить ему в помощь, дабы получить требуемые скорости передачи или придётся отказаться вообще от Davicom и использовать что-то вроде EP9301/2 со встроенным Ethernet MAC-контроллером?

Хочу спросить: зачем Вы берете микросхему у которой нет режима синхронного чтения - записи по процессорной шине? Нет режима проверки имреданса и обрыва и КЗ в линии! Нет автоопределения Tx-Rx!

Зачем Вам ПЛИС?
Почему Вы не хотите сделать поиск и найти за те-же деньги микросхему с большими возможностями.
Потом получить образец, документацию, или купить стартовый набор?

И Вам точно нужно 1 порт Ethernet а не 2?
Удачи!

а что за "микросхема с большими возможностями." за теже 9-10 у.е.в сравнии с Davicom DM9000
подскажите плиз.
iosifk
Цитата(Postoroniy_V @ Feb 2 2006, 11:31) *
а что за "микросхема с большими возможностями." за теже 9-10 у.е.в сравнии с Davicom DM9000
подскажите плиз.


Вот теперь уже можно - KS8841-KS8842.
И статейку об этом - у меня на сайте.
А может быть Вам понравится KS8695?
А самый новый трансивер - KS8001.


Цитата(SimpleSoft @ Feb 2 2006, 11:27) *
1. DM9000 был выран, т.к. стоимость составляет 9$, проверка импеданса, КЗ, обрыва и TX/RX не надо.
2. Дело в том, что Ethernet я делаю специально для дополнения к готовому прибору, в котором уже реализован USB. Ядром в приборе является ПЛИС у которой реализована 8/16 битная шина данных и стробы чтения/записи. Посему идея подключения SoC к ПЛИС через EBI (SRAM I/F) очень даже устраивает.

По пункту 1 - если у Вас промышленный прибор, то здесь Вы ошибаетесь. Если игровая приставка, то возможно и не надо.
По пункту 2 - на больших скоростях работать с АСИНХРОННЫМ интерфейсом - БРРР!!!
А при реализации асинхронного интерфейса автоматом в ПЛИС получите 1 цикл передачи данных за несколько циклов частоты автомата чтобы корректно реализовать все сетап-холд, да и сам автомат будет сложнее. Научный термин на это - Мультитрах.. Желаю Весело провести время с железкой.
Postoroniy_V
Цитата(iosifk @ Feb 2 2006, 12:02) *
Цитата(Postoroniy_V @ Feb 2 2006, 11:31) *


а что за "микросхема с большими возможностями." за теже 9-10 у.е.в сравнии с Davicom DM9000
подскажите плиз.


Вот теперь уже можно - KS8841-KS8842.
И статейку об этом - у меня на сайте.
А может быть Вам понравится KS8695?
А самый новый трансивер - KS8001.


что то не выходит smile.gif по вашему
efind про KS8841
получается даже больше 10 у.е. в розницу, а именно

KS8841-16MQL 13.3$ 11.1$ 10.4$
13.3 в розницу и опт 11.1 лихо
в сравнении с efind про Davicom
iosifk
Цитата(Postoroniy_V @ Feb 2 2006, 12:10) *
что то не выходит smile.gif по вашему
KS8841-16MQL 13.3$ 11.1$ 10.4$
13.3 в розницу и опт 11.1 лихо

Ну тогда давайте обсудим контрактные цены и Вашу потребность. При таком подходе к делу возможно Вы измените Ваше мнение. Возможно цена будет ниже 10 долл. Но это надо все обсуждать!
Если хотите продолжить, то напишите мне:
Кому - какому предприятию,
Сколько,
когда,
что примерно делаете.

Вот по этому адресу: iosifk@eltech.spb.ru
Удачи!
Postoroniy_V
Цитата(iosifk @ Feb 2 2006, 13:18) *
Цитата(Postoroniy_V @ Feb 2 2006, 12:10) *

что то не выходит smile.gif по вашему
KS8841-16MQL 13.3$ 11.1$ 10.4$
13.3 в розницу и опт 11.1 лихо

Ну тогда давайте обсудим контрактные цены и Вашу потребность. При таком подходе к делу возможно Вы измените Ваше мнение. Возможно цена будет ниже 10 долл. Но это надо все обсуждать!
Если хотите продолжить, то напишите мне:
Кому - какому предприятию,
Сколько,
когда,
что примерно делаете.

Вот по этому адресу: iosifk@eltech.spb.ru
Удачи!

буду иметь ввиду, а пока мне нужно всего 5 штук, и в таких условиях (в моих smile.gif ) ваши KS8841 не катят
спасибо за ответ
SimpleSoft
Цитата(AndyBig @ Feb 2 2006, 11:55) *
Где-то здесь мелькала ссылка на буржуйский сайт по at91rm9200. На этом сайте в форуме говорили, что на RM9200 под линухом вытягивают до 90 Мбит по езернету. Так что, думаю, 4 МБайта - легко.
Но тогда в качестве физического интерфейса (PHY) нужно взять какой-либо чип с MII или RMII интерфейсом. К примеру KS8721.


Всё больше растёт уверенность что добьюсь.
Значит ОС для AT91RM9200 не просто FreeRTOS, а уже полноценный Linux?

А что можете сказать про Cirrus Logic EP9302 . Почему был выбран именно AT91RM9200?
aaarrr
Цитата(SimpleSoft @ Feb 2 2006, 15:15) *
А что можете сказать про Cirrus Logic EP9302 . Почему был выбран именно AT91RM9200?


С AT91RM9200 не работал, но, если сравнивать по докам, езернет у EP93xx
несколько мощнее будет (DMA, например, более грамотный).
silica
Цитата(iosifk @ Feb 2 2006, 11:02) *
По пункту 1 - если у Вас промышленный прибор, то здесь Вы ошибаетесь. Если игровая приставка, то возможно и не надо.
По пункту 2 - на больших скоростях работать с АСИНХРОННЫМ интерфейсом - БРРР!!!
А при реализации асинхронного интерфейса автоматом в ПЛИС получите 1 цикл передачи данных за несколько циклов частоты автомата чтобы корректно реализовать все сетап-холд, да и сам автомат будет сложнее. Научный термин на это - Мультитрах.. Желаю Весело провести время с железкой.


Вы считаете 4 мбайт большой соростью smile.gif из за которой надо лепить синхронный интерфейс ( который на самом деле сложнее, но согласен быстрее smile.gif ) , я без проблем на асинхоронном (в LAN91 гоняю больше)Кстати большинство чипов не имеют синхронный интерфейс.
Обрыв в сети и импенданс может и полезен, но это очень скользкий вопрос. RX-TX вообще для пром применения не понятен. вообщем ненужные фишечки за почти втрое большую цену.
Доументация слабее, драйверная поддержка тоже. Корпус "ужас настройщика" 0.4 мм.
Из главных достоинств, есть индустриальный диапазон, но полгода назад был недоставаем(может сейчас ситуация изменилась к лучшему). Вобщем Микрелу еще работать и работать smile.gif.
Я жду когда смогу заменить LAN91 на более дешовый. Если к тому времени у Давикома появиться индастриал то выбор в его пользу smile.gif.
AndyBig
Цитата
Значит ОС для AT91RM9200 не просто FreeRTOS, а уже полноценный Linux?

Да, но естественно тогда уже надо и флэш побольше, и SDRAM...

Цитата
Почему был выбран именно AT91RM9200?

По-моему он легче доставабелен в розницу smile.gif.
SimpleSoft
Цитата(AndyBig @ Feb 3 2006, 01:33) *
Цитата
Почему был выбран именно AT91RM9200?

По-моему он легче доставабелен в розницу smile.gif.


Оказалось что и всё семейство EP93xx для меня доставабельно. И сам не ожидал. Цены приемлимые. smile.gif

Хотел бы всётаки знать точно, на каком венигрете из процессора, софта и обвязки передача по TCP/IP через Winsock получалось примерно в 4 мб в сек.

З.Ы.: Взял на днях BlackFin Evalution Kit BF-537 с поддержкой Ethernet: перепробовал все iwIP Examples (скорость ядра поставил 600МГц), но даже Ping обычный шел в среднем 50мсек, а что говорить про передачу данных...
defunct
Цитата(SimpleSoft @ Feb 3 2006, 10:06) *
Хотел бы всётаки знать точно, на каком венигрете из процессора, софта и обвязки передача по TCP/IP через Winsock получалось примерно в 4 мб в сек.


LPC2142 + RTL8139 - самописный пакетный драйвер, и TCP/IP стек ~7MBps. Использовал для прокачки видео потока.


Цитата
З.Ы.: Взял на днях BlackFin Evalution Kit BF-537 с поддержкой Ethernet: перепробовал все iwIP Examples (скорость ядра поставил 600МГц), но даже Ping обычный шел в среднем 50мсек, а что говорить про передачу данных...


Однозначно кривой драйвер. Потому что у меня связка на AVR 14.7 Mhz + RTL8019 дают честный ответ на пинг <1ms для ICMP пакетов объемом до 1kb.
aaarrr
Цитата(SimpleSoft @ Feb 3 2006, 10:06) *
Взял на днях BlackFin Evalution Kit BF-537 с поддержкой Ethernet: перепробовал все iwIP Examples (скорость ядра поставил 600МГц), но даже Ping обычный шел в среднем 50мсек, а что говорить про передачу данных...

А запускали, часом, не из под VDSP? Там тормоза жуткие.
SimpleSoft
Цитата(defunct @ Feb 4 2006, 00:18) *
Цитата(SimpleSoft @ Feb 3 2006, 10:06) *

Хотел бы всётаки знать точно, на каком венигрете из процессора, софта и обвязки передача по TCP/IP через Winsock получалось примерно в 4 мб в сек.


LPC2142 + RTL8139 - самописный пакетный драйвер, и TCP/IP стек ~7MBps. Использовал для прокачки видео потока.



А как LPC2142 подключали к RTL8139? Как внешнюю память? Если можно, чуть подробнее.
defunct
Цитата(SimpleSoft @ Feb 4 2006, 12:48) *
А как LPC2142 подключали к RTL8139? Как внешнюю память? Если можно, чуть подробнее.


Ну если можно так выразиться. Только 2142 не имеет шины для работы с внешней памятью. Подключал через эмуляцию шины (32-линии данных, 6 - адресных, 3 управляющих) у RTL8139 очень простой DMA.
silica
Цитата(defunct @ Feb 4 2006, 17:36) *
Ну если можно так выразиться. Только 2142 не имеет шины для работы с внешней памятью. Подключал через эмуляцию шины (32-линии данных, 6 - адресных, 3 управляющих) у RTL8139 очень простой DMA.

Простите, а разве RTL8139 имеет другой интерфейс, кроме PCI?
defunct
Цитата(silica @ Feb 4 2006, 19:15) *
Простите, а разве RTL8139 имеет другой интерфейс, кроме PCI?


Разумеется не имеет. Говоря о 6 линиях адреса, я некорректно выразился, имелись в виду линии для "адресации" фазы транзакции.
silica
Цитата(defunct @ Feb 4 2006, 21:29) *
Разумеется не имеет. Говоря о 6 линиях адреса, я некорректно выразился, имелись в виду линии для "адресации" фазы транзакции.

а чем вы руководствовались выбирая данный чип?
defunct
Цитата(silica @ Feb 4 2006, 23:09) *
а чем вы руководствовались выбирая данный чип?


В первую очередь руководствовался опытом работы с младшими чипами от realtek. А также доступносностью, низкой ценой, наличием pin-to-pin совместимых 5V и 3.3V версий чипа, поддержкой пакетов объемом до 64k, плюс наличием автооповещения передающей стороны (puase_packet) при почти полном заполнении приемного буфера, что здорово ускоряет работу при пересылке больших объемов данных.
SimpleSoft
Цитата(defunct @ Feb 4 2006, 19:36) *
Цитата(SimpleSoft @ Feb 4 2006, 12:48) *

А как LPC2142 подключали к RTL8139? Как внешнюю память? Если можно, чуть подробнее.


Ну если можно так выразиться. Только 2142 не имеет шины для работы с внешней памятью. Подключал через эмуляцию шины (32-линии данных, 6 - адресных, 3 управляющих) у RTL8139 очень простой DMA.


И используя TCP/IP стек вы получили 7MB/сек? Не верю. Ноги у 21xx на скорости ядра 60мгц клацают на скорости 11мгц (если сделать loop из 2х STR), т.к. операция LDR и STR занимают 2-3 такта в ARM7TDMI. + Кроме чтения данных из RTL8139 Вам надо ещё и пакет разобрать на состовляющие.
Или я чего-то не понимаю?
defunct
Цитата(SimpleSoft @ Feb 5 2006, 09:08) *
И используя TCP/IP стек вы получили 7MB/сек? Не верю. Ноги у 21xx на скорости ядра 60мгц клацают на скорости 11мгц (если сделать loop из 2х STR), т.к. операция LDR и STR занимают 2-3 такта в ARM7TDMI. + Кроме чтения данных из RTL8139 Вам надо ещё и пакет разобрать на состовляющие.
Или я чего-то не понимаю?


напомню только, что скорость считывания определяется не только частотой, но и разрядностью. 32 бит - это по 4 байта за семпл. LPC на 66Mhz. Частота же дергания ногами еще ниже, не 11 а в районе 6Mhz итого имеем ~24-26MB/s линейную скорость считывания/записи пакета, расчет контрольных сумм для IP секции и TCP секции снижает эффективную скорость до ~7MB/s. (пакеты по 4k байт).
SimpleSoft
Цитата(defunct @ Feb 6 2006, 03:07) *
Цитата(SimpleSoft @ Feb 5 2006, 09:08) *

И используя TCP/IP стек вы получили 7MB/сек? Не верю. Ноги у 21xx на скорости ядра 60мгц клацают на скорости 11мгц (если сделать loop из 2х STR), т.к. операция LDR и STR занимают 2-3 такта в ARM7TDMI. + Кроме чтения данных из RTL8139 Вам надо ещё и пакет разобрать на состовляющие.
Или я чего-то не понимаю?


напомню только, что скорость считывания определяется не только частотой, но и разрядностью. 32 бит - это по 4 байта за семпл. LPC на 66Mhz. Частота же дергания ногами еще ниже, не 11 а в районе 6Mhz итого имеем ~24-26MB/s линейную скорость считывания/записи пакета, расчет контрольных сумм для IP секции и TCP секции снижает эффективную скорость до ~7MB/s. (пакеты по 4k байт).


Тогда вопросы : Вы писали процедуры работы с RTL8139 на ассемблере? Какой TCP/IP стек Вы использовали (uIP/lwIP)? Или TCP/IP стек писали тоже на ассемблере?
defunct
(SimpleSoft @ Feb 6 2006, 10:08)

Тогда вопросы : Вы писали процедуры работы с RTL8139 на ассемблере? Какой TCP/IP стек Вы использовали (uIP/lwIP)? Или TCP/IP стек писали тоже на ассемблере?



процеруды работы с RTL на ассемблере, а TCP стек на C (с несколькими асм вставками)..
для повышения скорости пришлось принять меры по урезанию стека: UDP пакеты сразу отбрасываются, ICMP обслуживаются только объемом до 256 байт (полный объем с заголовками). Все остальные пакеты кроме TCP и ARP (request/query) также отбрасываются сразу (даже не читаю их из буфера RTL дальше IP заголовка).

ps: пробовал uIP, неплохая реализация стека, но в моем случае не подошла. Если его немного доработать под конкретную задачу, думаю вполне возможно получить требуемые Вам 4Mbps. Если же взять 100Mhz арм, то uIP без доработок обеспечит Вам 4MBps.

lwIP - не пробовал.
SimpleSoft
Спасибо всем за ответы, особенно Defunct smile.gif
Буду оживлять плату с LPC2124 + DM9000
SimpleSoft
Даже 1 мб не получается. СТранно. Разбираю только ARP и UDP.
defunct
Цитата(SimpleSoft @ Feb 10 2006, 11:49) *
Даже 1 мб не получается. СТранно. Разбираю только ARP и UDP.

По UDP может и не получиться развить высокую скорость при условии организации "вручную" протокола "гарантированной доставки", причем не столько из-за вашего устройства, сколько из-за организации WinSock, все-таки UDP это message oriented протокол..
TCP - connection oriented и на нем можно получить высокую скорость, скорость передачи по TCP сильно зависит от размера "окна" (кол-во пакетов, отправляемых без ожидания подтверждения).

ЗЫ: А как тестируете? С устройста на компьютер или наоборот? используете ли при передаче по UDP подтверждения или нет?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.