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

 
 
> TCP/IP for Stellaris, TCP/IP стэк для МК Stellaris
mstumbra
сообщение Jul 21 2011, 12:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 14-04-10
Пользователь №: 56 652



Всем добрый день.
Около полугода назад была необходимость в поднятии собственного высокопроизводительного и простого TCP\IP стека. Могу поделится своими трудами.
Есть вещи которые стоило бы допилить, но в рамках проекта они были не нужны.
С удовольствием выслушаю критику. А если кто-то захочет допилить мелочи, то отвечу на все вопросы.

Ах, да! забыл сказать стек документирован на русском языке santa2.gif

Прикрепленные файлы
Прикрепленный файл  TCP_1_1.7z ( 82.46 килобайт ) Кол-во скачиваний: 41
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Jul 21 2011, 14:05
Сообщение #2


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

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



QUOTE
Если так не делать, то прийдется хранить все время в буффере все неподтвержденные пакеты, что увеличит объем использованной памяти во много раз.


А не надо так делать. Надо генерировать пакеты по необходимости.

У меня в стеке есть три callback'а для режима передачи

SEND - сгенерить новых данных для передачи (не более стольки-то) и вернуть количество сгенеренных данных.
REGENERATE - откатиться на точку последнего подтверждения
ACK - переместить точку последнего подтверждения на сколько-то байт.

CODE
char *out;
char *ack;

SEND(p,max)
{
   len=max;
   memcpy(p,out,len);
   out+=len;
   return len;
}

REGENERATE(p,max)
{
   len=max;
   memcpy(p,ack,len);
   out=ack;
   return len;
}

ACK(len)
{
   ack+=len;
}


В начале out и ack указывают на начало буфера передачи.

На самом деле в реальности там нет memcpy. Это псевдокод для иллюстрации. На самом деле там какой-то циклический буфер, или железка, или еще чего - например, http-сервер в виде машины состояний, который непосредственно печатает в p, а ack и out для него - не более чем состояние.

QUOTE
а что не ясно то?


Да уже все ясно. Однопакетный стек. Тысячи их, uip впереди колонны шагает.


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



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 19:35
Рейтинг@Mail.ru


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