Jump to content

    
Sign in to follow this  
Arlleex

SLIP в Linux: простой обмен между устройствами

Recommended Posts

Приветствую!

 

Есть борда с Linux на борту. Она по UART подключена к микроконтроллеру, который гоняет данные в SLIP-формате.

Вопрос: есть ли в Linux готовая реализация SLIP (обрамляющие символы 0xC0, escape-ы 0xDBDC, 0xDBDD), чтобы я мог общаться со своей железкой?

Желательно иметь функции что-то типа

void send(void *buf, u32  len);
void recv(void *buf, u32 *len);

для организации простейшего обмена.

 

Ну, или, например, передача так, как указано в прототипе выше, а прием колбэками. Что-то типа

void msgproc(void *buf, u32 len)
{
  my_struct_t s;
  if(len == sizeof(s))
  {
    memcpy((void *)&s, buf, len);
    if(s.ledstate)
      LEDOn();
    else LEDOff();
  }
}

где этот msgproc будет дергаться всякий раз, когда с последовательного порта прилетело что-то внятное и закодированное SLIP-ом...

Share this post


Link to post
Share on other sites

а через ppp контроллер не умеет? это в линуксах точно есть, а slip это совсем древняя вещь, но если его поднять (или ppp), то потом уже не надо функций send/recv, потом уже можно через tcp/udp/ip сокеты работать

Edited by gridinp

Share this post


Link to post
Share on other sites
31 минуту назад, gridinp сказал:

а через ppp контроллер не умеет? это в линуксах точно есть...

Контроллер сеть не умеет и не планируется. Его код прост и в целом девайс свои функции выполняет корректно.

А вот Linux, как обычно, обосрался :shout: приходится пилить или искать что-то готовое. Казалось бы, простейшая вещь...

SLIP штука, может, и древняя, но актуальности своей не потеряла в своей области применения. Использую повсеместно.

Грубо говоря: есть блок, который по UART-у обменивается пачками данных, завернутых в SLIP-кадры.

Поддержать этот обмен в Linux (почему-то?) для моего, скажем так, заказчика, стало камнем преткновения.

Использовать готовое он с горем пополам может, а свой драйвер написать - нет.

Вот я сижу и думаю; SLIP лет 30 уже не девочка. Неужели никто не соединял девайсы по UART-у с этим фреймером, используя на Linux-стороне готовые, м.б. утилиты типа raw mode для SLIP, хз как правильно объяснить. Вот я и хотел какой-то консультации, в какую сторону пнуть этому самому заказчику, куда копать хотя бы ему. Сам я в Linux копать не хочу, сейчас задача каким-то образом посодействовать заказчику и забыть весь этот секс как страшный сон.

Share this post


Link to post
Share on other sites
13 hours ago, Arlleex said:

 

Он же простой. Я когда-то просто взял и написал прием и передачу на C. Ой уже 20 лет назад!!!!!!!!!!!!!!  Тогда еще CSR чип не имел апликации внутри, а  использовался SLIP как транспортный протокол для HCI.

Какой драйвер? Это же не устройство. Просто распаковка и упаковка в SLIP.

Share this post


Link to post
Share on other sites
12 hours ago, Arlleex said:

Контроллер сеть не умеет и не планируется. Его код прост и в целом девайс свои функции выполняет корректно.

А вот Linux, как обычно, обосрался :shout: приходится пилить или искать что-то готовое.

https://lmgtfy.com/?q=SLIP+protocol+linux

А это точно был линукс - тот кто обосрался?

Share this post


Link to post
Share on other sites
12 minutes ago, one_eight_seven said:

https://lmgtfy.com/?q=SLIP+protocol+linux

А это точно был линукс - тот кто обосрался?

Нет - это был тот, который между стулом и клавиатурой.

Share this post


Link to post
Share on other sites
47 минут назад, x893 сказал:

Нет - это был тот, который между стулом и клавиатурой.

Именно. Но что имеем, то имеем.

На окнах я графическую приложуху написал, работает как часы.

Share this post


Link to post
Share on other sites
2 hours ago, Arlleex said:

На окнах я графическую приложуху написал, работает как часы.

Т.е. под игровой прошивкой нашел нужные библиотеки или что там еще, а в операционной системе — нет? Ну-ну…

Чуть ли не по первой ссылке из выдачи гугола можно разобраться, как в линуксе с этим протоколом работать. Открываем сокет, читаем данные... Элементарно!

Share this post


Link to post
Share on other sites
1 час назад, Eddy_Em сказал:

Т.е. под игровой прошивкой нашел нужные библиотеки или что там еще, а в операционной системе — нет? Ну-ну…

Курлык!? О чем речь вообще? Какие нафиг библиотеки? C++ Builder VCL + WinAPI для работы с COM-портом весь мой инструмент.

Говорю, для проверки своего железа я на Windows накатал прогу, которая также должна будет работать на его плате с Linux-ой (по такой же логике).

 

1 час назад, Eddy_Em сказал:

Чуть ли не по первой ссылке из выдачи гугола можно разобраться, как в линуксе с этим протоколом работать. Открываем сокет, читаем данные... Элементарно!

SLIP - это еще не протокол! Это фреймер, работающий ниже протокольного уровня.

Покажите мне по первой ссылке в гугле, как мне на Linux тупо передавать и принимать пакеты данных, завернутые в байт-стаффинг. Элементарно, блин...

По первым ссылкам гугла я уже ездил и там речь только о работе с сетевыми сокетами. А оно мне нафиг не нужно. Мне куда проще надо.

Share this post


Link to post
Share on other sites
3 минуты назад, Arlleex сказал:

О чем речь вообще? Какие нафиг библиотеки? C++ Builder VCL + WinAPI для работы с COM-портом весь мой инструмент.

Я, если честно, тоже не понял, что такого есть в винде, чего не нашлось в линуксе?

Нужна замена C++ Builder-у что ли? Если да, то это Qt Creator. С последовательным портом работать умеет, формочки клепать можно.

Share this post


Link to post
Share on other sites
2 минуты назад, Eddy_Em сказал:

Если надо куда проще, то пишется все самостоятельно.

Там же странички 3-4 кода…

В том и дело...

 

Только что, AHTOXA сказал:

Я, если честно, тоже не понял, что такого есть в винде, чего не нашлось в линуксе?

Опыта. Я на МК написал, на ПК написал и проверил, что все огонь. За кого-то писать не собираюсь, максимум - вразумить каким-то образом и направить в нужное русло.

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

Это, конечно, жутко бесит, но деваться некуда. Как оказалось, "я доверяю всему готовому и не доверяю самодельному коду" (с):biggrin::buba:

Ппц, у меня панический смех:focus:

Share this post


Link to post
Share on other sites

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

Я в таких случаях пишу тестовый скрипт на питоне. Питон работает и в винде, и в линуксе, и прочитать его может почти любой.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this