anonymous@RULINUX.NET~# | Last login: 2024-12-25 22:24:57 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Linux-hardware | [RSS] |
Доброго времени суток.
Имеется плата последовательных интерфейсов Moxa CP-132, поддерживающая скорости до 921600 бод включительно. Однако уже на скорости 460800 бод начинает наблюдаться потеря данных. В dmesg'е были замечены сообщения про input overrun. Вначале грешил на конфликт по irq, но даже когда из pci слотов вытащенною всё остальное на скорости 921600 бод продолжают преподать байты (простой тест с перегоном cat'ом файла с известным содержимым через /dev/ttyM0). В попытках побороть input fifo overrun залез в сырцы ядрёных драйверов (благо выложены под GPL). Нашёл там параметр: заполнение аппаратного fifo ввода, при котором вызывается перемещение его содержимого в ядрёный буфер. По умолчанию - 14 байт (при 16 байтах собственно аппаратном fifo). Уменьшил до 4'х байт. Возросла нагрузка системы (чаше дёргается железкой), но потери данных почти, но не полностью прекратились, примерно один раз из трёх при пересылке файла ~10 мегабайт на скорости 921600 бод теряется один байт (в остальных случаях файл приходит не повреждённым). Если ещё уменьшить заполняемость аппаратного fifo - до двух байт, то это не даёт вообще никакого эффекта -- процент потерь и загрузка системы такая же, как и при штатном значении в 14 байт. Пробовал втыкать в более шуструю машину: P4 1.8 GHz супротив PIII 1GHz -- не увидел разницы (такой же процент потерь). Модифицированные дрова на более быстром железе пока не пробовал, т.к. не было времени их собрать.
Вопрос к многоуважаемым all: есть ли кто сталкивался с похожей проблемой, то существует ли способ решения? Аппаратное управление потоком задействовать не могу, так как линия связи -- пара скученных проводов RS-485. Заранее спасибо.
anonymous(*) (2009-12-07 22:29:00)
Emacs-w3m/1.4.364 w3m/0.5.2
|
|
|
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?>UA как бы намекает на личность анонимуса...
>Ну и да имхо на 30 000 000 байт потеря 1го байта, это не аппаратная проблема, хз где возникают коллизии.
|
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?Вполне возможно из-за latency. Сотвори небольшую прогу которая только извлекает данные и более ничего не делает. Если потери продолжатся, попробуй realtime kernel. Если нет - подумай о редизайне способа забора данных проги и должной буферизации ввода. bugmaker(*)(2009-12-08 02:54:47)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?>> пара скученных проводов RS-485
bugmaker(*)(2009-12-08 07:02:46)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?>Вполне возможно из-за latency.
>Сотвори небольшую прогу которая только извлекает данные и более ничего не делает.
>Если потери продолжатся, попробуй realtime kernel.
|
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?А сделать квитирование передаваемых данных? Тогда при любом проценте сбойных пакетов будет гарантия получения корректных данных. PS: попробуй на FreeBSD. |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?> Уже делал setserial low_latency.
bugmaker(*)(2009-12-08 13:10:20)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?>> Уже делал setserial low_latency.
anonymous(*)(2009-12-08 13:46:54)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?>А сделать квитирование передаваемых данных? Тогда при любом проценте сбойных пакетов будет гарантия получения корректных данных.
>PS: попробуй на FreeBSD.
anonymous(*)(2009-12-08 13:50:08)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?вообще я имел в виду latency самой системы. Вот понадобилось ей в своп наложить, кернел залочился, и прога не успела данные вынуть. Попробуй кстати разные элеваторы. |
Скрыть
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?Уже понял, что low latency kernel, fnx. Пока мучаем плату у которой аппаратный fifo больше -- там таких проблем нет. |
|
|
|
Этот тред читают 2 пользователя: |
Анонимных: 2 Зарегистрированных: 0 |
Re: [serial]Как побороть hardware input fifo overrun на высоких скоростях?
UA как бы намекает на личность анонимуса...
Ну и да имхо на 30 000 000 байт потеря 1го байта, это не аппаратная проблема, хз где возникают коллизии.
>пара скученных проводов RS-485
может быть загвозд в этом
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091106 Shiretoko/3.5.5