|
Драйвер для 6 UART на PCI шине, как быстрее поднять? |
|
|
|
Nov 21 2013, 21:43
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Имеется плата PCI, где на ПЛИС сделаны 6 UART с драйверами RS-232. Написана PCI функция, которая управляет шестью UART 16550A, тоже самописными. Все это более менее проверялось раньше по отдельности, но теперь вот есть желание запустить порты из-под линукс. Особенность платы в том, что она позволяет делать резервирование RS-232, то есть кроме самого UART 16550 каждый порт имеет логику, которая управляет выключением микросхемы соответствующего драйвера RS-232. Эта логика имеет определенные настройки, которые определяют правила отключения драйвера в зависимости от состояния внешних сигналов.
Все UART представляют собой стандартные 8 регистров, которые расширены нулями до 32-битных слов и размещены в одном BAR по смежным адресам.
Собственно интересует наиболее простой путь подружить линукс со всеми 6 портами. Пока представляются следующие способы: 1) Писать с нуля PCI драйвер ос своими PID, VID. 2) Подсмотреть готовые конфигурации UART в исходниках драйверов линукс, и изменить PID, VID своего устройства в соответствии с подходящим профилем из поддержаных. 3) Написать свой минидрайвер, который будет находить устройство на шине PCI и регистрировать его UART'ы как serial8250 platfrom_device. После чего его и линукс сам подхватит.
Если делать свой драйвер (модуль), то можно в нем зарегистрировать атрибуты портов, чтобы можно было настраивать правила его резервирования. Не уверен, можно ли это сделать, если пытаться подстроиться под существующий драйвер для шины PCI.
|
|
|
|
|
 |
Ответов
|
Nov 24 2013, 19:47
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Да, в итоге действительно потратил полтора часа времени на изучение 8250_pci.c и написал модуль по мотивам оного. К сожалению, сам 8250_pci не подошел, так как в нем нет есть всего одна шестипортовая комбинация, а эвристика мультипортового устройства не цепляла мое устройство. Править стандартный 8250_pci не стал, так как 1) для этого потребуется все ядро пересобирать, что нежелательно; 2) требуется зарегистрировать дополнительные атрибуты устройства, позволяющие управлять внешним драйвером сигналов. В итоге устройство поднялось и даже вчерне работает. Есть вопрос по поводу количества uart в драйвере 8250. Мой модуль регистрирует 6 портов, но регистрируются только первые два. В принципе это ожидаемо, если в ядре CONFIG_SERIAL_8250_RUNTIME_UARTS и CONFIG_SERIAL_8250_NR_UARTS слишком малы. Так вот: 1) можно ли как-то подсмотреть, с какими настройками собрано текущее ядро? 2) Можно ли как-то увеличить количество уартов без пересборки ядра? Нашел в сети, что можно в комстроке ядра писать 8250.nr_uarts=8, но вот тут http://forums.opensuse.org/english/get-tec...4-detected.html пишут, что это не помогло, и в итоге люди уродовались с пересборкой модуля UART.
|
|
|
|
Сообщений в этой теме
Hoodwin Драйвер для 6 UART на PCI шине Nov 21 2013, 21:43 Tarbal Вот посмотрите:
http://www.sealevel.com/support/ar... Nov 22 2013, 01:09 Hoodwin Посмотрел. Пока ничего путного не вынес из докумен... Nov 22 2013, 06:55 Tarbal Но первый-то вариант без сборки кернела.
там вооб... Nov 22 2013, 12:33 federal жаль мне заказчика Nov 22 2013, 15:09 xor.kruger Естественно Вам придется писать свой драйвер, т.к.... Nov 22 2013, 15:59 Hoodwin Да драйвер-то написать можно, есть и свои драйверы... Nov 22 2013, 17:06 xor.kruger ЦитатаЯ надеялся, что линукс сам может определить ... Nov 22 2013, 18:57 Hoodwin Дык на ПЛИС я как раз могу довольно просто передел... Nov 22 2013, 19:07 gerber Цитата(Hoodwin @ Nov 22 2013, 22:07) Дык ... Nov 24 2013, 07:36 Methane Цитата(Hoodwin @ Nov 21 2013, 23:43) 1) П... Nov 23 2013, 16:56 Tarbal lspci показывает ваше устройство?
Если да
lspci -... Nov 23 2013, 23:53  Methane Цитата(Dron_Gus @ Nov 25 2013, 14:08) cat... Nov 25 2013, 12:20   Tarbal Цитата(Methane @ Nov 25 2013, 15:20) Долг... Nov 25 2013, 12:47   Dron_Gus Цитата(Methane @ Nov 25 2013, 16:20) Долг... Nov 25 2013, 12:51 Hoodwin В общем вот что имеем:
Цитата# cat /boot/config-2.... Nov 26 2013, 07:18 Hoodwin ---
Да, вот попробовал написать в комстроку ядра 8... Nov 26 2013, 08:35 sasamy Цитата(Hoodwin @ Nov 26 2013, 12:35) Видн... Nov 26 2013, 13:09  Tarbal deleted by Tarbal Nov 26 2013, 13:18 Hoodwin sasamy
Ну, вот раньше в CheckIT были тесты ком-по... Nov 26 2013, 15:56 sasamy Цитата(Hoodwin @ Nov 26 2013, 19:56) Ну, ... Nov 26 2013, 20:02  Hoodwin Цитата(sasamy @ Nov 27 2013, 00:02) Таких... Nov 27 2013, 20:27   Tarbal Цитата(Hoodwin @ Nov 28 2013, 00:27) Как ... Nov 28 2013, 02:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|