Страница 1 из 1

Проблемы в драйвере с распределением I/O: Serial(auto)

Добавлено: 20 авг 2004, 15:54
lightport
Здравствуйте.

В драйвере com порта я использую безопасное распределение I/O портов.

С помощю check_region(...) проверяю порты 2F8 - 2FF, а в коде возврата
получаю: порты заняты.

Командой cat /proc/ioports получаю что:
2F8 - 2FF serial(auto)
3F8 - 3FF serial (auto)

Это система порты при инициализации выделяет?
Как мне их сделать свободными, чтобы я их мог безопасно распределить?

Помогите пожалуйста.

Добавлено: 20 авг 2004, 16:12
michael
А разве это не означает, что у тебя уже загружен модуль serial (или, может быть, он встроен в ядро), который и занимает эти порты?

Добавлено: 20 авг 2004, 16:27
Llama
lightport, возможно я ошибаюсь, диапазоны портов для RS-232 адаптеров стандартны. И особого смысла их менять я не вижу. С трудом понимаю, зачем писать драйвер com-порта? Это что, своя аппаратная реализация UART? По теме перераспределения адресов и прерываний наверное стоит смотреть код в ядре, отвечающий за работу с многопортовыми адаптерами.

Добавлено: 20 авг 2004, 18:02
lightport
Дело в том, что мне нужно управлять COM портами на уровне ядра.

А можно подключить мой драйвер к стандартному драйверу COM порта?
Если да, то как это делаеть?

Я плохо понимаю почему моему модулю нельзя выделить I/O порты COM
портов.

Добавлено: 20 авг 2004, 19:48
Llama
lightport, я очень плохо понимаю, зачем тебе управлять портом на уровне ядра. Опиши задачу. Выставление параметров порта делается через setserial или (ИМХО) через вызовы ядра из userspace. Зачем тебе делать ту работу, котору за тебя уже сделали? Да, ты можешь не использовать стандартный драйвер, а на основе его сделать или с нуля свой. Только зачем?
PS: По варезникам ходит книга Linux Device Drivers (вроде так называлвсь).

Добавлено: 20 авг 2004, 21:35
lightport
Мне необходимо синхронизировать работу и управлять несколькими устройствами находящимися на значительном расстоянии друг от друга.
В этом случае привязка начала передачи синхрослова в канал должна
быть не хуже чем 1 микросекунда.
Поэтому необходима прямая работа с портами из драйвера.