Tarbal 4 25 ноября, 2013 Опубликовано 25 ноября, 2013 · Жалоба Долго спали? /boot/config-3.11.0-13-generic версия - по аналогии. Оба варианта годятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 25 ноября, 2013 Опубликовано 25 ноября, 2013 · Жалоба Долго спали? /boot/config-3.11.0-13-generic версия - по аналогии. Это сильно зависит от дистрибьютива. Если он туда что-то кладет - повезло. Автор ничего про это не сказал. В Генту вообще можно сделать cd /usr/src/linux cat .config Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 26 ноября, 2013 Опубликовано 26 ноября, 2013 (изменено) · Жалоба В общем вот что имеем: # cat /boot/config-2.6.24-1-686 | grep 8250 | grep UART CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 а вот в /proc/ никакого намека на config нету. Изменено 26 ноября, 2013 пользователем Hoodwin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 26 ноября, 2013 Опубликовано 26 ноября, 2013 · Жалоба --- Да, вот попробовал написать в комстроку ядра 8250.nr_uarts=8. Даже сработало. Получился такой лог: ACPI: PCI Interrupt 0000:01:0b.0[A] -> GSI 23 (level, low) -> IRQ 22 0000:01:0b.0: Probing COMB6U PCI driver for 6 ports... 0000:01:0b.0: setup port df80, irq 22, type 0 0000:01:0b.0: ttyS4 at I/O 0xdf80 (irq = 22) is a 16550A 0000:01:0b.0: setup port df88, irq 22, type 0 0000:01:0b.0: ttyS5 at I/O 0xdf88 (irq = 22) is a 16550A 0000:01:0b.0: setup port df90, irq 22, type 0 0000:01:0b.0: ttyS6 at I/O 0xdf90 (irq = 22) is a 16550A 0000:01:0b.0: setup port df98, irq 22, type 0 0000:01:0b.0: ttyS7 at I/O 0xdf98 (irq = 22) is a 16550A 0000:01:0b.0: setup port dfa0, irq 22, type 0 0000:01:0b.0: ttyS2 at I/O 0xdfa0 (irq = 22) is a 16550A 0000:01:0b.0: setup port dfa8, irq 22, type 0 0000:01:0b.0: ttyS3 at I/O 0xdfa8 (irq = 22) is a 16550A Видно, что все 6 UART-ов поднялись. Однако есть проблема с их порядком. Пока поднимались только первые два, то ttyS2 приходился на порт df80, а ttS3 - на порт df88. Теперь порядок другой, скажем прямо, не порядок. Вопрос: почему так? Регистрировал то я все это одним циклом тупо по порядку. И еще вопрос. Существует ли в природе какой-нибудь тест для стандартного UART 16550 (для linux 2.6)? Интересен тест, который бы позволил по возможности наиболее полно протестировать UART. Можно даже с неким внешним loopback'ом для 9-контактного разъема D-Sub. Есть один непонятный момент. echo 123 > /dev/ttyS2 не выводит ничего, можно хоть 100 раз подряд такое выполнить. echo 1234567890 > /dev/ttyS2 выводит все правильно. cat Makefile > /dev/ttyS2 выводит все правильно и без потерь. запуск bash </dev/ttyS2 >/dev/ttyS2 2>/dev/ttyS2 & дает совершенно нормальную консоль, эхо идет на каждый введенный символ. прямой вывод в обход драйвера - outb 0xdf80 0x21 - работает, как часы. Однако echo 123 > /dev/ttyS0 (порт на системной плате) все же работает. В общем, хочется понять в чем тут дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 26 ноября, 2013 Опубликовано 26 ноября, 2013 · Жалоба Видно, что все 6 UART-ов поднялись. Однако есть проблема с их порядком. Можно указать через setserial какой угодно http://linux.die.net/man/8/setserial И еще вопрос. Существует ли в природе какой-нибудь тест для стандартного UART 16550 ... Можно даже с неким внешним loopback'ом для 9-контактного разъема D-Sub. А что там тестировать ? http://linux.die.net/man/1/minicom Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 26 ноября, 2013 Опубликовано 26 ноября, 2013 (изменено) · Жалоба deleted by Tarbal Изменено 26 ноября, 2013 пользователем Tarbal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 26 ноября, 2013 Опубликовано 26 ноября, 2013 · Жалоба sasamy Ну, вот раньше в CheckIT были тесты ком-портов, которые проверяли правильность работы UART-а. Например: 1) Правильность логики установки статусов внешних сигналов 2) Правильность работы механизмов RTS-CTS 3) правильность работы флагов прерываний на передачу, прием данных и таймаут приема, 4) Правильную работу регистров MSR, LSR. 5) Правильную работу контроля четности. 6) Отсутствие пропадания прерываний при скоростном обмене. 7) Точность бодового генератора. Короче говоря, интересен некий формальный тест, выдающий на выходе да или нет. И если нет, то какая именно проверка не прошла. Причем не нужно много кнопок давить, запустил программу с именем терминала и все, тест пошел. К сожалению, я не смог найти внятного описания как правильно работать с FIFO в через драйвер 8250. Точнее, как управлять его настройками. Судя по коду, драйвер сам принимает решение об использовании FIFO, исходя из типа UART. Ну например, для стандртного UART 16550A выбирается FIFO threasholds 8 и все. Ни разу не видел, как через stty это скорректировать. И даже просто как посмотреть, то что есть по факту, не особо описано. В QNX и то куда более внятно было расписано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 26 ноября, 2013 Опубликовано 26 ноября, 2013 (изменено) · Жалоба Ну, вот раньше в CheckIT были тесты ком-портов, которые проверяли правильность работы UART-а. Например: Таких тестов скорей всего не найдете - если только у производителей многопортовых плат на сайтах рыть 7) Точность бодового генератора. и типа можно верить этим измерениям ? лучше измерить осцилом - посылать в порт число 0x55 и смотреть частоту. драйвер сам принимает решение об использовании FIFO, исходя из типа UART. зачем пользовательским программам управлять размерами аппаратного FIFO - чтобы отключить, указываете тип уарта без FIFO (16450) в setserial. Изменено 26 ноября, 2013 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 27 ноября, 2013 Опубликовано 27 ноября, 2013 · Жалоба Таких тестов скорей всего не найдете - если только у производителей многопортовых плат на сайтах рыть Жаль, я думал, в линуксе подобные вещи есть. и типа можно верить этим измерениям ? лучше измерить осцилом - посылать в порт число 0x55 и смотреть частоту. Не вижу принципиальной разницы, чем мерить. Точность и стабильность бодового генератора не зависят от делителя, поэтому для измерений можно взять скорость ну хоть 9600. Но зато на такой скорости можно обеспечить выдачу подряд большого количества байт без зазоров, и измерив время передачи можно вполне точно измерить время одного бода. Осциллограф сам по себе довольно неточно меряет частоту, даже для периодического сигнала типа тактовой частоты он может выдавать значения с разбросом около 1%, если не больше. зачем пользовательским программам управлять размерами аппаратного FIFO - чтобы отключить, указываете тип уарта без FIFO (16450) в setserial. Ну вот, например, у нас был один проект, где протокол был так устроен, что передавались посылки по два байта, с периодом в 20-30 байтовых интервалов. В протоколе не было никаких признаков первого байта, за исключением того, что он первый после паузы. И вот когда сели делать через /dev/ser* (дело было под QNX), то выяснилось, что никак нельзя гарантировать синхронизацию по первым байтам. Тогда включили FIFO с порогом 4, и стали ловить прерывания по таймауту данных. С помощью этого прерывания синхронизацию удалось восстановить. Таким образом, аппаратные особенности UART вполне могут играть ключевую роль при программировании решения. Конечно, можно сказать, что берите и пишите для такого случая специальный драйвер. Можно было бы согласиться, однако в случае многопортового устройства появляется нюанс. Как поределить какой порт к какому драйверу приписывать. Обычно все порты автотматически цепляются каким-то одним драйвером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 28 ноября, 2013 Опубликовано 28 ноября, 2013 · Жалоба Как поределить какой порт к какому драйверу приписывать. Обычно все порты автотматически цепляются каким-то одним драйвером. Драйвер будет один, но устройства разные. Драйвер всегда знает с каким устройством он работает в данный момент. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться