Как определить номера портов для периферийных устройств? - PullRequest
3 голосов
/ 25 апреля 2010

Я знаю, что периферийные устройства, такие как жесткий диск, дисковод гибких дисков и т. Д., Управляются чтением / записью определенных управляющих регистров на контроллерах их устройств.

Меня интересуют следующие вопросы:

  • Правда ли, что когда эти периферийные устройства подключены к компьютеру, адреса (номера портов) их регистров управления, таким образом, определяются тем, как они подключены к адресной шине (т. Е. аппаратное подключение * 1007). * правила, а не какие-нибудь мягкие вещи )?
  • Кто составляет схему назначения номера порта?
  • Если бы мне дали голый компьютер (без операционной системы и со многими периферийными устройствами), как я мог выяснить назначение номеров портов, чтобы я мог использовать их для управления периферийными устройствами.

Наконец-то и как обычно, спасибо за ваше терпение и ответ. 8 ^)

Ответы [ 2 ]

3 голосов
/ 25 апреля 2010

Для «голого компьютера», который является относительно новым ПК-совместимым компьютером, вы можете найти ответы на некоторые вопросы в описании Обычный PCI :

В типичной системе встроенное ПО (или операционная система) запрашивает все шины PCI во время запуска (через пространство конфигурации PCI), чтобы выяснить, какие устройства присутствуют и какие системные ресурсы (пространство памяти, пространство ввода-вывода, линии прерывания) и т. д.) каждый нуждается. Затем он распределяет ресурсы и сообщает каждому устройству, каково его распределение.

Пространство конфигурации PCI также содержит небольшое количество информации о типе устройства, что помогает операционной системе выбирать драйверы устройств для нее или, по крайней мере, вести диалог с пользователем о конфигурации системы.

...

Наконец, Пространство конфигурации PCI обеспечивает доступ к 256 байтам специальных регистров конфигурации на устройство PCI. Каждый слот PCI получает свой собственный диапазон адресов пространства конфигурации. Регистры используются для настройки памяти устройств и диапазонов адресов ввода / вывода, на которые они должны реагировать от инициаторов транзакций. При первом включении компьютера все PCI-устройства реагируют только на доступ к их конфигурационному пространству. BIOS компьютера ищет устройства и назначает им диапазоны адресов памяти и ввода / вывода.

Как только вы устанавливаете адрес (а) ввода / вывода для устройства, фактические коды команд сильно зависят от устройства. Надеемся, что некоторые производители предоставляют соответствующую документацию онлайн.

0 голосов
/ 25 апреля 2010

Я бы предположил, что номера портов ввода / вывода в основном определяются (или назначаются) чипсетом материнской платы. Кроме того, я бы предположил, что в исходной архитектуре IBM PC использовалось специальное назначение, которое было принято другими производителями для обеспечения совместимости с IBM PC.

AFAIK, не все устройства используют фиксированные номера портов ввода / вывода. Это особенно верно, поскольку более современные шины (начиная, например, с PCI) позволяют реконфигурировать диапазон портов, который использует конкретное устройство. Возможно, вам придется изучить технологию P'n'P, чтобы узнать больше об этом.

AFAIK, фиксированные номера портов ввода / вывода в основном используются для стандартных (устаревших) компонентов, таких как контроллеры жестких дисков и жестких дисков ATA (IDE), клавиатура PS / 2 и т. Д. Я могу представить, что в современных системах эти номера портов используются только для обратной совместимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...