LINUX.ORG.RU
ФорумTalks

Отчего COM порты в linux такие странные?

 ,


2

2

Казалось бы, для com порта по умолчанию ожидается что что подашь на один конец, то и вылезет из другого. Всякие навороты включаются дополнительными опциями. И в мире микроконтроллеров так и есть.

Но в Linux не так. По-умолчанию com порты в linux ведут себя по-другому. Они делают всякие дополнительные вещи. Например, очень любят менять 0x0D ('\r') на 0x0A ('\n'). Я долго пытался понять, что за ерунда происходит и почему у меня приходят не те байты, что я посылал. В итоге нашел, что для того, чтобы com порт просто пересылал данные, надо дополнительный настройки делать.

Зачем так сделано?

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: комментарий от Eddy_Em

В любом случае мне нужно 100% отсутствие ошибок. А это сразу означает протокол с коррекцией ошибок, т.к. даже самый лучший контроллер не гарантирует 100%

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Мне лень переделывать железку. А когда переделаю - воткну сразу ethernet, наверно, благо модуль enc28j60 уже лежит на полочке

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)

Запомни главное - по трем проводам надёжность условная.

Обязательно заводи сигналы контроля потока и используй их.

Личная боль просто 😄

nihirash ★★★
()
Ответ на: комментарий от Eddy_Em

Pl2303 няз давно не выпускаются. То, что есть на рынке - галимые подделки. Где-то даже фото кристалла была - он совсем другой

lenin386 ★★★★
()
Ответ на: комментарий от lenin386

галимые подделки

Работают же, что еще надо?

А я из STM32F0x2 и STM32F103 эмулятор PL2303 сделал. Чтобы не париться с «драйверами»: оно и в линуксе работает (если модуль собрать не забыл), и в мастдайке, и в ондроеде. И, в отличие от «чистого CDC-ACM», появляется нормальный /dev/ttyUSBx, который к тому же нормально реагирует на попытки сменить параметры порта. При необходимости и на DTR/RTS можно было бы реагировать (если б в ядреном модуле это было).

Eddy_Em ☆☆☆☆☆
()

Повысить порог входа, чтобы мамкины школьники не обижали COM-порты и вообще не шарахались по нашим линуксам.

Promusik ★★★★★
()
Последнее исправление: Promusik (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Существует классический протокол HDLC. На одной из прошлых работ сталкивался. Есть железка, в ней модули между собой по последовательным портам (разным комбинациям UART/RSxxx) общаются. Но сверху сделан HDLC. Релизован как в центральном модуле (ОС реального времени), так и в периферии (микроконтроллеры разных сортов).

Deleted
()

Потому что изначально это был типа «универсальный» порт предназначенный для «всего».

cvv ★★★★★
()
Ответ на: комментарий от Eddy_Em

тоже голосую за CAN. у него FPS выше и гарантированная доставка даже широковещательных сообщений. это самый лучший протокол для железа.

Iron_Bug ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.