Хм, кажется сам разобрался откуда растут ноги.
Попробую описать все это так, как я понимаю.
Возможно кому-то другому, попавшему в мою ситуацию, не прийдется ломать себе голову.
Итак, идея заключается в использовании для диагностики bootblok'a системного BIOS. Бутблок это такой маленький кусочек биосной флэшки, к которому система при старте обращается в первую очередь. То есть, если мы напишем какую-то собственную программу на ассэмблере и запихнем её в этот бутблок, то она начнет выполнятся, при условии что процессор вообще завелся.
В данном случае командой MOV eax, 55AA00FFh мы помещаем шестнадцатиричное число 55AA00FF в регистр eax процессора, поддершивающего архитектуру х86.
Далее, командой MOV dx, 110h мы помещаем в регистр dx число 110h, это адрес определенного порта ввода-вывода.
Теперь, при выполнении команды OUT dx, eax произойдет запись значения регистра eax в порт 110h. То есть в этот порт попадет число 55AA00FFh.
Следующими двумя строчками кода мы делаем то же самое, только уже для порта 114h.
Далее, необходимо проверить, правильно ли вывелось наше число 55AA00FF.
В идеале для этого нужна специальная пост карта PCI, которая будет выводить значения из соответствующих портов. Причем не какая-нибудь пост-карта, а специально "заточенная" под наши манипуляции (обычные пост-карты считывают только значения порта 80h).
Но если такой пост-карты у нас нет, можно попробовать считать значения вручную. Для этого нужно хорошо понимать какие адресные ноги PCI отображают состояние того или иного порта. Я например, все еще в этом не разобрался. Но если провести аналогию с портом 80h, тогда, предположительно, процедура будет следующей:
Берем тестер и проверяем напряжения на всех адресных ногах слота PCI. Если какое-то напряжение есть, это логическая 1, если его нету - логический 0. Записываем на бумажку номера портов и напротив каждого из них значения 0 или 1.
Значение ног Address 0 - Address 31 будет показывать значение порта 110h
Значение ног Address 32 - Address 63 будет показывать значение порта 114h
Или наоборот (данный вопрос требует дополнительного изучения через какие адресные ноги какой порт передает сигнал. Я лишь показываю общий принцип).
В результате мы получим два длинных 32-битных числа в двоичном виде. Теперь их нужно перевести в шестнадцатиричный.
Для этого записываем число задом на перед (начинаем с 31 адресной ноги и заканчиваем нулевой) затем, при помощи втроенного в Windows калькулятора, переводим число в 16-ричный вид.
Преобразовав, например, число 1010101101010100000000011111111 - получим 55AA00FF. Если мы получили именно такое число на выходе порта, это будет означать, что в цепочке "процессор – северный мост – южный мост – PCI (и устройства на этой шине) – ISA (и устройства на ISA) – BIOS" все работает просто прекрасно. Если же мы получаем "симметричные искажения", значит что-то не работает. Идею симметричных искажений я сам не вполне понимаю. Если кто-то мне её пояснит - скажу спасибо. Предполагаю, что если опробовать метод на практике, из полученного числа сразу станет понятно 4 там искажения или два или одно. По количеству этих искажений, если верить автору, можно определить участок материнки, на котором что-то вышло из строя. Принцип этой косвенной зависимости для меня так же не совсем понятен. Буду признателен за объяснение. А покачто можно просто доверится автору и принять как аксиому то что, при четырех искажениях у нас сломалось что-то на участке ISA – BIOS, при двух PCI - ISA, а при одном SB - PCI (если следовать логике "продолжи последовательность"), а дальше... загадка))
Вообще, насколько я понял, авторами этой идеи, являются разработчики проекта LiteBIOS. Разработкой данного конкретного метода диагностики они занимались в 2006 году, когда их проект и скончался. И скончался он, если я все правильно понимаю, еще ДО того, как метод был доведен до ума. Другими словами, все что тут описано, на самом деле существует только в виде абстрактной идеи, которая так и не была реализована. И не факт, что это вообще осуществимо на практике!
В связи с вышеизложенным становится вообще непонятно что данный материал делает в вики.
Тем не менее, как выяснилось, участники этого проекта все же сделали много других полезных для диагностики вещей. Они разработали специальную тестовую прошивку BIOS, которая посылает на пост-карту свои собственные коды. Когда читаешь к ней документацию, начинают аж слюнки течь от того, сколько у неё всяких возможностей. К сожалению, данной прошивкой они не пожелали делится бесплатно даже после смерти проекта. Я сгуглил пальцы в кровь, но так и не нашел где можно её скачать. Эту прошивку они поставляли в комплекте со своей собственной пост картой. На их сайте можно скачать тестовую версию прошивки, эдакая демо-версия, но она по сути не делает ничего полезного. Так же вселенская грусть-печаль состоит в том, что похоже это работает только на платвормах старее 462 сокета.
Хм, кажется сам разобрался откуда растут ноги.
Попробую описать все это так, как я понимаю.
Возможно кому-то другому, попавшему в мою ситуацию, не прийдется ломать себе голову.
Итак, идея заключается в использовании для диагностики bootblok'a системного BIOS. Бутблок это такой маленький кусочек биосной флэшки, к которому система при старте обращается в первую очередь. То есть, если мы напишем какую-то собственную программу на ассэмблере и запихнем её в этот бутблок, то она начнет выполнятся, при условии что процессор вообще завелся.
В данном случае командой MOV eax, 55AA00FFh мы помещаем шестнадцатиричное число 55AA00FF в регистр eax процессора, поддершивающего архитектуру х86.
Далее, командой MOV dx, 110h мы помещаем в регистр dx число 110h, это адрес определенного порта ввода-вывода.
Теперь, при выполнении команды OUT dx, eax произойдет запись значения регистра eax в порт 110h. То есть в этот порт попадет число 55AA00FFh.
Следующими двумя строчками кода мы делаем то же самое, только уже для порта 114h.
Далее, необходимо проверить, правильно ли вывелось наше число 55AA00FF.
В идеале для этого нужна специальная пост карта PCI, которая будет выводить значения из соответствующих портов. Причем не какая-нибудь пост-карта, а специально "заточенная" под наши манипуляции (обычные пост-карты считывают только значения порта 80h).
Но если такой пост-карты у нас нет, можно попробовать считать значения вручную. Для этого нужно хорошо понимать какие адресные ноги PCI отображают состояние того или иного порта. Я например, все еще в этом не разобрался. Но если провести аналогию с портом 80h, тогда, предположительно, процедура будет следующей:
Берем тестер и проверяем напряжения на всех адресных ногах слота PCI. Если какое-то напряжение есть, это логическая 1, если его нету - логический 0. Записываем на бумажку номера портов и напротив каждого из них значения 0 или 1.
Значение ног Address 0 - Address 31 будет показывать значение порта 110h
Значение ног Address 32 - Address 63 будет показывать значение порта 114h
Или наоборот (данный вопрос требует дополнительного изучения через какие адресные ноги какой порт передает сигнал. Я лишь показываю общий принцип).
В результате мы получим два длинных 32-битных числа в двоичном виде. Теперь их нужно перевести в шестнадцатиричный.
Для этого записываем число задом на перед (начинаем с 31 адресной ноги и заканчиваем нулевой) затем, при помощи втроенного в Windows калькулятора, переводим число в 16-ричный вид.
Преобразовав, например, число 1010101101010100000000011111111 - получим 55AA00FF. Если мы получили именно такое число на выходе порта, это будет означать, что в цепочке "процессор – северный мост – южный мост – PCI (и устройства на этой шине) – ISA (и устройства на ISA) – BIOS" все работает просто прекрасно. Если же мы получаем "симметричные искажения", значит что-то не работает. Идею симметричных искажений я сам не вполне понимаю. Если кто-то мне её пояснит - скажу спасибо. Предполагаю, что если опробовать метод на практике, из полученного числа сразу станет понятно 4 там искажения или два или одно. По количеству этих искажений, если верить автору, можно определить участок материнки, на котором что-то вышло из строя. Принцип этой косвенной зависимости для меня так же не совсем понятен. Буду признателен за объяснение. А покачто можно просто доверится автору и принять как аксиому то что, при четырех искажениях у нас сломалось что-то на участке ISA – BIOS, при двух PCI - ISA, а при одном SB - PCI (если следовать логике "продолжи последовательность"), а дальше... загадка))
Вообще, насколько я понял, авторами этой идеи, являются разработчики проекта LiteBIOS. Разработкой данного конкретного метода диагностики они занимались в 2006 году, когда их проект и скончался. И скончался он, если я все правильно понимаю, еще ДО того, как метод был доведен до ума. Другими словами, все что тут описано, на самом деле существует только в виде абстрактной идеи, которая так и не была реализована. И не факт, что это вообще осуществимо на практике!
В связи с вышеизложенным становится вообще непонятно что данный материал делает в вики.
Тем не менее, как выяснилось, участники этого проекта все же сделали много других полезных для диагностики вещей. Они разработали специальную тестовую прошивку BIOS, которая посылает на пост-карту свои собственные коды. Когда читаешь к ней документацию, начинают аж слюнки течь от того, сколько у неё всяких возможностей. К сожалению, данной прошивкой они не пожелали делится бесплатно даже после смерти проекта. Я сгуглил пальцы в кровь, но так и не нашел где можно её скачать. Эту прошивку они поставляли в комплекте со своей собственной пост картой. На их сайте можно скачать тестовую версию прошивки, эдакая демо-версия, но она по сути не делает ничего полезного. Так же вселенская грусть-печаль состоит в том, что похоже это работает только на платвормах старее 462 сокета.
Обсуждение на форуме "идеи": rom.by/opros/Vashe_mnenie_o_LiteBIOS (именно отсюда, ИМХО, материал был скопипастен в википедию)
Сайт разработчиков: icbook.com.ua/
Документация к посткарте и биосу: rom.by/files/ic80.pdf
Видеообзор этого чуда: rom.by/blog/Obzor_vozmozhnostey_IC80
Один из разработчиков, похоже до сих пор обитает на нашем форуме, его ник icbook. Буду признателен если он как-то прокомментирует мой пост.