Autoconfig

Autoconfig — механизм автоматического (без необходимости установки джамперов) распределения аппаратных ресурсов для устройств расширения компьютера Amiga. Много позже, эта возможность была реализована и на других платформах (Amiga 500 с поддержкой Autoconfig появилась в 1987 г., а первая версия шины PCI появляется в 1992 г.), поддержка протокола на уровне ОС получила название Plug and Play.

В момент включения компьютера, AmigaOS последовательно опрашивает каждое подключённое устройство и выделяет ему диапазон адресов в адресном пространстве памяти компьютера. В случаях, когда устройством оказывается карта расширения памяти, AmigaOS присоединяет новую доступную память к уже существующей в системе. Также, Autoconfig поддерживает загрузку из ПЗУ.

Протокол

Каждый слот расширения (а значит, и каждая карта, устанавливаемая в него) снабжена двумя сигналами: /CFGIN и /CFGOUT (символ «/» означает, что используется инверсная логика и активным уровнем сигнала является логический нуль).

Если линия /CFGOUT слота неактивна, то считается, что карта, установленная в этот слот, не настроена.

Линии /CFGIN всех слотов расширения (кроме линии /CFGIN первого слота) подтянуты к неактивному уровню. Таким образом, после включения питания считается, что все карты расширения не настроены.

Если вход карты /CFGIN активен, в выход /CFGOUT не активен, то карта «откликается» на обращения к участку памяти начинающемуся с адреса $E80000 (или $FF000000 для шины Zorro III) (своего рода аналог конфигурационного пространства на шине PCI). Иначе говоря, состояние, при котором вход карты /CFGIN активен, а выход /CFGOUT не активен, соответствует режиму конфигурации.

Конфигурация устройства начинается с установки линии /CFGIN в активное состояние. Далее, производятся необходимые действия по конфигурации (чтение информации о карте расширения и настройка адресов). После завершения конфигурации карте даётся указание установить /CFGOUT в активное состояние (указание установить /CFGOUT в активное состояние даётся и в том случае, если не удаётся полностью настроить устройство и ОС хочет прекратить настройку текущей карты и перейти к настройке следующей).

Сигналы /CFGIN и /CFGOUT слотов расширения соединены в цепочку: /CFGOUT первого слота соединяется с /CFGIN второго, /CFGOUT второго с /CFGIN третьего и т. д. Линия /CFGIN первого слота и /CFGOUT последнего подключаются к системному контроллеру. Таким образом, после конфигурации последней карты расширения системный контроллер будет оповещён о том, что не осталось карт расширения, требующих конфигурации. Такой подход имеет преимущество: отсутствует ограничение на количество карт, участвующих в конфигурации. Однако, если цепочка оказывается разорванной (например, в один из слотов не установлена карта расширения), то процесс конфигурации зависает (системный контроллер не может дождаться установки линии /CFGOUT последнего слота расширения в активное состояние). Решением проблемы стала установка микросхемы 74LS32 (четыре двухвходовых элемента ИЛИ) и подтяжка линий /CFGOUT всех слотов расширения к активному уровню. Эта микросхема стала единственным аппаратным обеспечением необходимым для корректной работы Autoconfig.

Сравнение с PCI

Несмотря на то, что по сравнению с PCI, реализация протокола Autoconfig более проста, он обеспечивает те же самые функции автоматического конфигурирования устройств. Шина PCI осуществляет произвольный доступ к конфигурируемым устройствам (в Autoconfig — последовательный), и как следствие программная модель механизма конфигурации становится сложнее, а также появляется ограничение на количество устройств (более подробно см. описание конфигурационного цикла type0 шины PCI).

Хотя реализация Autoconfig проще, а количество подключаемых устройств не ограничено, Autoconfig имеет недостаток: устройства могут быть сконфигурированы только последовательно и только один раз (до перезагрузки компьютера).

Подпишитесь на свежую email рассылку сайта!

Читайте также