МЕТОДИКА ПРОСМОТРА СТАРТОВОЙ ПОСЛЕДОВАТЕЛЬНОСТИ СИСТЕМНЫХ ПЛАТ (SOCKET 7).

для раздела Блоги
Лирическое вступление.
Владельцы многоканальных логических анализаторов – это написано не для вас! Также прошу гуру, шаманов и профессионалов не обижаться на автора данной статьи за подробное изложение, вам всё это давно и хорошо известно. Автор о таком способе диагностики ЭВМ узнал в конце 80-х в одном славном российском городе от своей первой и самой лучшей преподавательницы цифровой электроники. Материал, возможно, будет интересен тем, кто ковыряет электронику для собственного удовольствия, ну и в качестве факультатива для желающих глубже уяснить приемы работы с осциллографом.

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


2. Цель.
Просмотр стартовой последовательности обращения к микросхеме (далее – м/сх) BIOS может применяться для диагностики компьютерных системных плат (далее МВ - MotherBoard) в тех случаях, когда не выполняется POST-процедура. Данная методика применима к платформе SOCKET 7 и, с некоторыми оговорками, к любой другой, где применяется м/сх BIOS с параллельным интерфейсом. В принципе, аналогичный просмотр возможен и для м/сх с последовательным интерфейсом, но сложность вспомогательного оборудования для этого значительно возрастает.

3. Возможности.
Просмотр стартовой последовательности позволяет оценить исправность цепей, ответственных за холодный RESET и обращение к м/сх BIOS, правильность её адресации (ЮМ или мультик, в зависимости от конкретного чипсета, а также, косвенно, иногда можно сделать кое-какие выводы относительно северного моста ), исправность шины данных (ISA), исправность м/сх BIOS, и, наконец, работоспособность самого процессора.

4. Оборудование и материалы.
Документация на чипсет, SuperIO, м/сх BIOS, шины ISA, PCI. Отдельно взятый блок питания (БП) соответствующего типа, MB-объект исследования, осциллограф (и умение с ним работать) и 2 входных шнура для него: один обычный (с напаянным на остриё коротким отрезком провода МГТФ), другой - высокоомный с делителем 1:10; далее мультитестер, паяльник, припой, канифоль, бокорезы, пинцет, тонкий монтажный провод, донор (трупик системной платы) на разбор или детали по схеме Рис.1, аккуратность, терпение, отсутствие дрожи в руках . Очень желательна возможность перешивки/прочтения м/сх BIOS. Нужен также исправный компьютер для возможности сравнить прошивку с реально выставляющимися на шину данных сигналами. Особые требования к осциллографу:

а) полоса пропускания (для SOCKET 7 и шины ISA) не менее 25 МГц и качественный канал синхронизации;

б) значительный запас по яркости;

в) желательно (но не обязательно) наличие двойной развертки (не путать с двумя каналами усиления по Y или двумя лучами, хотя два луча как раз приветствуются). Двойная развертка (за бугром её называют, если не ошибаюсь, «Лупой времени») позволяет растянуть и подсветить(!) произвольный участок осциллограммы, границы которого можно задать. Это могут аппараты Hi-End, наподобие Тектроникса. Либо можно просто растянуть осциллограмму, начиная с выбранной точки – это умеют серьёзные агрегаты советского производства. Что-то типа С1-79 или С1-99 будет более чем превосходным выбором.
Совет от Apple aka Alex, конференция http://forum.rom.by: Материнку (объект исследования) изначально лучше ставить на столик из корпусной рамки, на высоких стойках (свинченных из стандартных).


5. Теория (тезисно).
Здесь и далее знак "#" (решетка) отмечает сигналы с активным НИЗКИМ уровнем, если этого знака в названии сигнала нет - такой сигнал активен ВЫСОКИМ уровнем. В первый момент после включения процессор заблокирован постоянно активным сигналом "CPURST" из-за низкого уровня сигнала "PowerGood" (см. Рис.1. Цепи, относящиеся к системной плате, обведены рамкой). После установления питающих напряжений БП переводит сигнал "PowerGood" в высокий (активный) уровень. Если не нажата кнопка "RESET", то через время, необходимое для заряда конденсатора С1 (через R3), плюс минимум 2 мс (миллисекунды), южный мост переведет сигнал "CPURST" в пассивное состояние, что запустит процессор.

