NMI на мат.платах с nForce2

Решение проблем с материнскими платами на базе чипсетов nForce, драйверами и программным обеспечением для чипсетов nForce

Модератор: i8085

Ответить
K.A.D

NMI на мат.платах с nForce2

Сообщение K.A.D » 18.09.2004 17:12

Creative SB16 Emulation драйвер для DOS, Win9x/Me ни в какую не хочет работать на мамке с nForce2 (Biostar M7NCD Pro nForce2 Ultra 400, южный мост nForce2 MCP). Звуковая карта - SB Live! 5.1.
Наиболее вероятная причина описана здесь:

http://ru.europe.creative.com/support/f ... ?thre=4280

Legacy emulation under DOS Creative/Ensoniq cards will not work on systems that . .

a) do not route the PCI SERR# signal to the processor NMI
b) have a capacitor between SERR# and ground or between NMI and ground that is too large.

Some background is required here. The Creative/Ensoniq PCI cards use the PCI SERR# signal to indicate that someone has accessed a Legacy device register (i.e., Sound Blaster, MPU-401, ). This SERR# signal must generate a processor NMI before the I/O instruction completes so that the Legacy emulation software can perform proper emulation of the trapped I/O event before the processor executes the subsequent instructions.

In the event that the SERR# signal is not connected to the NMI input, the software is never notified and cannot perform any Legacy device emulation.

In the event that there is a capacitor on the line that is too large, the NMI does not propagate to the processor in time to emulate the I/O before the next processor instruction(s) execute(s). If the I/O event is emulated too late, it may have an adverse effect on the system as it may change the state of processor register al at a time when the processor is not expecting it.

Возможно, что причина неработы креативовского эмулятора не в каких либо особенностях южного моста nForce2, а том, что производители мамок просто отключают в биосе поддержку Legacy-устройств.
Я проверил разводку на своей материнке - вроде сигнал PCI SERR# и вход NMI процессора соединены с южным мостом, но NMI почему-то не активируется и эмулятор не знает, что DOS-программы пытаются обращаться к регистрам SB16. Соединил NMI и PCI SERR# напрямую - Win98SE запускается и работает, а виснет только драйвер эмуляции SB16 - значит, сигнал PCI SERR# есть.
Остается только правильно коммутировать PCI SERR# через южный мост. Поискал datasheet на nForce2 MCP - ничего не нашел. В биосе явных настроек, включающих NMI, нет. Поддержки RAM Parity Check официально тоже вроде нет (а это из той же оперы).
Значит, нужно подправить биос. Может у кого есть какая-нибудь инфа по этому вопросу ? Где покопаться в биосе ? Может достаточно подправить какие-то регистры чипсета ? Вообще, по nForce2 есть какая-нибудь более подробная тех.документация, кроме всяких пропускных способностей и т.п. ?

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 18.09.2004 19:50

В чипсетах nForce вообще никогда не было шины ISA. Соответственно, ISA/LPC контроллера в южном мосте нет. И просто нет возможности предоставлять legacy ресурсы PCI устройствам.

K.A.D

Сообщение K.A.D » 18.09.2004 22:30

DrEvil
А как насчет сигнала PCI SERR# ? Ведь для чего-то он прицеплен к южному мосту. И вход NMI тоже прицеплен. В традиционных системах PCI SERR# обычно всегда вызывал немаскируемое прерывание, если только это прерывание не вырубили косвенным путем, т.к. простым запрещением прерываний (через флажок процессора) его вроде не отключить. И кстати, на сайте Креатива не писали, что эмуляция каким-то макаром привязана к ISA.
Проблема эта, между прочим, давняя - тогда и nForce в помине не было, а не работала эмуляция на мамках с чипсетом ALi, что было потом исправлено в биосе производителем тех мамок. Сейчас почему-то на большинстве мамок с nForce2 такая же ерунда - лепят все наверное одинаково, примерно по одной схеме.
Если у кого мамка с nForce2 и звук.карточка серии SB Live!, Audigy и при этом работает эмуляция SB16 под DOS и Win9x/Me, пожалуйста, напишите, что за мамка и какой биос.

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 19.09.2004 0:02

