Добрый вечер.
Необходимо разработать две программы, взаимодействующие с последовательным портом:
- как с файловым дескриптором;
 - непосредственно через регистры последовательного порта.
 
Для первого используется <termios.h>, для второго - <sys/io.h>.
Однако проверить работоспособность в двух случаях оказалось невозможно: в первом случае /dev/ttyS* и /dev/ttyUSB* попросту не открываются, а во втором всякое чтение из регистра по адресу 0x3F8 возвращает байт 255.
После такого открытия решил посмотреть доступные мне порты с помощью утилиты setserial и получил следующий результат:
❯ sudo setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: unknown, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
~
❯ sudo setserial -g /dev/ttyUSB[01]
zsh: no matches found: /dev/ttyUSB[01]
Вследствие этого возникает вопрос: связано ли такое поведение с отсутствием физических последовательных портов, и можно ли проверить работоспособность программ не в виртуальной машине?