Процессор выставит адрес FFFFFFF0h с активным сигналом чтения памяти. Южный мост переведет этот адрес в F000FFF0h и выставит его на шину ISA, попутно сгенерировав пассивный сигнал WE# (разрешение записи) и активные сигналы обращения к м/сх BIOS CS#(CE#) и/или OE#. В каком-то смысле сигналы CS# (выбор кристалла, другое его название - CE# (разрешение кристалла)) и OE# (разрешение выхода) выполняют одинаковые функции, поэтому в некоторых платах используется только один из них, а другой постоянно заземлен. Заземленный вывод вызванивается тестером, а оставшийся будет использоваться далее для синхронизации осциллографа.

Сходным образом указанная последовательность выполняется и при нажатии кнопки "RESET". Отличие состоит в том, что перед нажатием кнопки сигнал "CPURST" ещё не активен и процессор не заблокирован.

Таким образом, если создать извне повторяющееся имитирование нажатия кнопки "RESET" и синхронизировать запуск развертки осциллографа с одним из названных сигналов, можно определить адреса и данные на м/сх BIOS (или, для данной платформы, на шине ISA).

6. Описание схемы.



Дополнительная схема приведена на рис.1 (за пределами системной платы) и состоит из задающего генератора (DD1.1, С4, R5), усилителя/инвертора (DD1:2) и ключа на транзисторе с открытым коллектором (ОК) VT1, R6.

Ключ выполняет функции кнопки, генератор - функции пальца . В силу ряда причин автор обошелся приведенной схемой, хотя в идеале задающий генератор надо было бы делать на таймере 555 (аналог - 1006ВИ1). Схемы генераторов с регулируемой скважностью или с раздельно регулируемыми длительностями импульса и паузы являются типовыми, они могут быть в datasheet на таймер, наверняка есть они и в Интернете. Пример такой схемы с необходимыми комментариями приведен в конце статьи в п.10. Если он кого не устроит - Google Вам в помощь.

Конденсатор С4 и резистор R5 задают частоту генератора. Звездочка в обозначении этих элементов означает, что номинал, возможно, придется подбирать опытным путем. Пределы выбора R5 - не менее 1 К (чтобы не перегрузить выход DD1.1) и не более 10 К (чтобы не ловить наводки и помехи). Ёмкость конденсатора С4 (его желательно составить из двух параллельно соединенных - керамического 0,1...1,0 мк и электролитического нужной (см. п.8 ) емкости).

Блокирующий конденсатор С3 лучше напаять прямо на выводы питания м/сх DD1. Питание дополнительной схемы (+5 V) можно взять с исследуемой платы (с любого блокирующего электролитического конденсатора в этой цепи), а можно и от любого свободного разъёма БП (флоппи, к примеру). В последнем случае лучше параллельно С3 подпаять электролитический конденсатор 10...100 мк. Чем меньше помех придет на задающий генератор, тем стабильнее будет фаза его колебаний и тем меньше будет размываться сигнал на экране осциллографа.

Транзистор VT1 - любой биполярный маломощный кремниевый высокочастотный структуры n-p-n. Автор использовал какой-то SMD c донора. При подключении ключа к плате следует соблюдать полярность (эмиттер обязан быть на "общем проводе").

7. Работа схемы.


Обратимся к рис.2. Здесь приведены 4 осциллограммы (масштаб НЕ соблюден!). Вверху - напряжение на выходе DD1.2, ниже - напряжение на С1, под ним - сигнал сброса процессора CPURST, внизу – сигнал выборки/разрешения м/сх BIOS. В течение времени t1-t2 высокий уровень на выходе DD1/2 держит открытым ключ VT1, что соответствует нажатию на кнопку "RESET". В момент t2 ключ закрывается и конденсатор С1 начинает заряжаться, но сигнал CPURST продолжает оставаться активным до момента t4, когда ЮМ снимает этот сигнал. t3 - это момент, когда напряжение на С1 превысило порог срабатывания входной логики ЮМ. Защитный интервал t3-t4 вырабатывается ЮМ и не может быть короче 2 мс.

Самое интересное начинается с момента t4: запускается процессор и обращается к BIOS ROM. Интервал t4-t5 - это время "реакции" ЮМ на это обращение. На каждое такое обращение ЮМ генерирует 8 циклов обращения к ПЗУ, т.к. шина данных процессоров SOCKET 7 64-разрядная, т.е. 8 байт х 8 бит = 64, причем четко видны пачки по 4 обращения - данные от шины ISA проходят через PCI, а она 32-разрядная, т.е. 4 байта х 8 бит = 32.
На нижней осциллограмме циклы обращения к ПЗУ пронумерованы цифрами от 0 до 7. Несмотря на то, что эти цифры написаны вверху, активный уровень этих сигналов НИЗКИЙ, о чём говорит уже упомянутая «решетка» в названиях.

8. Подбор С4.
Наша цель - установить такую частоту генерации, чтобы после запуска процессор успел поработать несколько десятков миллисекунд (успев обратиться к BIOS) и снова ушел на сброс, а это зависит от параметров времязадающей цепи на самой МВ (R3C1 по условной схеме на рис.1).

Если частота генерации будет слишком высока, конденсатор С1 никогда не сможет зарядиться до порога срабатывания входной логики южного моста и он (ЮМ) никогда не снимет сигнал CPURST, блокирующий процессор. Поэтому подбираем так:

а) Впаиваем в приспособление С4 = 10 мк, включаем питание и проверяем осциллографом на выходе DD1.2 работоспособность устройства без подключения к МВ. Есть сигнал прямоугольной формы - продолжаем.

б) Включаем МВ без всего (без нашего приспособления, без ОЗУ, без BIOSа, без процессора), но с литиевой батарейкой и с подключенной кнопкой сброса. Контролируем при этом напряжение в гнезде AK20 сокета процессора (нога "RESET"). Если после включения там постоянно около 2...3 Вольт - продолжать бессмысленно, сначала надо обеспечить работоспособность цепи сброса. Если же там около нуля Вольт, и при нажатии кнопки "RESET" напряжение возрастает примерно до 3 В, то выключаем БП и продолжаем.

в) Подключаем наше приспособление к МВ и к БП. На осциллографе вход внешней синхронизации пока не используем, работаем в режиме внутренней синхронизации.

Подключаем щуп осциллографа к упомянутому контакту АК20, включаем БП и контролируем наличие перехода сигнала CPURST в ноль. При наличии такового можно повторить попытку с уменьшенной наполовину емкостью С4. Если же перехода в ноль не наблюдается - емкость придется увеличивать (для начала - раза в два, а когда достигнете, как выражаются в кино артиллеристы, "перелета", надо уменьшить С4, но уже на вполовину меньшую величину, чем перед этим добавляли).

Таким вот методом последовательных приближений и ведется настройка. Не следует бросаться в крайность и стремиться к кратчайшему интервалу между стартом процессора и последующим сбросом - у электролитических конденсаторов очень велик ТКЕ (температурный коэффициент ёмкости), надо оставить некоторый запас. Также для данной схемы не рекомендуется использовать в качестве R5 переменный резистор - из-за непостоянства его сопротивления наблюдение может стать невозможным.

9. Подготовка завершена. Наконец-то приступаем к исследованиям.
а) Переводим осциллограф в режим внешней синхронизации. Подключаем к разъему внешней синхронизации обычный шнур с проводком - см. п.4, свободный конец проводка припаиваем с нижней стороны МВ к контакту АК20 Socket7. Тщательно изолируем место соединения проводка с ЩУПОМ шнура, а также другие оголенные металлические части щупа, дабы чего-нибудь не закоротить в дальнейшем. Земляной провод щупа соединяем, понятное дело, с общим проводом МВ. На сигнальный вход осциллографа подключаем шнур с делителем.

б) Если приспособление ещё не подсоединено к МВ - делаем это (подсоединяем).

в) Устанавливаем м/сх BIOS и процессор (предполагается, что вы уже проверили исправность подсистемы питания процессора и работоспособность клокера).

г) Проверяем отсутствие грубых ошибок в подсоединениях и напильников/пинцетов/винтов/припоя/т.п. на столе ПОД МВ.

д) Включаем БП.

е) Синхронизируем осциллограф по спаду сигнала CPURST и подключаем щуп к одному из выводов м/сх BIOS (НЕЗАЗЕМЛЕННОМУ - см.п.5) - CS#(CE#) или OE#. Добиваемся устойчивой картинки. Т.к. запуск развертки будет происходить относительно редко, а скорость развертки придется установить высокой (1,0...0,5 мкс/дел), скорее всего даже при максимальной яркости луча придется принимать дополнительные меры - например, использовать тубус.

ж) Органами управления осциллографа добиваемся, чтобы каждый из первых четырех спадов (0...3 по рис.2) совпадал с одной из вертикальных линий масштабной сетки на экране осциллографа, как на рис.3 (здесь уже номера обращений к ПЗУ размещены непосредственно над низким уровнем сигнала). Обратите внимание, что на рис.3 изображен сигнал обращения к ПЗУ (выбор кристалла), а на рис.4 – состояние ОДНОГО из сигналов ШИНЫ ДАННЫХ (ШД) или ШИНЫ АДРЕСА (ША).



з) Не трогая органов управления осциллографа, переставляем щуп на контакт D0 шины данных и должны увидеть картинку, похожую на рис.4. Для того мы и выравнивали спады с вертикальными линиями разметки, чтобы безошибочно считывать уровни. В приведенном на рис.4 примере видно, что в циклах 0 и 3, несмотря на то, что обращение к ПЗУ есть, сигнал ШИНЫ ДАННЫХ в ноль не переключился. Это означает, что этот бит D0 (номер бита зависит от того, на какую ножку ПЗУ вы подключили щуп осциллографа) в байтах номер 0 и 3 равен ЕДИНИЦЕ. Применяя те же рассуждения, видим, что этот же бит в байтах 1 и 2 равен НУЛЮ. Для проверки адресации нужно аналогичным образом просмотреть сигналы ША, для чего, не трогая органов управления осциллографа, переставляем щуп на адресные контакты ПЗУ.

Примечание - на двухлучевом осциллографе, разумеется, можно наблюдать оба этих сигнала (и сигнал обращения к ПЗУ, и сигнал ШД/ША) одновременно, и считывать не по 4 бита, а сразу все 8 бит.


Учитывая, что на время действия низкого уровня сигнала(ов) CS#(CE#) и/или OE# на шине адреса ДОЛЖЕН присутствовать конкретный адрес читаемой ячейки ПЗУ BIOS, а на шине данных ДОЛЖНО появиться содержимое этой ячейки (точнее - см. дейташит на м/сх BIOS), мы видим состояние конкретного разряда (бит 0) в первых четырех следующих подряд байтах В0...В3, считываемых в обращениях 0...3 (рис.2). Впишем их (0 - низкий уровень или 1 - высокий уровень) в СТРОКУ заранее подготовленной таблицы следующего вида (в первой строке для примера уже введены данные, считанные с осциллограммы на рис.4):
!биты:! B0 ! B1 ! B2 ! B3 ! B4 ! B5 ! B6 ! B7 !

!бит 0!__1_!__0_!__0_!__1_!__0_!__0_!__1_!__1_!
!бит 1!____!____!____!____!____!____!____!____!
!бит 2!____!____!____!____!____!____!____!____!
!бит 3!____!____!____!____!____!____!____!____!
!бит 4!____!____!____!____!____!____!____!____!
!бит 5!____!____!____!____!____!____!____!____!
!бит 6!____!____!____!____!____!____!____!____!
!бит 7!____!____!____!____!____!____!____!____!
!А0___!____!____!____!____!____!____!____!____!
!А1___!____!____!____!____!____!____!____!____!
!А2___!____!____!____!____!____!____!____!____!
!А3___!____!____!____!____!____!____!____!____!
!А4___!____!____!____!____!____!____!____!____!
!А5___!____!____!____!____!____!____!____!____!
!А6___!____!____!____!____!____!____!____!____!
!А7___!____!____!____!____!____!____!____!____!
!А8___!____!____!____!____!____!____!____!____!
!А9___!____!____!____!____!____!____!____!____!
!А10__!____!____!____!____!____!____!____!____!
!А11__!____!____!____!____!____!____!____!____!
!А12__!____!____!____!____!____!____!____!____!
!А13__!____!____!____!____!____!____!____!____!
!А14__!____!____!____!____!____!____!____!____!
!А15__!____!____!____!____!____!____!____!____!
!А16__!____!____!____!____!____!____!____!____!
!А17__!____!____!____!____!____!____!____!____!

