Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Инициализация последовательных портов на мультикарте  (Прочитано 1487 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Всем привет!

Имеется мультикарта (2 COM, 1 LPT, см. ниже) и не совсем понятное поведение...
Подскажите, пожалуйста, какой сервис отвечает за инициализацию устройств /dev/ttyS*?
Если parport_serial, то как его настроить? Только через setserial?
Почему разные настройки у портов 4 и 5 (настройки, приведенные ниже, могут и поменяться местами от порта к порту)?
Иногда настройки совпадают.

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 31 Марта 2017, 23:00:42 от koluna »

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
udev же отвечает за создание файлов устройств в каталоге /dev на основании информации, хранящейся в каталоге /sys. Следовательно, можно задать правила в /etc/udev/rules.d/ Поправьте меня, если я ошибаюсь.

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
udev же отвечает за создание файлов устройств в каталоге /dev на основании информации, хранящейся в каталоге /sys. Следовательно, можно задать правила в /etc/udev/rules.d/ Поправьте меня, если я ошибаюсь.

Ууу... не совсем понял ответ на свои вопросы. Объясните поподробнее, пожалуйста.
Я не понимаю, почему настройки у /dev/ttyS4 и /dev/ttyS5 разные бывают на портах от загрузки к загрузке.
Где какие настройки - случайный процесс...
Как я понимаю, если два порта на одной карте, то и настройки должны быть изначально одинаковые, а они разные!
А если разные настройки, то у меня софтина глючит. На Ubuntu 10.04 при открытии порта ядро падало...
Стоит только настройки от, скажем, /dev/ttyS5 применить к /dev/ttyS4 с помощью stty, так начинает нормально работать (см. низ в спойлере).

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Я не понимаю, почему настройки у /dev/ttyS4 и /dev/ttyS5 разные бывают на портах от загрузки к загрузке.
Где какие настройки - случайный процесс...
А как и где вы задаете эти самые настройки?
Как я понимаю, если два порта на одной карте, то и настройки должны быть изначально одинаковые, а они разные!
Почему они должны быть одинаковыми, если настраивается один порт? Или все-таки два?

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Цитировать
А как и где вы задаете эти самые настройки?
Почему они должны быть одинаковыми, если настраивается один порт? Или все-таки два?

Я лично - никак и нигде. Я думаю, что это где-то в конфигах ОС прописано, настройка при загрузке. Нет?
Значения всех приведенных мною настроек получены до запуска моего софта и какой-либо терминальной софтины.
Т. е., я загрузил ОС, сразу выполнил команды и узнал настройки. Увидел, что они разные, это насторожило.

Да и вообще не понятен механизм настройки портов...
Когда загружается parport_serial он берет откуда-нибудь настройки или сам шарит по шине в поисках устройств?
А setserial только сообщает этому драйверу адрес, прерывание, базовую скорость (+ другие параметры) и больше ничего не делает?
Это можно сделать в любой момент времени?

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Проблема у вас состоит в том, что порядок инициализации устройств при загрузке системы не определен, т.е. от загрузки к загрузке имя устройства в каталоге /dev может быть разным, что и происходит в вашем случае. Для присвоения устройству заранее определенного имени и создаются правила udev.
В целях ознакомления почитайте эту вики страницу. Как писать правила udev можно посмотреть здесь.

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Проблема у вас состоит в том, что порядок инициализации устройств при загрузке системы не определен, т.е. от загрузки к загрузке имя устройства в каталоге /dev может быть разным, что и происходит в вашем случае.

Опа... т. е., если сегодня, условно, у меня девайс подключен к четвертому порту, то завтра он может оказаться на пятом, седьмом или десятом (не перетыкая разъема, естественно)?

Цитировать
Для присвоения устройству заранее определенного имени и создаются правила udev.
В целях ознакомления почитайте

Спасибо, посмотрим.

А по поводу вопросов инициализации что можете сказать?

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Опа... т. е., если сегодня, условно, у меня девайс подключен к четвертому порту, то завтра он может оказаться на пятом, седьмом или десятом (не перетыкая разъема, естественно)?
Верно. Из-за этого ваша программа некорректно работает, т.к. имя порта зафиксировано в ее настройках.
А по поводу вопросов инициализации что можете сказать?
Чего не знаю, того не знаю, но предполагаю, что контроллер порта отвечает за его режим работы, согласуемый по протоколам с сопряженным устройством.

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Цитировать
Верно. Из-за этого ваша программа некорректно работает, т.к. имя порта зафиксировано в ее настройках.

Смысл понятен, спасибо. Но ведь настройки я применяю! Ладно, выбор порта - это уже другой вопрос.

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

Я, кажется, понял в чем дело... дело в линии DCD, со стороны устройства она не подтягивается никуда, а со стороны мультикарты слабая подтяжка к нулю (как обычно в MAX232), когда кабель подключаем, получаем антенну и на DCD полный бардак, поэтому, то работает, то не работает...
Думаю, сейчас вопрос сводится к тому, как заставить драйвер игнорировать линию DCD. При открытии мы просто выполняем open(comName, ... | O_NONBLOCK), но далее драйвер все равно мониторит состояние DCD, как я понимаю, и это приводит к неработоспособности ПО...

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Ерунда какая-то...
Такое ощущение, что или драйвер или контроллер мультикарты игнорирует запрет на использование линий управления на одном из портов! :-/

Понял, что раньше не встречался с такой проблемой только из-за того, что использовал неполный кабель...
« Последнее редактирование: 05 Апреля 2017, 08:02:25 от koluna »

 

Страница сгенерирована за 0.091 секунд. Запросов: 26.