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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> быстрый TCP/IP-стек для STR912
EKirshin
сообщение Feb 27 2007, 18:59
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 2-10-06
Из: Москва
Пользователь №: 20 904



Нужна пропускная способность по протоколу TCP/IP порядка 1-2 МБайт/с.

Нужно передавать данные с контроллера на PC (в одну сторону). Размер пакета не важен (видимо, нужен большой для высокой пропускной способности). Нужно только одно соединение.

+ хочется использовать стек без операционки.

Рассматривался uIP. Но, как видно, он больше оптимизирован для 8-битных контроллеров. Настроить его на большую пропускную способность пока не удалось. Примеры на его основе - в основном, web-сервера, не требующие большой пропускной способности канала. Когда они переделываются на передачу данных, выясняется, что пропускная способность всего несколько килобайт/c. sad.gif

Есть вариант с использованием операционки. Например, тот же RTX Kernel со стеком. Вопрос, какую пропускную способность эта связка сможет обеспечить и какая загрузка процессора будет при требуемой пропускной способности в 1-2 Мбайт/с.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 27 2007, 19:55
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



На STR91x стек TCP/IP от Micrium дает 2.3 Мбайта в секунду c длиной пакетов 1024 байта.
У них на сайте выложен для STR91x весь проект включая TCP стек, RTOS и исходники тестирующей программы.
Проект для IAR EWB, легко переносится и на RVDK.

Цитата(EKirshin @ Feb 27 2007, 20:29) *
Нужна пропускная способность по протоколу TCP/IP порядка 1-2 МБайт/с.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 27 2007, 21:05
Сообщение #3


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Если все в локалке ( в одном сегменте ) можно использовать UDP ( плюс простая проверка потерянных пакетов, которых по идее быть не должно если сеть правильно настроена).
Тогда можете сами формировать пакеты и не надо никакого стека.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 27 2007, 21:29
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Потеряете большинство пакетов, либо будете изобретать вилосипед.
PC слишком быстро отправляет UDP один за другим. Контроллер все потеряет кроме первого.

Цитата(KRS @ Feb 27 2007, 22:35) *
Если все в локалке ( в одном сегменте ) можно использовать UDP ( плюс простая проверка потерянных пакетов, которых по идее быть не должно если сеть правильно настроена).
Тогда можете сами формировать пакеты и не надо никакого стека.
Go to the top of the page
 
+Quote Post
KostyantynT
сообщение Feb 28 2007, 00:46
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345



Цитата(EKirshin @ Feb 27 2007, 18:59) *
Нужна пропускная способность по протоколу TCP/IP порядка 1-2 МБайт/с.

Нужно передавать данные с контроллера на PC (в одну сторону). Размер пакета не важен (видимо, нужен большой для высокой пропускной способности). Нужно только одно соединение.

+ хочется использовать стек без операционки.

Рассматривался uIP. Но, как видно, он больше оптимизирован для 8-битных контроллеров. Настроить его на большую пропускную способность пока не удалось. Примеры на его основе - в основном, web-сервера, не требующие большой пропускной способности канала. Когда они переделываются на передачу данных, выясняется, что пропускная способность всего несколько килобайт/c. sad.gif

Есть вариант с использованием операционки. Например, тот же RTX Kernel со стеком. Вопрос, какую пропускную способность эта связка сможет обеспечить и какая загрузка процессора будет при требуемой пропускной способности в 1-2 Мбайт/с.


LWIP - 3 мбайта в секунду, очень быстрый и хороший стек. Можно и больше , еслт оптимизировать CRC и драйвер


--------------------
Если в сердце дверь закрыта - надо в печень постучать..
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 28 2007, 00:59
Сообщение #6


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(AlexandrY @ Feb 27 2007, 21:29) *
Потеряете большинство пакетов, либо будете изобретать вилосипед.
PC слишком быстро отправляет UDP один за другим. Контроллер все потеряет кроме первого.

Цитата(KRS @ Feb 27 2007, 22:35) *

Если все в локалке ( в одном сегменте ) можно использовать UDP ( плюс простая проверка потерянных пакетов, которых по идее быть не должно если сеть правильно настроена).
Тогда можете сами формировать пакеты и не надо никакого стека.



Требовалось то передавать данные как раз в сторону PC!
И потом то что контроллер потеряет все пакеты, кроме 1 - это не так!
Можно несколько пакетов в очереди держать...

И потом когда данные идут пакетами и в одной сети ( нет марщрутизации, мостов и каналов с разной скоростью... ) гораздо эффективнее использовать UDP (можно вытащить из любого стека)
Go to the top of the page
 
+Quote Post
Dopler
сообщение Feb 28 2007, 09:31
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Цитата(KRS @ Feb 28 2007, 00:59) *
Требовалось то передавать данные как раз в сторону PC!
И потом то что контроллер потеряет все пакеты, кроме 1 - это не так!
Можно несколько пакетов в очереди держать...

И потом когда данные идут пакетами и в одной сети ( нет марщрутизации, мостов и каналов с разной скоростью... ) гораздо эффективнее использовать UDP (можно вытащить из любого стека)



