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

 
 
9 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Самый быстрый и самый маленький TCP-стек., По просьбам трудящихся.
zltigo
сообщение Jul 28 2011, 19:43
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (VslavX @ Jul 28 2011, 22:32) *
И что? Это неплохая технология

А я что-то плохое говорил??? Я просто отметил, что Вам стало тесно в рамках простейшего взаимодействия между уровнями. Это НОРМАЛЬНО.
QUOTE
Вполне нормально ложится, есть .... если ... то .... просто будет ....

Так о чем Вы это? О том, что можно добавить, углубить, расширить, улучшить.... Так я ровно о том-же, что можно, но и в первую очередь о том, что в абстрактном стеке всего этого НЕТ и придется его дорабатывать под возможности MAC. Либо НЕ дорабатывать - и так сойдет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jul 28 2011, 19:45
Сообщение #62


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Rst7 @ Jul 28 2011, 22:23) *
конечно, да. Но заявки-то - "хотим 100M через TCP". А теперь давайте считать. Все ОЗУ там - 64кБайт. При скорости в

Это заявки оторванные от реальности. Передать-принять 100мбит/сек, допустим, у Вас получилось, и похоже таки со 100% загрузкой ядра (раз 92 мбита из 95), но кто на этом проце и всего с 64К памяти осмысленно сгенерировать или обработать 12Мбайт/сек сможет? Вы можете привести пример, когда на LPC17xx нужно 100Мбит/сек и от этого будет смысл?

Цитата(Rst7 @ Jul 28 2011, 22:23) *
В реальной жизни это означает, что три обычных неуправляемых L2-свича в гирлянде приведут к падению скорости и ничего Вы стандартным построением TCP-стека не сделаете.

Да и на Вашей реализации тоже ничего не сделаете. Как только данные станут осмысленными (а не генератор ПСЧ), то в приложении у Вас появится буфер, и упретесь в те же самые 64K.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 28 2011, 20:04
Сообщение #63


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
и похоже таки со 100% загрузкой ядра (раз 92 мбита из 95),


А вот тут тонкость. Я малость оптимизировал (сократил в два раза с 30 до 15мкс) расчет IP Checksum, а результат не изменился. Так что CPU load там походу меньше 100%, но пока неясно недостижение теорпредела. Раз пошла такая пьянка, то я решил таки доделать вменяемую процедуру отправки пакета, которая не будет ждать готовности тупо в цикле. Правда, за сегодня сделать не успел, но, думаю, завтра получим нормальные данные по загрузке CPU.

QUOTE
Да и на Вашей реализации тоже ничего не сделаете. Как только данные станут осмысленными (а не генератор ПСЧ), то в приложении у Вас появится буфер, и упретесь в те же самые 64K.


Ну я понимаю, что http-сервер недостаточно осмысленные данные генерирует, но ладно wink.gif Придется таки сделать читалку с SD с топовой скоростью. C 45DB даже смысла обсуждать нет, ибо там есть вообще произвольное чтение.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jul 28 2011, 20:20
Сообщение #64


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Rst7 @ Jul 28 2011, 23:04) *
Ну я понимаю, что http-сервер недостаточно осмысленные данные генерирует, но ладно wink.gif

Хм, а разве он их генерирует, а не просто берет ресурс из флешки? Тогда это у Вас аналог буфера на 512К, просто тип буфера const wink.gif
Цитата(Rst7 @ Jul 28 2011, 23:04) *
Придется таки сделать читалку с SD с топовой скоростью. C 45DB даже смысла обсуждать нет, ибо там есть вообще произвольное чтение.

Имхо, не получится с SD по SPI ничего с нормальной скоростью прочитать. Ну в идеале будет 3Мбайт/сек - больше просто SPI не позволит. Надо ждать LPC1788 - там SD контроллер 4-битный и аппаратный, вот там можно попробовать до 100Мбит подняться.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 28 2011, 20:28
Сообщение #65


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Хм, а разве он их генерирует, а не просто берет ресурс из флешки?


Распаковывает на ходу и подставляет изменяемые параметры. Даже если и рассматривать флеш как буфер на 512к, у Вас-то такого нет wink.gif

QUOTE
Имхо, не получится с SD по SPI ничего с нормальной скоростью прочитать.


Да ладно, я ногодрыгом 4хбитный интерфейс сэмулирую, мне не привыкать.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jul 28 2011, 20:36
Сообщение #66


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Rst7 @ Jul 28 2011, 23:04) *
А вот тут тонкость. Я малость оптимизировал (сократил в два раза с 30 до 15мкс) расчет IP Checksum

Это для пакета в 1460 байт? Примерно 1 такт на байт? Можно глянуть код основного цикла подсчета? Потому как у меня полтора такта на байт выходит.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 28 2011, 20:43
Сообщение #67


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Это для пакета в 1460 байт? Примерно 1 такт на байт? Можно глянуть код основного цикла подсчета? Потому как у меня полтора такта на байт выходит.


