- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, pavlinux, 03:37 , 11-Дек-12 (1) +1
> День добрый. Подскажите советом куда смотреть. > От устройства приходят данные пакетами по 8 байт. > Если пакетов идет приблиз 80-100 в сек то все ок , если > больше начинает идти то начинает терять кучу пакетов.Утра доброе. Подскажите советом куда смотреть. Я работаю. Получаю аванс и зарплату пакетами по 10 купюр. Параметры жены следующие ========================================================================================== [root@abramovich ~] # stty -F /dev/wife w=55, len=175, h=90, boobs=3, edu=MGU, otsos=100500+, piz=^o -mozg, +havach, +quiet ========================================================================================== Если на жену уходит приблизительно 80-100% в мес, то всё OK, если жена начинает требовать шубу, тиффани и бмв 118i, то я начинаю терять кучу пакетов.
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, greenetc, 15:15 , 11-Дек-12 (3)
>[оверквотинг удален] > Я работаю. Получаю аванс и зарплату пакетами по 10 купюр. > Параметры жены следующие > ========================================================================================== > [root@abramovich ~] # stty -F /dev/wife > w=55, len=175, h=90, boobs=3, edu=MGU, otsos=100500+, piz=^o > -mozg, +havach, +quiet > ========================================================================================== > Если на жену уходит приблизительно 80-100% в мес, то всё OK, > если жена начинает требовать шубу, тиффани и бмв 118i, то я начинаю > терять кучу пакетов.если это аллегория на тему "недостаточно скорости работы порта" то 800 байт в секунду против 57600 скорости порта не ровня. Игры с параметрами icanon и vmin и vtime не привели к результату.
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, pavlinux, 00:27 , 12-Дек-12 (4)
>>[оверквотинг удален] >> Если на жену уходит приблизительно 80-100% в мес, то всё OK, >> если жена начинает требовать шубу, тиффани и бмв 118i, то я начинаю >> терять кучу пакетов. > если это аллегория на тему "недостаточно скорости работы порта"Это была аллегория на тему, - "Что за прибор?" С этой стороны, как я понял, впаянный в чипсет иль рядом UART 16550A, с другой стороны кто? > 800 байт в секунду против 57600 скорости порта не ровня Может стоить понизить до 2400 иль 1200 хотя бы.
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, greenetc, 11:42 , 12-Дек-12 (5)
>>>[оверквотинг удален] >>> Если на жену уходит приблизительно 80-100% в мес, то всё OK, >>> если жена начинает требовать шубу, тиффани и бмв 118i, то я начинаю >>> терять кучу пакетов. >> если это аллегория на тему "недостаточно скорости работы порта" > Это была аллегория на тему, - "Что за прибор?" > С этой стороны, как я понял, впаянный в чипсет иль рядом UART > 16550A, с другой стороны кто?прибор считывающий поступающие импульсы с крыльчатки для измерения скорости потока бенза (atmega) .... вот их то и приходит 80-200 в сек. >> 800 байт в секунду против 57600 скорости порта не ровня > Может стоить понизить до 2400 иль 1200 хотя бы. Попробую. Я всегда считал что бОльшгая скорость охватит в любом случае полосу пропускания и гарантировано не потеряет пакеты ... а выходит что не так что ли ?
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, pavlinux, 13:50 , 12-Дек-12 (6)
>>>>[оверквотинг удален] >>> 800 байт в секунду против 57600 скорости порта не ровня >> Может стоить понизить до 2400 иль 1200 хотя бы. > Попробую. Я всегда считал что бОльшгая скорость охватит в любом случае полосу > пропускания и гарантировано не потеряет пакеты ... а выходит что не > так что ли ?Обратно-то тоже летят данные и команды, atmega может просто "захлёбываться".
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, ACCA, 06:35 , 13-Дек-12 (8)
> С этой стороны, как я понял, впаянный в чипсет иль рядом UART > 16550A, с другой стороны кто?Не факт. Может оказаться какая-то самопальная железяка, а то и очень б/у хня на i386 с 8250, что и создаёт проблему.
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, Alex_S, 03:45 , 13-Дек-12 (7)
>> терять кучу пакетов. > если это аллегория на тему "недостаточно скорости работы порта" то 800 байт > в секунду против 57600 скорости порта не ровня. Игры с параметрами > icanon и vmin и vtime не привели к результату.чем читаешь и как определяешь, что пакеты теряются ? low_latency регулировал ?
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, Andrey Mitrofanov, 09:30 , 13-Дек-12 (9)
> low_latency регулировал ?...или приоритет читающей программы поднять?
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, greenetc, 11:51 , 13-Дек-12 (10)
>>> терять кучу пакетов. >> если это аллегория на тему "недостаточно скорости работы порта" то 800 байт >> в секунду против 57600 скорости порта не ровня. Игры с параметрами >> icanon и vmin и vtime не привели к результату. > чем читаешь и как определяешь, что пакеты теряются ?Читаю в потоке. pthread_create(&idle, &attr, &idleThread, 0); ... ... ... extern "C" void *idleThread(void *me). { for (;;) { struct timeval timeout = { 0 }; fd_set con; FD_ZERO(&con); FD_SET(0, &con); FD_SET(fd_io, &con); int result = select(MAX(fd_io+1), &con, 0, 0, &timeout); if ( result ) { if (FD_ISSET(fd_io, &con)). { unsigned char data[8]; int d = read(fd_io, &data[0], 8); if ( data[0] == 83 ) { if ( data[1] == 75 ) printf("%.f\n", counter++); } } } } } Когда скорость поступления данных в порт приемлимая вижу на экране равномерный вывод нарастающий, когда скорость растет сразу вижу заикания вывода.
> low_latency регулировал ? не сталкивался как то с параметром таким. Как его регулировать ?
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, pavlinux, 00:47 , 14-Дек-12 (13)
>> чем читаешь и как определяешь, что пакеты теряются ? > Читаю в потоке. > pthread_create(&idle, &attr, &idleThread, 0); > ...А программную модель работы отлаживал, без прибора, через пайп/фифо иль для полного кайфа по нуль-модему? > for (;;) { > printf("%.f\n", counter++); > } counter++ не переполняется? Если counter глобальная, где мутексы иль спинлоки?
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, Alex_S_reg, 03:34 , 19-Дек-12 (15)
>>>> терять кучу пакетов. > if > (FD_ISSET(fd_io, &con)). > { > > unsigned char data[8]; > int d = read(fd_io, &data[0], 8); > if ( data[0] == 83 ) > > кароче ... "Почему четыре?" .. в смысле - почему 8 байт ? там еще может быть, выгребай до конца, пока read() не вернет ощибку. да и результат read() в любом случае полезно проверять . успехов !
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, greenetc, 12:43 , 13-Дек-12 (11)
>>> терять кучу пакетов. >> если это аллегория на тему "недостаточно скорости работы порта" то 800 байт >> в секунду против 57600 скорости порта не ровня. Игры с параметрами >> icanon и vmin и vtime не привели к результату. > чем читаешь и как определяешь, что пакеты теряются ? > low_latency регулировал ?просто включал setserial /dev/ttyS0 low_latency никакого эфекта не заметил
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, pavlinux, 00:40 , 14-Дек-12 (12)
>> low_latency регулировал ? > просто включал > setserial /dev/ttyS0 low_latency > никакого эфекта не заметил struct sched_param prm; prm.sched_priority = sched_get_priority_max(SCHED_FIFO); pthread_setschedparam(pthread_self(), SCHED_FIFO, &prm); for (;;) { struct timeval timeout = { 0 }; fd_set con; ... } # chrt -p -f 99 `pgrep "[irq]/4"` иль как-то так...
- Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек, greenetc, 13:57 , 14-Дек-12 (14)
>[оверквотинг удален] > struct sched_param prm; > prm.sched_priority = sched_get_priority_max(SCHED_FIFO); > pthread_setschedparam(pthread_self(), SCHED_FIFO, &prm); > for (;;) { > struct timeval timeout = > { 0 }; > fd_set con; > ... > } > # chrt -p -f 99 `pgrep "[irq]/4"` иль как-то так...ммм ... не подумал над приоритетом .. стояло так struct sched_param pamparam; param.sched_priority = sched_get_priority_min(SCHED_FIFO); pthread_attr_setschedparam(&attr, &pamparam); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_t idle; if (pthread_create(&idle, &attr, &idleThread, 0) != 0) { pthread_attr_setschedpolicy(&attr, SCHED_OTHER); param.sched_priority = 0; pthread_attr_setschedparam(&attr, &pamparam); pthread_create(&idle, &attr, &idleThread, 0); } pthread_attr_destroy(&attr); попробую sched_get_priority_max
|