2

Я использую Debian Wheezy, и у моего ноутбука нет последовательного порта. Почему у меня /dev/ttyS* , и что будет, когда я попытаюсь их прочитать / написать?

Мой конфиг:

└──> ll /dev/ttyS*
crw-rw---T 1 root dialout 4, 64 Apr 30 09:21 /dev/ttyS0
crw-rw---T 1 root dialout 4, 65 Apr 30 09:21 /dev/ttyS1
crw-rw---T 1 root dialout 4, 66 Apr 30 09:21 /dev/ttyS2
crw-rw---T 1 root dialout 4, 67 Apr 30 09:21 /dev/ttyS3

└──> sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:unknown port:000002F8 irq:3
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

└──> stty -g
6d02:5:4bf:8a3b:3:1c:7f:15:4:0:1:ff:11:13:1a:ff:12:f:17:16:ff:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

└──> dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.653544] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.712718] 00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

PS: здесь упоминается случай, когда у пользователя один порт, а в /dev у него 4, а у меня его нет.

2 ответа2

4

Эти порты действительно существуют на вашей материнской плате. Они просто не подключены к внешнему порту, как на некоторых рабочих столах.

4

Весьма вероятно, что порт ttyS0 действительно существует на вашей материнской плате. И, возможно, на материнской плате также есть разъем для его использования! Когда я купил свою последнюю плату, я тоже пришел к такому выводу (увидев указанный порт), затем я посмотрел все разъемы в руководстве к плате. Не было прямого разъема снаружи, только маленький «заголовок». Итак, я подключил кабель к внешнему разъему db9, и все работает!

Следующие три (ttyS1-S3), скорее всего, НЕ существуют, но перечислены, потому что драйвер последовательного порта их протестировал, что является действием по умолчанию во многих Linux. Смотрите страницу руководства для setserial , которая является функцией, вызываемой при загрузке Linux. Это говорит:

Во время обычного процесса загрузки инициализируются только COM-порты 1-4 с использованием портов ввода-вывода по умолчанию и значений IRQ, как указано ниже.

РЕДАКТИРОВАТЬ: Кстати, легко увидеть, работает ли ttyS* как файлы или нет. Просто попробуйте отправить им что-нибудь консольной командой:

cat <some_short_file> > /dev/ttyS1

вероятно, выдаст I/O error , потому что нет подключенного драйвера. То же самое для ttyS0 будет работать нормально. Команда > в перенаправляет вывод команды cat на последовательный порт. cp shortfile /dev/ttyS0 тоже работает.

РЕДАКТИРОВАТЬ: ttyS1-S3 физически не существует, поэтому нет, вы не можете использовать их. Существуют и другие устройства, которые вы можете использовать в качестве виртуальных портов, такие как псевдотерминалы (pty) и петлевые устройства. Проверьте Википедию и справочные страницы на ptys. Если ptys - это символьные устройства, вы можете использовать петлевые устройства для передачи блоков (например, для виртуальных дисков). Википедия и справочная документация.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .