esaulenka 7 21 января, 2013 Опубликовано 21 января, 2013 · Жалоба 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 и не очень пытался затачиваться под что-то совсем другое :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 21 января, 2013 Опубликовано 21 января, 2013 · Жалоба 1) (общетеоретический). Посоветуйте, где достаточно подробно почитать про низкоуровневые (TCP/UDP и "ниже") вещи ? То, что я нарыл, это пяток страничек на каждый уровень, а потом "перейдём к настройке web-сервера". По-русски читаю чуть лучше, чем по-английски :-) Теория ? Олифера "Компьютерные сети" почитайте. Сейчас, вроде бы, в ходу четвертое издание: http://padabum.com/d.php?id=2562 И еще фреда Иди "Сетевой и межсетевой обмен данными с микроконтроллерами" ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 21 января, 2013 Опубликовано 21 января, 2013 · Жалоба По п2 - однозначно UDP По п3 - если ввести некоторые ограничения на размер пакетов (ну и отказаться от поддержки фрагментирования UDP пакетов), то стек, обрезанный на поддержку только IP+UDP вполне может работать прямо из прерываний (надеюсь что аппаратный MAC у вас все же есть? :) ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 21 января, 2013 Опубликовано 21 января, 2013 · Жалоба kovigor, спасибо. отказаться от поддержки фрагментирования UDP пакетов Извиняюсь, не указал - сейчас размер пакетов от 1 байта до полутора сотен. Планов "а давайте увеличим размер на порядок" пока нет, тьфу-тьфу. Так что фрагментирование не должно потребоваться. аппаратный MAC у вас все же есть? Как я вычитал в даташите на LPC17xx, есть и MAC, и DMA. Всё это добро самостоятельно принимает пакеты и раскладывает их по порядку в памяти. Аналогично с отправкой. Выглядит просто замечательно, ничего низкоуровнего делать не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewlekar 0 22 января, 2013 Опубликовано 22 января, 2013 · Жалоба 2. Я бы выбрал TCP и прикрутил сверху контроль доставки. 3. Вместо RTOS можно попробовать QP framework. Он неплохо поддерживается и есть примеры с lwIP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hamster1979 0 23 января, 2013 Опубликовано 23 января, 2013 · Жалоба 1) (общетеоретический). Посоветуйте, где достаточно подробно почитать про низкоуровневые (TCP/UDP и "ниже") вещи ? То, что я нарыл, это пяток страничек на каждый уровень, а потом "перейдём к настройке web-сервера". По-русски читаю чуть лучше, чем по-английски :-) Выбираете стек - и в описаниях стека достаточно разжевано, документацию Адам Данкелс пишет хорошую. Вот еще http://lwip.wikia.com/wiki/LwIP_Wiki 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. 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 реализовано как вызов периодического обработчика из основной программы если мне не изменяет память, поэтому придется перелопачивать самому - а есть ли смысл?). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 26 января, 2013 Опубликовано 26 января, 2013 · Жалоба 2) какой протокол мне выбрать?... 3) в текущем софте RTOS нет, и желания её туда прикручивать у меня немного. Стек TCP(UDP) хорошо бы запихать.. как уже прозвучало протокол за вами. UDP - пакетная. один к одному или один ко многим. гарантируется только отправка пакета. реализовывать - два пальца об асфальт (если без сборки на IP уровне). 10 мбит поднять можно практически на любом современном камне, ручками (это если совсем бюджетно). если с камнем где есть поддержка на аппаратном уровне - то там, как правило уже и о 100 без проблем вести речь. TCP/IP - потоковая передача. один к одному. гарантируется последовательность доставки данных в потоке. как таковых рассуждать о пакетах на данном уровне (на уровне протокола а не его реализации, это для дюже грамотных вставил фразу) - это ламерство. если лень пилить стэк - то в сети, в примерах любого арма есть с и без осей решения. но надо внимательней быть - в основном эти решения без сборки пакетов на IP уровне. Т.е. или Вы посылаете не много, величаво и синхронно(по отношению к верхнему уровню софта), либо вникаете в протокол, допиливаете(либо убеждаетесь, что есть в данной реализации) сборку на IP уровне - и ни в чём себе не отказываете (как юзверь данного протокола). соответственно требования по UDP - смехотворны. По TCP - тут завязки на скорость и более пОлную реализацию протокола (имеется ввиду для сборки фрагментированных на IP уровне пакетов - потребуется где эти пакеты - кусочки IP диаграм - хранить и собирать). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться