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

 
 
> Несколько вопросов о стеке ethernet
esaulenka
сообщение Jan 21 2013, 11:06
Сообщение #1


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



1) (общетеоретический). Посоветуйте, где достаточно подробно почитать про низкоуровневые (TCP/UDP и "ниже") вещи ? То, что я нарыл, это пяток страничек на каждый уровень, а потом "перейдём к настройке web-сервера". По-русски читаю чуть лучше, чем по-английски :-)


2) (более практический) какой протокол мне выбрать? сейчас железка общается с ПК по своему собственному протоколу через UART и USB (через эмуляцию UART). Есть желание добавить ethernet, а поверх него пустить тот же протокол. Вопрос - что бы такое пустить по ethernet? "Чистый" IP не хочется по избежание геморроя со стороны ПК (сейчас - всевозможные windows, в планах linux, вероятны android/ios). Контроль доставки, который даёт TCP, не очень актуален - сейчас этим занимается наш протокол (не очень оптимально, т.к. задумывалось это под медленные uart'ы, ну да фиг с ним). Сделать UDP ?.. Или для простоты понимания программерами ПК сделать TCP, а с контролем доставки всё-таки разобраться (см. пункт 1) ?


3) (совсем уж практический) в текущем софте RTOS нет, и желания её туда прикручивать у меня немного. Стек TCP(UDP) хорошо бы запихать в обработчик прерывания (с учётом вложенных прерываний это не так страшно, холивар прошу не разводить). Посмотрел uIP и lwIP, они заточены под супер-луп или отдельную задачу в RTOS. Кто-нибудь стек посоветует? Самому писать без опыта (опять см. пункт 1) будет очень долго, подкладывать костыли под тот же uIP - больно некрасиво...
Совсем уж идеально - чтоб автор знал о модуле MAC в контроллерах LPC и не очень пытался затачиваться под что-то совсем другое :-)


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hamster1979
сообщение Jan 23 2013, 05:19
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 26-03-05
Пользователь №: 3 697



Цитата(esaulenka @ Jan 21 2013, 15:06) *
1) (общетеоретический). Посоветуйте, где достаточно подробно почитать про низкоуровневые (TCP/UDP и "ниже") вещи ? То, что я нарыл, это пяток страничек на каждый уровень, а потом "перейдём к настройке web-сервера". По-русски читаю чуть лучше, чем по-английски :-)

Выбираете стек - и в описаниях стека достаточно разжевано, документацию Адам Данкелс пишет хорошую. Вот еще
http://lwip.wikia.com/wiki/LwIP_Wiki
Цитата(esaulenka @ Jan 21 2013, 15:06) *
2) (более практический) какой протокол мне выбрать? сейчас железка общается с ПК по своему собственному протоколу через UART и USB (через эмуляцию UART). Есть желание добавить ethernet, а поверх него пустить тот же протокол. Вопрос - что бы такое пустить по ethernet? "Чистый" IP не хочется по избежание геморроя со стороны ПК (сейчас - всевозможные windows, в планах linux, вероятны android/ios). Контроль доставки, который даёт TCP, не очень актуален - сейчас этим занимается наш протокол (не очень оптимально, т.к. задумывалось это под медленные uart'ы, ну да фиг с ним). Сделать UDP ?.. Или для простоты понимания программерами ПК сделать TCP, а с контролем доставки всё-таки разобраться (см. пункт 1) ?

TCP или UDP выбирать Вам.
TCP основан на соединении и передаче группы пакетов. UDP - просто транспорт, пакеты, их очередность разбирать приложению.
TCP для некритичных ко времени приложений, UDP - для realtime; для большого кол-ва соединений/клиентов, но короткими посылками.
Поверх TCP куча протоколов (HTTP, HTTPs, FTP, SMTP Telnet ), могут погнадобится в будущем.
TCP - гарантия доставки данных, UDP - ее нет.В TCP есть управление потоком - в UDP нет. В TCP есть восстановление после ошибки, в UDP нет. Но при этом TCP тяжеловеснее, чем UDP.
Цитата(esaulenka @ Jan 21 2013, 15:06) *
3) (совсем уж практический) в текущем софте RTOS нет, и желания её туда прикручивать у меня немного. Стек TCP(UDP) хорошо бы запихать в обработчик прерывания (с учётом вложенных прерываний это не так страшно, холивар прошу не разводить). Посмотрел uIP и lwIP, они заточены под супер-луп или отдельную задачу в RTOS. Кто-нибудь стек посоветует? Самому писать без опыта (опять см. пункт 1) будет очень долго, подкладывать костыли под тот же uIP - больно некрасиво...
Совсем уж идеально - чтоб автор знал о модуле MAC в контроллерах LPC и не очень пытался затачиваться под что-то совсем другое :-)

Использовал LWIP стек + TCP client + TCP server + HTTP server(dynamic pages) + SNTP client в одном устройстве - uIP для всего этого не подошел бы просто. Насчет прерываний - TCP протокол с большим временем отклика (около 250 ms - 500ms), его реализуют как фоновую задачу - поэтому супер луп ну или если с RTOS - фоновая задача с невысоким приоритетом. TCP на прерываниях особо не имеет смысла реализовывать так как тайминг опроса буферов в стеке LWIP ~500ms/250ms, задержки в таких прерываниях могут быть очень большими что плохо.Можно таймер сделать на прерываниях а сам обработчик протокола все равно вызывать из основной программы. Что касается UDP, то так как он более заточенный для быстрого обмена, реал тайма - то можно его реализоавть наверное и по прерываниям(но в стеке LWIP реализовано как вызов периодического обработчика из основной программы если мне не изменяет память, поэтому придется перелопачивать самому - а есть ли смысл?).
Go to the top of the page
 
+Quote Post



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

 


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


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