Я так думаю, что все NMI, SERR тут абсолютно не причем. Просто нет еще чего-нибудь. Например, поддержки ISA DMA каналов для PCI шины. И не думаю, что это из-за BIOS.

K.A.D

Сообщение K.A.D » 19.09.2004 19:54

DrEvil
То есть это только предположение, а точной информации по работе южного моста и коммутации этих сигналов у вас нет ?
Насколько я понимаю, никакие ISA DMA каналы PCI-устройству не нужны. А обращения к регистрам SB16 отлавливает сама SB Live!, сообщая об этом через SERR#. Всю остальную обработку выполняет эмулятор.
Еще раз повторю - внешние симптомы указывают на то, что именно нет активации NMI. Если бы на стадии инициализации были бы какие-то проблемы, эмулятор бы поругался. Но ругаются только программы (sbego.exe - Is SB Emulation Enabled ?), пытающиеся обнаружить SB16, который должен быть сэмулирован. А эмулятор молчит, потому что нет прерываний и он не знает, что программа пытается обратиться к регистрам SB16.

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 21.09.2004 19:10

K.A.D
даташита на чипсет не существует в природе. Производители получают плату-образец, электрическую схему и исходники BIOS, еще пару мануалов по программированию (описание регистров и т.п.)
А обращения к регистрам SB16 отлавливает сама SB Live!, сообщая об этом через SERR#
До самой платы никакие запросы приложения не доходят. Потому как у нее нет этих регистров, DMA каналов, I/O адресов. Эмулятор вешает в память резидент-траппер, который перехватывает обращения к определенным адресам памяти и портам I/O. Потом за счет ресурсов CPU эмулятор преобразует поток от программы в формат, понятный DSP карты, и отсылает его уже по адресам самой платы. NMI нужно для того, чтобы дать эмулятору время на эту работу, иначе ему не достанется достаточно процессорного времени. Для этого и подается сигнал SERR - только для появления NMI. Сам перехват NMI не требует, во всяком случае драйверы известного устройства Covox делали в прошлом это без NMI. Думаю, что эмулятору просто не удается перехватывать обращения приложения. Наверное, для этого перехвата нужно особое программирование контроллеров, чтобы те игнорировали или перенаправляли обращения приложения. А поскольку полноценных контроллеров у nForce нет, перепрограммировать их нужным эмулятору образом не удается.

К слову, то, что там, приведено для старых карт Vibra128/Ensoniq 1373. Для них еще нужна была поддержка чипсетом D-DMA. Поищите у них по форуму на этот счет. DDMA nForce не поддерживают.

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 21.09.2004 19:27

Кстати, прочтите статью http://www.ixbt.com/multimedia/sblive-dos.shtml . Там есть ссылки на обновленные драйверы для DOS. А кроме того, там описана структура файла настроек DOS драйвера. Особое внимание обратите на PCIPort= и PCIIRQ= . Возможно, что с момента установки драйвера с компакт-диска у карты поменялись адрес и прерывание. Тогда их надо посмотреть в диспетчере устройств и отредактировать файл.

K.A.D

Сообщение K.A.D » 22.09.2004 18:38

DrEvil
Под документацией на чипсет я подразумевал хотя бы распиновку микросхемы с описанием сигналов. Например, ведь есть же такая тех.документация на Athlon XP на сайте AMD. у nVidia нет ничего.

Относительно отлова обращений к регистрам SB16 я всего лишь цитировал то, что было написано модератором тех.форума Creative.

Вопрос: a i815EP, SiS746 поддерживают D-DMA ? На них эмулятор работает 100% (если вообще дело в чипсете).

По поводу статьи на ixbt.com. Давно уже эта статья прочитана и все проверено. А с настройкой этого эмулятора я был знаком очень хорошо и до прочтения статьи. Тем более, что все проверки проводятся под гольным DOS'ом (тот, что от Win98SE и, естественно, не под сессией Windows).
Если эмулятор не работает под DOS, то драйвер под Win9x/Me также не работает.

