Перейти к содержанию
    

Требуется разработать TCP сервер для удаленных измерений.

за основу взял Мегу128 + CS8900 + RAM 64k

решил копать с сторону LWIP стека (с перспективой использования стека под арм).

Вопрос чего начать, по скудной документации понятно что лучше работь в режиме callback function (попроше), несовсем понятно с чего начинать как инитить сам стек и обрабатывать пакеты.

 

железо запустил, принимает пакеты и выводит в UART порт, подошел к стеку и попал в тупик, подскажите как с ним работать ? :ninja:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интерисует именно стек LWIP

15 секунд поиска в Yandex дали:

http://www.sics.se/~adam/lwip/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость impatt
:cheers: :blink: :biggrin:

с этого и начинал, примеров использования ненашел :ninja:

ткните носом :smile3046:

 

The lwIP API uses a connection abstraction similar to that of the BSD socket APIThe lwIP API uses a connection abstraction similar to that of the BSD socket API

 

Это значит, что запускаешь свой любимый дистрибутив линукса, например, команда info libc sockets, там всё есть, с примерами. Заодно и проверишь на линуксе, свои примеры, а потом на контроллере.

 

Кстати, на сайте есть pdf-ка, там есть примеры.

Изменено пользователем impatt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Требуется разработать TCP сервер для удаленных измерений.

за основу взял Мегу128 + CS8900 + RAM 64k

 

Могу прислать описания и софт для micrel.com - KSZ8842/1 - и это будет Ethernet 10/100.

Это примерно 6 Мег.

И сделайте поиск по нику "Волощенко". Он только что аналогичеую вещь закончил на CS8900, подумал над жизнью и попросил образец KSZ8842....

Вот для затравки пара документов.

KSZ884x_Programmer_s_Guide_v1.0.pdf

____________________________.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начать наверное лучьше с ознакомления с TCP/IP, тогда думаю и с lwip проще разобраться будет. Благо, что читать не очень много. Понравилось описание на www.protocols.ru. Можно и самому написать. Вам надо к блоку данных добавлять заголовок TCP или UDP, к этому пакету добавить заголовок IP и пулять в сеть. И обратно. По большому счету ничего сложного. Геморно только TCP реализовать - много факторов влияет на смену текущего состояния TCP. Больше всего и читать по нем. Может вам будет достаточно UDP, тогда все проще, но придется "самому" контролировать доставку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:cheers: :blink: :biggrin:

с этого и начинал, примеров использования ненашел :ninja:

ткните носом :smile3046:

 

The lwIP API uses a connection abstraction similar to that of the BSD socket APIThe lwIP API uses a connection abstraction similar to that of the BSD socket API

 

Это значит, что запускаешь свой любимый дистрибутив линукса, например, команда info libc sockets, там всё есть, с примерами. Заодно и проверишь на линуксе, свои примеры, а потом на контроллере.

 

Кстати, на сайте есть pdf-ка, там есть примеры.

 

Как я понял под BSD нужно ос, чтоб разруливать, ос непредполагается, поэтому callback

а на нее примеров нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начать наверное лучьше с ознакомления с TCP/IP, тогда думаю и с lwip проще разобраться будет. Благо, что читать не очень много. Понравилось описание на www.protocols.ru. Можно и самому написать. Вам надо к блоку данных добавлять заголовок TCP или UDP, к этому пакету добавить заголовок IP и пулять в сеть. И обратно. По большому счету ничего сложного. Геморно только TCP реализовать - много факторов влияет на смену текущего состояния TCP. Больше всего и читать по нем. Может вам будет достаточно UDP, тогда все проще, но придется "самому" контролировать доставку.

 

С протоколом ознакомился, думаю начальство неодобрит переписывания стека :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость impatt
Как я понял под BSD нужно ос, чтоб разруливать, ос непредполагается, поэтому callback

а на нее примеров нет

Неправильно.

Написано, что механизм взаимодействия с библиотекой такой-же, как в BSD (такой-же, как в Линуксе, *BSD, такоей-же, как в винде 9х, если не ошибаюсь по поводу последней - та, что winsock.dll имеет).

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

По поводу линукса (да хоть той-же *BSD) - эта ось на настольном компьютере поможет тебе нормально промоделировать работу твоей проги под эту библиотеку, ибо API - одинаков.

Ферштеен ?

Изменено пользователем impatt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понял под BSD нужно ос, чтоб разруливать, ос непредполагается, поэтому callback

а на нее примеров нет

Неправильно.

Написано, что механизм взаимодействия с библиотекой такой-же, как в BSD (такой-же, как в Линуксе, *BSD, такоей-же, как в винде 9х, если не ошибаюсь по поводу последней - та, что winsock.dll имеет).

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

По поводу линукса (да хоть той-же *BSD) - эта ось на настольном компьютере поможет тебе нормально промоделировать работу твоей проги под эту библиотеку, ибо API - одинаков.

Ферштеен ?

 

Спасибо теперь начинаю понимать, значит вовсе необязательно использовать низкоуровневые callback функции, (с winsock немного знаком) :smile3009:

 

как привязывается API к железу, через какую функцию ?

правильно ли я понял что низкоуровненвые функции ВВ находятся

\src\netif\ ethernetif.c

в частности low_level_output и low_level_input ?

для чего нужен loopif.c ?

slipif.c так понимаю для работы по протоколу slip.

поправте если неправ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость impatt
Спасибо теперь начинаю понимать, значит вовсе необязательно использовать низкоуровневые callback функции, (с winsock немного знаком)

Никаких, как я понимаю, callback-ов. Если я и упомянул про winsock.dll (а не winsock2.dll), то только потому, что слышал, что в ней использовались фукции а-ля BSD. Сам winsock-ом не пользовался.

 

Так как я не пользовался этой библиотекой, то точно ответить на следующие вопросы не могу.

Могу посоветовать скачать доку http://www.sics.se/~adam/lwip/doc/lwip.pdf и поглядеть по главам, а также пытаться скомпилировать проект и поглядеть, что получается.

 

как привязывается API к железу, через какую функцию ?

Надо, главным образом, как я понимаю, пару функций принимающих пакет и отправляющих его. Это, условно говоря, связь с железом.

правильно ли я понял что низкоуровненвые функции ВВ находятся

\src\netif\ ethernetif.c

в частности low_level_output и low_level_input ?

Я не очень в курсе, что такое BB...

К сожалению, не могу подсказать и касательно указанных функций и файлов: не имел дела я с этой библиотекой.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С протоколом ознакомился, думаю начальство неодобрит переписывания стека :blink:

Гм.. а я думаю начальству все равно какой там будет стек, больше всего их будет волновать функциональность.

На мой взгляд LwIp сделан криво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...