Соглавсен с вами. Если есть устройство, которое напрямую подключается к компьютеру через Ethernet (у нас было именно так), UDP прекрасно справляется. Реализация UDP в разы проще, в хороших Emac он поддерживается почти аппаратно, нужно только заголовок сформировать, да ввести поле номера пакета, для возможного контроля пропавших (хотя за период тестирования устройства ни одного пропавшего пакета замечено не было). Даже контрольную сумму UDP можно не считать (даже нужно не считать, так как смысла нет). Реализация UDP с нуля займет примерно неделю.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Feb 28 2007, 10:01
Сообщение #8


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(КонстантинТ @ Feb 28 2007, 00:46) *
LWIP - 3 мбайта в секунду, очень быстрый и хороший стек. Можно и больше , еслт оптимизировать CRC и драйвер

Очень интересно. можно подробнее? Использовали ОС или без нее обошлись? Что за оптимизация такая хитрая? Если использовали uC/OS не поделитесь портом?


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
KostyantynT
сообщение Feb 28 2007, 15:52
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345



Цитата(SpiritDance @ Feb 28 2007, 10:01) *
Цитата(КонстантинТ @ Feb 28 2007, 00:46) *

LWIP - 3 мбайта в секунду, очень быстрый и хороший стек. Можно и больше , еслт оптимизировать CRC и драйвер

Очень интересно. можно подробнее? Использовали ОС или без нее обошлись? Что за оптимизация такая хитрая? Если использовали uC/OS не поделитесь портом?

Наибольшие тормоза вызывают функция подсчета CRC и драйвер передачи данных.
Я взял готовую неоптимизированную функцию написанную на С .
В драйвере можно эффективно использовать DMA, те предавать указатель на сегмент данных со сформированным пакетом( а не прегружать в отдельную область и оттуда по DMA слать в сеть, как я сделал для простоты). По прерыванию DMA освобождать память. Если в процессе передачи сформировался новый пакет, то его ставить в очередь на передачу.


--------------------
Если в сердце дверь закрыта - надо в печень постучать..
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 28 2007, 17:02
Сообщение #10


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(AlexandrY @ Feb 27 2007, 18:55) *
На STR91x стек TCP/IP от Micrium дает 2.3 Мбайта в секунду c длиной пакетов 1024 байта.
У них на сайте выложен для STR91x весь проект включая TCP стек, RTOS и исходники тестирующей программы.

Имелся в виду порт для STR91x или что?
Go to the top of the page
 
+Quote Post
EKirshin
сообщение Feb 28 2007, 18:10
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 2-10-06
Из: Москва
Пользователь №: 20 904



Порт Micrium uC/OS-II со стеком TCP/IP на STR912 нашел. Есть примеры для IAR для платы от ST.
По описанию внутри этого архива видно (на скриншотах), что у них TCP/IP на тесте передачи из контроллера в PC дает даже 2.9 Мбайт/с.
Глянул исходники - они используют оптимизированную ассемблерную функцию вычисления контрольной суммы. + реализация всяких вещей TCP таких как окно на много сегментов.

Сделано, конечно, профессионально. куча комментариев, которые пронумерованы, ..., документация...
Но уж очень большой исходник у них.

Хочется взять какой-нибудь стек без наворотов и "добавить" в уже существующий проект без операционки, чтоб не переписывать уже написанный код под эту операционку.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 28 2007, 20:18
Сообщение #12


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



У вас нет выбора. Это единственный нормальный стек доступный в исходниках и реально безопасный в многопоточных приложениях.
Быстрые стеки однозначно требуют операционку.
Открытые стеки типа uIP и lwIP очень кривые. Взять к примеру блокирующиеся сокеты без таймаута в lwIP, это гемороя на месяц не меньше чтоб обойти связанные с этим проблемы. И так по мелочи там много проблем.


Цитата(EKirshin @ Feb 28 2007, 19:40) *
Порт Micrium uC/OS-II со стеком TCP/IP на STR912 нашел. Есть примеры для IAR для платы от ST.
По описанию внутри этого архива видно (на скриншотах), что у них TCP/IP на тесте передачи из контроллера в PC дает даже 2.9 Мбайт/с.
Глянул исходники - они используют оптимизированную ассемблерную функцию вычисления контрольной суммы. + реализация всяких вещей TCP таких как окно на много сегментов.

Сделано, конечно, профессионально. куча комментариев, которые пронумерованы, ..., документация...
Но уж очень большой исходник у них.

Хочется взять какой-нибудь стек без наворотов и "добавить" в уже существующий проект без операционки, чтоб не переписывать уже написанный код под эту операционку.
Go to the top of the page
 
+Quote Post
Velund
сообщение Mar 1 2007, 09:48
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Цитата(EKirshin @ Feb 28 2007, 18:10) *
Порт Micrium uC/OS-II со стеком TCP/IP на STR912 нашел.


А может кто нибудь на фтп это добро выложит? Что то на микриуме стали пароли с логинами спрашивать... blink.gif
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Mar 1 2007, 10:06
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



>> Что то на микриуме стали пароли с логинами спрашивать...
Угу, причем еще и не регистрируют =(
Go to the top of the page
 
+Quote Post
Shamil
сообщение Mar 1 2007, 11:09
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631



Цитата(Velund @ Mar 1 2007, 11:48) *
А может кто нибудь на фтп это добро выложит? Что то на микриуме стали пароли с логинами спрашивать... blink.gif


Положил в /upload/TcpStacks/Micrium-uC-TCP-IP.exe

Зарегистрироваться мне удалось только с нормального почтового ящика.
С ящиком на mail.ru мой запрос на регистрацию был проигнорирован.

To AlexandrY - большой a14.gif за наводку.
Go to the top of the page
 
+Quote Post

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

 


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


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