здравствуйте, мб. кто-нибудь подскажет что влияет на определение матерью pci платы. пытаюсь подключить pci устройство. idsel на нем замкнул с линией ad22 (на самом чипе поднял ногу и сделал перемычку с ad22). но он не видится платой на которой провожу экперимент. на другой плате опознается нормально. смотрю через список устройств pci шины. если idsel оставить по-умолчанию, т.е. в зависимости от слота, устройство видится нормально везде, но не работает как надо. хотелось бы узнать, что мешает опознанию устройства, м.б. какие-то регистры посмотреть?
матери обе на 865 чипе. явно что-то с инициализацией связано. может одна из них не опрашивает ad22?
Перенес в Песочницу.
maco
никто не мешает. если устройство опознано. а если мать не видит мост с idsel на ad22, то ничего не сделашь. весь вопрос в первом посте, почему мать может не видеть устройство?
Посмотрите регистр GEN_CTL в нем бит 24 = Hide ISA Bridge. Возможно BIOS так
инициализировал ICH5, чтобы устройство было отключено (ICH5 позволяет
программно отключать дешифрацию устройств и вообще жизнь коварна).
Если бит установлен, обнулите его. Но если на плате уже есть устройство,
использующее AD22 то будет конфликт.
А по ситуации когда опознается но не работает - если устройство использует
прерывание, то принудительно изменяя этому устройству адрес в
конфигурационном пространстве (переключая IDSEL) мы нарушаем работу
процедур BIOS, отвечающих за установление соответствия между устройствами
и линиями IRQ (IRQ Routing).
ну вообще надо 1 ставить в 24 бит чтобы скрыть устройство. у меня там 0 и изменение статуса никак не влияет на появление устройства в списке. на другой матери это работает без проблем. я бы тоже подумал что какой-то конфликт с другим устройством на ad22, но есть схема и эта линия свободна. она вообще редко используется, в основном как раз для таких мостов. мост сам по себе не использует прерывания, он их получает в зависимости от isa плат по serirq. другую плату на которой мост опознается пока не могу использовать из-за того что не знаю откуда брать пару req a/b gnt a/b, схемы на нее нет
Сделайте программный цикл с постоянным обращением по заданному адресу
Bus/Device/Function и посмотрите сигналы осциллографом.
Обращение лучше напрямую через порты 0CF8h/0CFCh а не PCIBIOS,
чтобы меньше вспомогательных операций и картина на осциллографе была четче.
По той же причине желательно запретить все асинхронные события, запретив
прерывания (CLI). Конечно из DOS или UEFI а не из Windows.
Про UEFI я погорячился, если плата поколения 865.
Отправить комментарий