Suprious 8259A interrupt, oaealex, 22-Июн-07, 07:40 [смотреть все]Есть select на чтение из последовательного порта. После "срабатывания" select - происходит чтение даных. Все боле или менее нормально, но иногда возникает сообщения Suprious 8259A interrupt: IRQ7 После этого как правило недосчитываешся нескольких байт во входном потоке.Ктонибудь решал такие проблеммы ? Скорость - 115200, используется RTS/CTS Мое открытие порта: bool CSerial::Open() { if (IsOpen) return true ; if (!Valid) { errmsg("CSerial::Open() - !Valid") ; return false ; } Fd=open(DevName,O_RDWR | O_NOCTTY ) ; if (Fd<0) return errmsgerrno("CSerial::Open() - Ошибка открытия устройства %s",DevName) ; tcgetattr(Fd,&OldTerm) ; memset(&Term,0,sizeof(Term)) ; //Term=OldTerm ; cfsetospeed(&Term,BaudRate) ; cfsetispeed(&Term,BaudRate) ; Term.c_cc[VMIN]=1 ; Term.c_cflag&=~CSIZE ; Term.c_cflag |= (UseLineControl ? CRTSCTS : 0) | (Parity ? PARENB : 0) | (Parity == 1 ? PARODD : 0) | (Bits == 5 ? CS5 : Bits==6 ? CS6 : Bits==7 ? CS7 : Bits==8 ? CS8 : CS8) | (StopBits == 2 ? CSTOPB : 0) | CREAD | CLOCAL ; if (tcsetattr(Fd,TCSANOW,&Term)!=0) return errmsg("CSerial::Open() - Ошибка tcsetattr устройства '%s' - %s",DevName,strerror(errno)) ; IsOpen=true ; return true ; } С уважением Алексей. |
- Suprious 8259A interrupt, NuINu, 11:16 , 22-Июн-07 (1)
>Есть select на чтение из последовательного порта. После "срабатывания" select - происходит >чтение даных. Все боле или менее нормально, но иногда возникает сообщения >Suprious 8259A interrupt: IRQ7 >После этого как правило недосчитываешся нескольких байт во входном потоке. > я таких проблем не решал но решил, поискать в ядре кто может выдать вот такое сообщение нашел похожее в /arch/i386/kernel/i8259.c там про это можно много интересного почитать, только слово там совсем другое: spurious - ложное ;-)
- Suprious 8259A interrupt, oaealex, 10:13 , 25-Июн-07 (2)
>нашел похожее в /arch/i386/kernel/i8259.c >там про это можно много интересного почитать, только После исправления опечатки и поиска в инете, ясно, что причиной является прерывание, источник которого небыл определен ядром - импульс прерывания был слишком короток. Лечат в осонвом посредством запрещения неиспользуемых устройств и новыми драйверами. Но что делать конкретно в моем случае - не понятно.>слово там совсем другое: spurious - ложное ;-) Виноват, промахнулся :)
- Suprious 8259A interrupt, NuINu, 10:58 , 25-Июн-07 (3)
>>нашел похожее в /arch/i386/kernel/i8259.c >>там про это можно много интересного почитать, только >После исправления опечатки и поиска в инете, ясно, что причиной является прерывание, >источник которого небыл определен ядром - импульс прерывания был слишком короток. > >Лечат в осонвом посредством запрещения неиспользуемых устройств и новыми драйверами. >Но что делать конкретно в моем случае - не понятно. > Думаю надо добавлять избыточное кодирование и изменять протокол. ошибки при передаче это скорее правило а не исключение. >>слово там совсем другое: spurious - ложное ;-) >Виноват, промахнулся :) Бывает. я так английского не знаю, всегда пытаюсь перевести по словарю, вообще думал сюрприз :-) сначала.
|