The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Переполнение буфера COM порта"
Отправлено Seven7, 12-Май-10 11:23 
Стоит мультикарта на чипсете WCH CH352L, у неё есть родной драйвер для Linux, поставил настроил как надо:
# dmesg|grep ttyS
[    1.313772] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.313944] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    1.314574] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.314866] 00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    1.315268] 0000:00:07.0: ttyS2 at I/O 0xdf00 (irq = 18) is a XScale
[    1.315502] 0000:00:07.0: ttyS3 at I/O 0xe000 (irq = 18) is a XScale

# setserial -g /dev/ttyS*
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: 16550A, Port: 0xdf00, IRQ: 18  - порт мультикарты
/dev/ttyS3, UART: 16550A, Port: 0xe000, IRQ: 18  - порт мультикарты


в результате на чтение работает отлично, а вот при передаче буфер переписывается циклический, т.е. у 16550А буфер 16 байт как и надо, если передавать слова не более 16 байт то все ок(ttyS1 и ttyS3 соединены через нуль модемный кабель):
# echo "1234567890123456" > /dev/ttyS3

# cat /dev/ttyS1
1234567890123456

а если больше то первые слова переписываются последними:
#echo "12345678901234567890" > /dev/ttyS3
# cat /dev/ttyS1
78905678901234567890

#echo "12345678901234567890abcdef" > /dev/ttyS3
# cat /dev/ttyS1
1890abcdef1234567890abcdef

Т.е. получается что байты не успевают уйти из буфера UART FIFO, и переписываются новыми поступающими байтами.

Как это можно вылечить и почему так происходит?? может кто нить встречался, а то у меня уже мозги кипят с этими платами...


 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру