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

 
 
> Много виртуальных UART, RPi3
toweroff
сообщение Apr 12 2017, 16:28
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день

Ну не то, чтоб я ноль прям в Linux sm.gif около того

Но надо - значит надо.
Есть задача такая: некий драйвер реализует в системе несколько виртуальных UART. Внешняя связь у него через один существующий - ttyS0
Драйвер от каждого виртуального UART собирает данные, заворачивает в обертку и отправляет в ttyS0
Оттуда же принимает завернутые данные и "рассовывает" по буферам соответствующих виртуальных UART

Я так понимаю, мне не хватает знаний для:

1. Зарегистрировать имя в дереве устройств
2. Интерфейс драйвера UART для системы
3. Таймер для сбора данных из виртуальных портов

Поможите примерами, люди добрые
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Apr 18 2017, 17:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



UPD
Товарищи, вот какой вопрос возник. Правильно ли будет забирать из драйвера данные физического порта, обрабатывать и рассовывать по виртуальным системным таймером?
Или для подобных действий нужен специальный механизм (драйвер-то сам по себе не дергается, по сути, его "теребят" пользовательские приложения, а забирать данные нужно)
Go to the top of the page
 
+Quote Post
gerber
сообщение Apr 19 2017, 10:31
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(toweroff @ Apr 18 2017, 20:19) *
Товарищи, вот какой вопрос возник. Правильно ли будет забирать из драйвера данные физического порта, обрабатывать и рассовывать по виртуальным системным таймером?

ИМХО, это неправильно, будить систему по каждому тику таймера, а не по приходу данных.
Вообще, драйвер на уровне ядра тут лишний (как уже указывалось выше). Задача решается в userspace обычным демоном, который создает нужное вам количество char devices, после чего блокируется на read() из физического порта. Все пришедшие из "виртуальных" портов данные он пишет в физический порт, и наоборот, пришедшие из физического порта парсит, и рассовывает по "виртуальным".


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 19 2017, 13:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(gerber @ Apr 19 2017, 13:31) *
ИМХО, это неправильно, будить систему по каждому тику таймера, а не по приходу данных.
Вообще, драйвер на уровне ядра тут лишний (как уже указывалось выше). Задача решается в userspace обычным демоном, который создает нужное вам количество char devices, после чего блокируется на read() из физического порта. Все пришедшие из "виртуальных" портов данные он пишет в физический порт, и наоборот, пришедшие из физического порта парсит, и рассовывает по "виртуальным".

не нашел, все примеры в kernel space sad.gif
или мой гугель сломался
с другой стороны, если драйвер будет совершать по таймеру очень короткое действие раз эдак в 10мс, что с того?
у меня ж еще вот какая загвоздка - создаваемые порты должны быть вполне себе полноценными, со всякими ioctl(), ибо на них будет садиться и звонилка модемная и еще вещи
Go to the top of the page
 
+Quote Post
Olej
сообщение Apr 19 2017, 15:59
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(toweroff @ Apr 19 2017, 16:04) *
с другой стороны, если драйвер будет совершать по таймеру очень короткое действие раз эдак в 10мс, что с того?
у меня ж еще вот какая загвоздка - создаваемые порты должны быть вполне себе полноценными, со всякими ioctl(), ибо на них будет садиться и звонилка модемная и еще вещи

Как-то мне всё это видится: самомнения - полные штаны, а умений - кот наплакал 1111493779.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Много виртуальных UART   Apr 12 2017, 16:28
- - nill   Цитата(toweroff @ Apr 12 2017, 23:28) Пом...   Apr 13 2017, 06:29
- - Olej   Цитата(toweroff @ Apr 12 2017, 19:28) Ест...   Apr 13 2017, 08:17
- - toweroff   Проясните, пожалуйста, такой момент. Нашел я на пр...   Apr 18 2017, 11:47
|- - gerber   Цитата(toweroff @ Apr 18 2017, 14:47) Куд...   Apr 18 2017, 13:58
|- - Olej   Цитата(gerber @ Apr 18 2017, 16:58) Вкрат...   Apr 18 2017, 14:20
- - krux   не надо никаких самописных модулей ядра. гуглите ...   Apr 18 2017, 14:36
- - toweroff   Значится так... Я тут нагуглил tty0tty - виртуальн...   Apr 18 2017, 16:15
|- - toweroff   Цитата(Olej @ Apr 19 2017, 18:59) Как-то ...   Apr 19 2017, 19:14
|- - Olej   Цитата(toweroff @ Apr 19 2017, 22:14) я о...   Apr 19 2017, 21:58
||- - toweroff   Цитата(Olej @ Apr 20 2017, 00:58) Нужно б...   Apr 20 2017, 04:52
||- - Olej   Цитата(toweroff @ Apr 20 2017, 07:52) Под...   Apr 20 2017, 09:21
||- - toweroff   Цитата(Olej @ Apr 20 2017, 12:21) А подня...   Apr 20 2017, 10:29
|- - Tarbal   Цитата(toweroff @ Apr 19 2017, 23:14) В п...   May 20 2017, 21:51
- - toweroff   В общем всем спасибо, все работает   Apr 20 2017, 11:36
- - toweroff   Поторопился... похоже, не устанавливаются как нуж...   Apr 20 2017, 20:01


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:58
Рейтинг@Mail.ru


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