>Сам перехват NMI не требует, во всяком случае
>драйверы известного устройства Covox делали в
>прошлом это без NMI.

Ну речь-то все-таки о серии SB Live!, а не Covox.

>NMI нужно для того, чтобы дать эмулятору время
>на эту работу, иначе ему не достанется >достаточно
>процессорного времени. Для этого и подается
сигнал SERR - только для появления NMI.

Так значит NMI все-таки нужно для корректной работы ? А вот появляется NMI или нет - это уже другой вопрос.

У вас-то, кстати, какая установлена звуковая карта ? И мат.плата на nForce2 ?
Потому как весь этот разговор носит пока чисто теоретический характер. А хотелось бы практических изысков по поводу работы эмулятора на мат.платах с nForce2. Мои изыски успехом до сих пор не увенчались.
Сейчас хотя бы знать, что является причиной отказа эмулятора - конкретные модели мат.плат или чипсет nForce2. Пока только встречал сведения, что на мат.платах с nForce2 фирм ASUS, Epox, Biostar эмулятор работать не желает.

K.A.D

Сообщение K.A.D » 22.09.2004 19:25

DrEvil
Ваше предположение насчет DDMA скорее всего верно. Если nForce2 действительно не поддерживает DDMA и если он нужен для работы эмуляции, тогда остается только посочувствовать любителям старых DOS игр, имеющим такие мат.платы :(

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 23.09.2004 0:07

У вас-то, кстати, какая установлена звуковая карта
Система в профиле. Эмуляция работает, ну так и DDMA i81X серией поддерживается.
хотя бы распиновку микросхемы с описанием сигналов
PCI-SERR сигнал, как мне удалось узнать, на южный мост приходит. К процессору с северного моста контакт для NMI идет. Другое дело, что PCI-SERR - это не сигнал NMI. Т.е. чипсет, получив SERR, должен выдать инструкцию процессору на NMI. Делает он это или нет - загадка. В конференции iXBT есть человек с ником nvigor, он работает в NVIDIA. Попробуйте к нему обратиться в частном порядке по вопросу SERR/NMI

думаю, про VirtualPC, DOSBOX, VDM Sound вам известно, ройте в эту сторону. Я вот VirtualPC 2004 пользую, не фонтан скорость, но звук есть.

K.A.D

Сообщение K.A.D » 23.09.2004 9:16

DrEvil
Спасибо за информацию, попробую связаться с nvigor :)
Эмуляторы вроде VirtualPC, DosBox, к сожалению, не тянут SVGA-графику, да и звук там только 8-бит. VDMSound тоже имеет свои огрехи - обычно, если игра не может корректно работать под WinXP, то от эмулятора, естественно, толку тоже нет.
Про то, что PCI SERR и вход NMI процессора подсоединены к южному мосту, я написал в самом начале. Я предполагал, что чипсет таки не хочет выдавать инструкцию процессору на NMI, а управляется чипсет через настройки BIOS, которые недоступны в обычном меню и которые наверное можно подправить через modbin. Но какие это могут быть настройки, к сожалению, мне неизвестно.
Что ж, буду трясти работника nVidia.

DrEvil
Администратор Judge Dredd
Сообщения: 17062
Зарегистрирован: 17.01.2003 11:52
Контактная информация:

Сообщение DrEvil » 23.09.2004 15:48

K.A.D
У меня тянет VPC SVGA, хотя только на 640х480 хватает. Вот VMVare тянет и 800х600. Правда насчет качества эмуляции звука ничего не скажу, колонки не позволяют. Хотя в Duke3D 16-бит микширование выставлял и работало..

K.A.D

Сообщение K.A.D » 27.09.2004 17:03

DrEvil
Мне удалось связаться с nvigor'ем, но, к сожалению, по его словам, вся подробная тех.информация по nForce2 является закрытой. Единственное, что он смог сообщил, это то, что в чипсете есть регистры, управляющие сигналами SERR# и PERR#, все остальное - секрет компании.

Ответить