Здесь В0...В7 означают байты 0...7, соответствующие обращениям 0...7 на рис.2. Биты 0...7 - разряды одного байта, прочитанные на соответствующих выводах шины данных D0...D7 при конкретном одном из обращений (0...7 на рис.2). Т.е. получается, что байты (и их адреса А0...А17) расположены в таблице ВЕРТИКАЛЬНО, младший бит вверху.


и) Ничего не меняя, переставляем щуп на все выводы, перечисленные в таблице, и заполняем в ней первые 4 столбца.

к) Повторяем п.п. е)...и) для следующих 4-х обращений (4...7 по рис.2). Если позволяют возможности осциллографа (двойная развертка!) и нашего приспособления (стабильность фазы!), таким способом можно прочитать и несколько последующих обращений к ПЗУ BIOS.

л) Всё

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

10. Схема на таймере 555 с регулируемой скважностью.

а) Собственно схема приведена на рис.5.

Рис.5.

б) Краткое описАние схемы: благодаря диодам VD1 и VD2 цепи заряда (+5V->RP1->R1->VD1->C1 ->GND) и разряда (С1->VD2->RP2->R2->DA1/7н->GND) времязадающего конденсатора С1 разделены. Длительность заряда (т.е. длительность НИЗКОГО уровня на выходе схемы) регулируется переменным резистором RP1, а длительность разряда (т.е. длительность ВЫСОКОГО уровня на выходе схемы) регулируется RP2. Резистор R3 защищает выходной каскад микросхемы DA1, ограничивая ток максимально допустимым значением 100 мА. VD3 защищает МВ, у которой цепь сброса подключена не к 5 В, а к 3,3 В, от замыкания +5 В на +3,3 В, а также препятствует форсированному заряду конденсатора сброса на МВ (С1 на рис.1) от выхода DA1. Оба эти элемента (R3 и VD3) установлены для «подстраховки» от ошибочного подключения, если вы всё вызвонили и подключили правильно – можно обойтись без них (кроме случая питания цепи сброса на МВ от +3,3 В – тут VD3 необходим).

в) О деталях: DA1 – таймер типа 555 любой фирмы (российский аналог – КР1006ВИ1). С1 – с минимальным ТКЕ (хотя при макетировании был использован электролитический алюминиевый 2,2 мкФ 63 В – и ничего, нормально работает. Но! Перед впаиванием автор его выбрал мультиметром в режиме измерения ёмкости по наименьшему уходу показаний при нагреве от комнатной температуры до 35 град. в руках.). С2 и С4 – любые керамические (автор использовал SMD с трупика). С3 – любой электролит. Постоянные резисторы использованы SMD с трупика – автору они представляются более стабильными. Диоды – любые кремниевые маломощные высокочастотные, например – КД521 или КД522. Главное и основное внимание – качеству и «безшумности» переменных резисторов RP1 и RP2, т.к. именно от этого будет зависеть комфорт при работе. Автор настоятельно рекомендует импорт с линейной зависимостью сопротивления от угла поворота. Автор использовал триммеры под отвертку с какой-то древней японской платы - и не ошибся. RP2 по расчетам должно быть на 10...15 Ком, но такого найти не удалось – поставил что было. У кого есть – ставьте 10 Ком – регулировка станет ещё плавнее.

г) Подключение и работа: GND на общий провод материнки, +5 В – на +5 В материнки/БП, OUT_1 или OUT_2 – на контакт для кнопки сброса (вместо коллектора VT1 по рис.1). Перед первым включением поставить оба регулятора в среднее положение. Выполнить пункты 9а...9д. Далее установить щуп осциллографа на CPURST и синхронизироваться. Плавно уменьшать сопротивление RP2 до появления на CPURST постоянного высокого уровня и чуть повернуть в обратную сторону до появления устойчивой картинки. Следом плавно уменьшать сопротивление RP1 до срыва синхронизации и чуть повернуть в обратную стороны до появления устойчивой картинки. Для примера – у автора на плате с i439HX и K6-2 300 Mhz (использовался OUT_2) оптимальный просмотр получался при длительности высокого уровня 20 мс и длительности низкого уровня 25 мс. Далее переходим к выполнению пунктов 9е...9л.

Желаю удачи!

(c) Ter_Abit, 28.04.2005.
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают