Jump to content

    

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

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

 

Есть борда с 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

Если заказчик хочет SLIP - пусть ручку позолотит.

Глядишь и накопается что-то в Linux'e.

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

в моих ubuntu и raspbian есть slattach

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-4 кода…

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now