Да. Я щас не у своего рабочего компа, завтра буду у него, выложу. Хотя... Момент...

SVN - великая вещь biggrin.gif
CODE
static UREG16 IPChecksum(UINT16 *data, UREG16 len)
{
unsigned long long acc=0;
UINT32 *p=(UINT32*)data;
UREG i=len>>5;
if (i)
{
len-=i<<5;
do
{
acc += *p++;
acc += *p++;
acc += *p++;
acc += *p++;
acc += *p++;
acc += *p++;
acc += *p++;
acc += *p++;
}
while(--i);
}
i=len>>2;
if (i)
{
len-=i<<2;
do
{
acc+=*p++;
}
while(--i);
}
data=(UINT16*)p;
if (len >=2) {acc+=*data;len-=2;}
if(len == 1)
{
acc += *(UINT8 *)data;
}
do
{
acc=(acc&0xFFFF)+(acc>>16);
}
while((acc>>32));
UINT32 acc32=acc;
do
{
acc32=(acc32&0xFFFF)+(acc32>>16);
}
while((acc32>>16));
return (~acc32)&0xFFFF;
}


Ну такое, туповато, но действенно.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jul 28 2011, 20:44
Сообщение #68


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Rst7 @ Jul 28 2011, 23:28) *
Распаковывает на ходу и подставляет изменяемые параметры. Даже если и рассматривать флеш как буфер на 512к, у Вас-то такого нет wink.gif

Ничего, зато у меня много чего другого есть sm.gif
Кста, сегодня я коллегам (которые пишут приложения юзающие мой стек) предложил "покрутить окно руками" и нарвался на встречное предложение "покрутить мое лицо ногами" biggrin.gif . Ну не нужны им проблемы протокола - там у них своих хватает.

Цитата(Rst7 @ Jul 28 2011, 23:28) *
Да ладно, я ногодрыгом 4хбитный интерфейс сэмулирую, мне не привыкать.

А что - на PIO получится 25МГц выдать? Да и процессорного времени отожрет, ну да ладно.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 28 2011, 20:55
Сообщение #69


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
А что - на PIO получится 25МГц выдать?


Ну придется извратнуться, конечно. Главное там - не процом ждать готовности, на этот предмет есть пара идей.

QUOTE
и нарвался на встречное предложение "покрутить мое лицо ногами"


biggrin.gif biggrin.gif Ну это кто на что учился.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 28 2011, 22:06
Сообщение #70


Гуру
******

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



Цитата(Rst7 @ Jul 29 2011, 00:28) *
Да ладно, я ногодрыгом 4хбитный интерфейс сэмулирую, мне не привыкать.

А еще придется CRC16 считать для каждой из четырех линий отдельно. Не стоит овчинка выделки - сделать можно, но скорость едва ли будет выше чем при работе через SPI.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 29 2011, 06:59
Сообщение #71


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А еще придется CRC16 считать для каждой из четырех линий отдельно.


Ох ты... Этот момент я как-то просмотрел. Надо, конечно, подумать, но, боюсь, что Вы правы, зопа.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 29 2011, 08:18
Сообщение #72


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Не стоит овчинка выделки - сделать можно, но скорость едва ли будет выше чем при работе через SPI.


По моим расчетам скорость вытаскивания данных из SD может быть 8 мегабайт/с. Это ногодрыгом с одновременным расчетом CRC. Вроде бы, конечно, если не обсчитался.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 29 2011, 10:00
Сообщение #73


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Сделал правильный отправлятель пакетов (без тупого ожидания) и отображение загрузки CPU.

Прикрепленный файл  NikeE_CM3_rev1315.zip ( 357.68 килобайт ) Кол-во скачиваний: 146


Почему-то рассчитанный мной теорпредел не достигается (числа пляшут в районе 91..92Мбит/с), но мне сейчас нечем разобраться - нет достаточно быстродействующего осциллографа, чтобы рассмотреть точно паузы между пакетами.

При этом загрузка процессора - 43%.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
RA3WUM
сообщение Jul 29 2011, 15:28
Сообщение #74


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

Группа: Участник
Сообщений: 163
Регистрация: 22-02-07
Пользователь №: 25 578



Rst7
Сколько данный стек занимает RAM? В LPC1114 можно использовать?


--------------------
Мужество есть лишь у тех, кто ощутил сердцем страх!
В. Кипелов, Беги за солнцем.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jul 29 2011, 19:02
Сообщение #75


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Сколько данный стек занимает RAM? В LPC1114 можно использовать?


Дык тут нижний уровень не такой, как на AVR, тут используется модуль EMAC в LPC17xx, никакой рукопашной, как это в том проекте. Повторять эпопею мне что-то не улыбается.

Или как Вы его хотите использовать? От этого, кстати, и требования к ОЗУ зависят.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 10th August 2025 - 00:14
Рейтинг@Mail.ru


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