Подробно суть проблемы:
Есть некое внешнее устройство, постоянно выдающее в линию поток байт на скорости 9600 без управления потоком и контроля четности. Принимается все это октагоном 5558.
ПО принимает поток не сигнализируя об ошибках, но в потоке байт встречаются лишние в случайном порядке вклиненные данные.
Если поток проредить (вставить паузы между байтами) проблема исчезает.
С линией связи проблем быть не должно, т.к. если принимать на COM, который находится на процессорной плате, то прием идет нормально.
Есть оч серьезные подозрения на неработающие FIFO.
Вот в архивах находил похожую проблему. http://forum.cta.ru/forum_posts.asp?TID=1670&KW=octagon
Что имеем:
hardware:
Fastwel CPC108 + Octagon 5558 на ISA. На octagon'е 2 quad UART ST16C554.
software:
ОС Linux базе дебиановского дистрибутива с ядром 2.6.24, пропатченным всем что было выдано мне фаствелом.
В качестве драйвера используется обычный линуксовый "Driver for 8250/16550-type serial ports". В нем включены irq shared и увелично кол-во инициализируемых портов. Сначала я выставлял настройки портов (irq и port) с помощью setserial, потом просто пропатчил драйвер 8250_exar_st16c554, чтобы он выставлял нужные мне irq и port.
В связи с вышесказанным собственно вопрос: был ли у кого-то опыт применения этой платы ( Octagon 5558 ) в Linux?
Best regards, Mike.
Через прософт связялся с октагоном. Там сказали, что опыта применения этой платы под Линукс не было (типа давно она разрабатывалась, тогда и Линукса в помине не было). В связи с этим ищу плату rs портов (штуки 4 должно быть) такого же формата. Существуют такие в природе?
Best regards, Mike.
Octagon 5558 занимает одно, максимум два прерывания, схемотехнически она состоит из двух Octagon 5554 плат, порты обрабатываються последовательно, собственно потому что одно прерывание. Со слейвовыми устройствами у меня особых заморочек не было в общем то. Но особого смысла в применении этой платы я не увидел, так как в моем случае раша разработчики позиционировали её именно как средство распаралеливания потоков опроса. Стандартные драйвера подходят однозначно для нее. Вот принимать на одно прерывание в четыре дырки или даже в восем она могет и неуспевать ИМХО...
Для меня использование этой платы - уже окончательный факт (я модернизирую ПО для готовой железяки).
Стандартные драйвера ни в каком варианте для меня полностью не подошли: при приеме единичных байт с интервалами все работало нормально, а при постоянной передаче - ошибки.
Насчет "одно прерываение в 4 дырки" - чтобы успевал, есть FIFO, которое собсно у меня похоже и не работает...
Best regards, Mike.
На счет использования как данность я понял, это нормально, со специалистами вообще в последнее время редко кто считается. Я не буду утверждать, но на сколько я помню на самой плате буфера нет, следовательно FIFO это одна из функций драйвера и организуется он в системной памяти, следовательно на приеме поточных неуправляемых данных он вам никак не поможет в принципе. Он поможет сохранить уже успешно полученные данные. Если перебор портов по прерываниям соизмерим или меньше со временем стробирования (тайм-аутов) портов по записи то возможно вы будите принимать данные без потерь, в противном случае не представляю как это может быть возможно.
FIFO там есть однозначно. Плата построена на 2х таких штуках:
ST16C554 - Quad UART with 16-Byte FIFOs - Exar (если интересно http://www.diamondsystems.com/files/binaries/st16554.pdf ).
Вобщем как оказалось... Из драйвера 8250 ядра 2.6 почему-то исчезла поддержка "мультипортовости". Следовательно драйвер не работает с регистром состояния всей платы... Вобщем ковыряние в навороченных драйверах 8250 меня достало... Сижу потихоньку осваиваю написание tty драйверов под linux... Запомните меня счастливым
Best regards, Mike.
Да дефствительно , что ж да здравствует мануальная терапия
Так же интересуюсь вопросом поддержки 5558 под linux.
Сам только начал разбираться, и хотелось бы узнать получилось ли что у Вас?
----------------
Все заработало нормально. Просто были непонятки со стоповыми битами (внешняя железяка работает с 1,5 стоповых бита), но в результате прием пошел нормально с 2. Возможно проблемы этой железяке. С обычными параметрами плата работает без проблем. Есть правда подозрение, что не работает fifo, но мне пока это не мешает, проц вроде успевает все забирать из платы.
С драйвером я поступил просто: пропатчил 8250_exar_st16c554, выставив там порты и прерывания. Все успешно работает. Если интересно - завтра с работы выложу патч, там ничего сложного.
Best regards, Mike.
Очень интересно. Я Вам в личку письмо послал, будет время чирканите. Или по мылу: tech [sobaka] kronaltd.spb.ru .
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме