2012-05-24 1 views
0

Я запускаю встроенное ядро ​​Linux на аппаратном обеспечении, которое можно настроить как DTE/DCE. В драйверах tty/serial в файле tty_io.c есть функция tty_tiocmset(), которая берет бит-шаблон из tty_ioctl для установки/очистки определенных сигналов управления модемом. Интересно, что функция tty_tiocmset() маскирует все другие модемные сигналы, кроме TIOCM_DTR | TIOCM_RTS | TIOCM_OUT1 | TIOCM_OUT2 | TIOCM_LOOP (эта маска показана в коде ниже). Однако, если вы посмотрите на документацию, вы увидите, что все модемные сигналы должны быть установлены/очищены. http://www.kernel.org/doc/man-pages/online/pages/man4/tty_ioctl.4.html прокрутите страницу вниз до «Modem Control».tty_tiocmset в linux ядро ​​маскирует желаемый сигнал модема

Кто-нибудь просто знает, почему эта маска присутствует без других сигналов, таких как RI, CD, CTS, DSR? Также есть ли другой способ использовать немодифицированный драйвер для управления другими модемными сигналами?

ответ

0

Linux был первоначально размещен на платформе x86 PC, в которой использовались UART 8250 типа. Имена модемных сигналов OUT1 & OUT2 не являются именами EIA/RS-232, но отображаются в листе данных Western Digital 8250! Эти 5 бит, перечисленные для tty_tiocmset(), соответствуют (по имени & функция) 5 битов, доступных в регистре управления модемом 8250. Любые дополнительные линии управления должны быть реализованы логикой, внешней по отношению к 8250.

Кто-нибудь просто знает, почему эта маска присутствует без других сигналов, таких как RI, CD, CTS, DSR?

Те четыре, которые вы уже являются входными сигналами к порту DTE и ПК, как правило, настроены (или принимать/по умолчанию), чтобы быть DTE.
Входные сигналы не будут отображаться в регистре управления выходом.
Возможно, это ошибка, когда Linux встроен в устройство для порта DCE?
Эти входные сигналы отображаются в регистре состояния модема.

Также есть ли другой способ использовать немодифицированный драйвер для управления другими модемными сигналами?

Вы можете переназначить OUT1 и OUT2 на любой дополнительный сигнал DTE (ов) Вам нужно вывести.
Если вам нужно настроить порт для DCE, вам, возможно, придется переназначить все четыре линии управления.
Для порта DCE (например, модема) обычно имеется только 4 линии управления выходом: DCD, CTS, DSR и RI. И есть ровно 4 бита управления выходом (кроме loopback) в 8250 MCR!

+0

Спасибо, я был смущен этими сигналами OUT1 и OUT2, но имеет смысл, что я могу просто использовать их и переназначать их по мере необходимости для DCE. Я никогда не видел, чтобы они появлялись в любом драйвере. Поскольку мой драйвер позволит порту uart действовать как dce или dte, я полагаю, что имеет смысл просто отображать сигналы модема DTE и сигналы OUT на соответствующие сигналы модема DCE. – user1415608

 Смежные вопросы

  • Нет связанных вопросов^_^