Самодельная пост карта. Получение POST кодов в ноутбуках по двухпроводной шине

Приветствую, дорогие хабровчане!

Не первый год занимаюсь диагностикой и реанимацией десктопов и ноутбуков, преимущественно на дому у клиента. Со временем напрашивается вывод, что с собой необходимо иметь чемодан, а возможно, даже чемоданище с комплектующими для диагностики неисправной железки. Некоторые могут мне возразить - «Можно обходиться и без комплектующих! Опыт позволяет выполнять диагностику и без них!». Это отчасти верно, но стопроцентной точности не дает, это как факт.

Опираться на POST коды спикера? Не всегда можно конкретно определить на что же он ругается. Например, один длинный два коротких сигнала спикера сигнализируют о неисправности видеосистемы, но это не всегда означает неисправность самой видеокарты. Встречаются, например, проблемы с доп. питанием на эту самую видеокарту, а это уже неисправность блока питания.

Здесь я остановлюсь и расскажу уважаемым читателям, что же такое сигналы спикера.

При включении компьютера запускается BIOS (базовая система ввода/вывода) - факт известный всем, но упомянуть будет не лишним. В составе BIOS"а есть программа под названием POST (power on self testing). Как следует из названия, программа предназначена для начальной диагностики устройств и портов материнской платы.

Процедура инициализации POST сопровождается выводом изображения на монитор:

После прохождения POST видим:

В процессе выполнения POST генерирует так называемый POST код, который записывается в специальный диагностический регистр.

Собственно, сигналы спикера являются кодами ошибок при выполнении POST, если POST выполняется без ошибок, мы слышим один короткий сигнал.

Переходим к сабжу.

POST карты.

POST карта - это плата расширения, чаще всего встречаются карты формата PCI:

Так же есть карты формата miniPCI (для ноутбуков):

И встречаются карты для LPT (требуют дополнительного питания по USB):

Имея на руках десктоп с замечательным диагнозом «не включается» (не путать с «не заводится»), чаще всего сначала последовательно отключается некритичная периферия - звуковуха, тюнер, сетевуха, харды, приводы.
Затем, если в процессе не выявлены неисправности, начинается замена комплектующих: оперативки, видеокарты, процессора (ага тот самый чемоданище с железками).

Но вот у нас есть в руках вместо чемодана с железом POST карта, мы экономя время минуем вышеописанную процедуру с заменой/отключением железа (экономим в среднем минут 40, замечу, что после отключения одной железки производится как минимум один цикл включения - выключения).

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

Сопоставив код ошибки с его расшифровкой, чаще всего получаем конечный диагноз, как то: неисправная память, процессор или же компонент на материнской плате.

Предполагаю написать серию статей по диагностике, если тема интересна хабровчанам.

Мне понадобился качественный интерфейс для CNC станка.
Сразу скажу что параллельный порт меня не устраивает. потому как качество его реализации сомнительное, контактов мало (всего 16 I/O, не помню сколько I и сколько O) и максимальная частота работы до 50 кгЦ, с сомнительными показателями по интерференции, крутизне фронтов, задержек, и т.д.
Для интерфейса с 6-осным станком, понадобится 24 дифференциальные пары контактов (6 диффпар на сигналы DIR, 6 диффпар на сигналы PULSE).
Кроме того я предусмотрел 12 цифровых TTL выхода (до 50ма) и 12 опто-изолированных цифровых входа общего назначения.
И того все это добро еле уместилось в SCSI коннектор 50 pin, который мне очень нравится.


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

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

Начнем с самого сложного, с шины PCI. Осложняется все тем, что спецификация закрытая, в интернете информации не много, но есть способ обойти буржуев.
Многие производители FPGA имеют и комплект стандартных реализаций различных интерфейсов за доп. плату (которую вменяемые люди конечно-же платить не будут), называется это все IP Core (Xilinx у других может отличаться, но идея таже)
что это такое? ну это вроде библиотеки для линковки кода.
IP Core может поставляться в виде непосредственно кода (Verilog ili VHDL) либо в виде специального закрытого нэтлиста (что-то вроде EDIF, но зашифрован, у каждого вендора свой формат и позволяет линковать их только используя их средства разработки)
Спасибо умельцам, которые четко взломали пакет Xilinx ISE 10.1, что позволяет получить доступ ко всем IP Core абсолютно бесплатно и на уровне исходного кода (что самое полезное для обучения)
Раздачу каждый может найти сам на известном торрент трекере.

Далее, есть сайт fpga4fun.com где рассказывается максимально сжато о всех особенностях FPGA и нет смысля дублировать эту информацию тут. Сайт рассказывает о FPGA двух лидеров на рынке: Xylinx и Altera.
Также вам потребуется изучить Verilog, но если вы уже программировали на каком-то языке, то это не составит большего труда.

Какой чип выбрать??
Я остановился на Xylinx Spartan xxx
Тут есть несколько подводных камней.
1) Совместимость с шиной PCI32 5V
2) Количество выходов которые можно коммутировать одновременно (называется SSO simultaneously switching outputs)
3) Тип корпуса: BGA или PQ (BGA сложнее паять, потребуется печь, либо хороший фен и удача)
4) Встроенный flash либо вынесенный в отдельный чип?
5) Максимальное время загрузки до получения первых сигналов с PCI

Совместимость с шиной PCI32 5V

Это наверное самое ответственное из всего. Вам предстоит сделать выбор, использовать ли вам чипы конвертации уровней сигналов всех I/O шины (около 50) и использовать современный FPGA (1.25V, 2.5V, 3.3V no 5V tolerant).
Либо использовать старый FPGA.
Для своего проекта я сделал выбор в пользу старого FPGA (Spartan II) и пока еще не пожалел.
Следует отметить, что использование чипов конвертации уровней вносит дополнительные сложности в проблему с SSO, потому как
такие чипы генерируют Overshotы и Undershotы напряжения и могут приводить к ошибкам.
Проблема SSO, питания и максимального времени загрузки FPGA для PCI32 3.3V:
http://www.xilinx.com/support/documentation/application_notes/xapp457.pdf
Наилучшее подключение Bus Switch для совместимости с 5V PCI (что является стандартом для домашних ПК):
http://www.xilinx.com/support/documentation/application_notes/xapp646.pdf
Проблему с overshot и undershot тут решают сместив уровень земли для чипов конвертера уровней.
Следует отметить особенно, что для увеличения числа SSO (также называется Ground bounce) применяют шунтирующий резистор в цели питания чипа, задавая ток "холостого хода" 50mA (резистор 34 ом, для питания 3.3V)
Такой резистор, либо низкоомную обратную связь для LDO я видел во ВСЕХ pci платах схемы которых мне удалось достать.

Количество выходов которые можно коммутировать одновременно (называется SSO: simultaneously switching outputs)

У каждого чипа и типа корпуса этот параметр разный и приводится в даташите.
Например в моем случае с типом корпуса PQ208 и моделью Spartan II для стандарта PCI разрешается использовать до 4х SSO на группу питания, которых всего 16 в устройстве (по две на банк, которых 8-мь)

Далее я взял константы которые поставлялись с IP Core PCI (версия 3.199) (*.ucf файл User Constants file)
И оказалось что они распределили все сигналы PCI на 4 банка (получается 32 SSO сигнала разрешено, в то время как для шины pci требуется порядка 40 сигналов у которых крутые фронты):
http://www.xilinx.com/support/documentation/application_notes/xapp457.pdf
AD CBE PAR IRDY#, FRAME# REQ#
Кроме того банки заполнены неравномерно, что так-же нарушает Допустимый SSО.
С другой стороны IP Core прошла тестирование в такой конфигурации и я побоялся менять тут что-то.
рискуя не вложиться в тайминги PCI шины, из за особенностей внутренней архитектуры FPGA.
Поэтому я предпринял дополнительные усилия для увеличения SSO. Я поставил шунт (120 ом) нa выход каждого регулятора напряжения питания, хорошие байпас конденсаторы, многослойную печатную плату с отдельным слоем для земли и т.д.
Также следует думать тут об удобном расположении выводов для трассировки печатной платы!

Тип корпуса: BGA или PQ

Я выбрал PQ208, BGA имеет большее преимущество (вдвое выше SSO), но есть риск не запаять в домашних условиях, еще может быть закорочен какой-либо контакт из за смещения чипа, что опасно для вашей материнской платы!.

Встроенный flash либо вынесенный в отдельный чип? и Максимальное время загрузки до получения первых сигналов с PCI

Тут я первый раз пожалел что связался со старой линейкой чипов а не выбрал новую Spartan 3AN (со встроены флешем)
Оказалось что для каждой модели Spartan II есть свой чип программируемый через JTAG.
Он оказался довольно дорогим, и чувствуется что его скоро перестанут продавать.
XC18V01 (1 мегабайт флеша в моем случае)
Как его подключить к FPGA Spartan II, есть в даташите.
Возможно либо серийный интерфейс либо параллельный, под управлением внутреннего такта FPGA либо внешнего!, я выбрал серийный под управлением FPGA, т.е. сигнал кола генерирует сам FPGA и после окончания загрузки переходит в рабочий режим.
Частота загрузки конфигурации 66Мгц, для PCI32 5V это достаточно чтобы уложиться в 1.1 секунду (PCI32 5V 32Mhz) для загрузки полной конфигурации. однако в моем проекте будет использоваться лишь небольшая часть конфигурационного пространства.

Ну вот вроде и все, скоро выложу печатную плату и схему, в следующей части.
Потом будет софт и наша PCI карта готова.

Приветствую, дорогие хабровчане!

Не первый год занимаюсь диагностикой и реанимацией десктопов и ноутбуков, преимущественно на дому у клиента. Со временем напрашивается вывод, что с собой необходимо иметь чемодан, а возможно, даже чемоданище с комплектующими для диагностики неисправной железки. Некоторые могут мне возразить - «Можно обходиться и без комплектующих! Опыт позволяет выполнять диагностику и без них!». Это отчасти верно, но стопроцентной точности не дает, это как факт.

Опираться на POST коды спикера? Не всегда можно конкретно определить на что же он ругается. Например, один длинный два коротких сигнала спикера сигнализируют о неисправности видеосистемы, но это не всегда означает неисправность самой видеокарты. Встречаются, например, проблемы с доп. питанием на эту самую видеокарту, а это уже неисправность блока питания.

Здесь я остановлюсь и расскажу уважаемым читателям, что же такое сигналы спикера.

При включении компьютера запускается BIOS (базовая система ввода/вывода) - факт известный всем, но упомянуть будет не лишним. В составе BIOS"а есть программа под названием POST (power on self testing). Как следует из названия, программа предназначена для начальной диагностики устройств и портов материнской платы.

Процедура инициализации POST сопровождается выводом изображения на монитор:

После прохождения POST видим:

В процессе выполнения POST генерирует так называемый POST код, который записывается в специальный диагностический регистр.

Собственно, сигналы спикера являются кодами ошибок при выполнении POST, если POST выполняется без ошибок, мы слышим один короткий сигнал.

Переходим к сабжу.

POST карты.

POST карта - это плата расширения, чаще всего встречаются карты формата PCI:

Так же есть карты формата miniPCI (для ноутбуков):

И встречаются карты для LPT (требуют дополнительного питания по USB):

Имея на руках десктоп с замечательным диагнозом «не включается» (не путать с «не заводится»), чаще всего сначала последовательно отключается некритичная периферия - звуковуха, тюнер, сетевуха, харды, приводы.
Затем, если в процессе не выявлены неисправности, начинается замена комплектующих: оперативки, видеокарты, процессора (ага тот самый чемоданище с железками).

Но вот у нас есть в руках вместо чемодана с железом POST карта, мы экономя время минуем вышеописанную процедуру с заменой/отключением железа (экономим в среднем минут 40, замечу, что после отключения одной железки производится как минимум один цикл включения - выключения).

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

Сопоставив код ошибки с его расшифровкой, чаще всего получаем конечный диагноз, как то: неисправная память, процессор или же компонент на материнской плате.

Предполагаю написать серию статей по диагностике, если тема интересна хабровчанам.

Доброго времени суток %habrauser%!

Совсем недавно мною был написан пост о POST картах , хороша тавтология а;-)?
В нем я обещал написать продолжение если тема интересна, ну и поскольку тема действительно оказалась интересна хабровчанам я продолжаю!

Собственно сабж

Как я упоминал в комментах, к своей первой статье , заказал я себе карточки - эту для ноутов и эту для десктопов .

Заказ был оформлен в двадцатых числах января (точных дат не могу указать, заказом, отслеживанием и получением занимался не я). На днях пришла эта карта, ноутбучная дескать, десктопную приходится ждать. Тут хочу выразить некоторое негодование -
1) Заказаны карты были одним заказом, идут по разному (надеюсь что вторая все же идет, а не потеряна);
2) Сроки доставки! Я конечно могу понять, у них был Китайский Новый Год, но месяц ходу (судя по дате на бандерольке) это через чур уж много, особенно в купе с тем, что комплектовались они три (ТРИ ) недели!
3) Дилэкстрим берет порядка 200 рублей за выдачу трека посылки, сам по себе трек бесплатен и присваивается каждой посылке, так что вердикт - барыги!
На этих пунктах мое негодование заканчивается, и я начинаю обзор.

Карта пришла в бандерольке, внутри бандероль проклеена генератором душевного спокойствия , сама карта упакована в него же и в анти статик, так что к вопросам упаковки китайцы подходят основательно. В анти статике у нас сама карта, USB шнур и User Manual.

Эта карта предназначена для mini PCI и так же имеет (не предназначена, почему читаем далее) порт для LPT, USB нужен для питания карты. Первое что захотелось сделать - естественно протестировать! Но ноута под рукой нет, так что я с чистыми помыслами решил тестить ее на LPT порте.

Собственно воткнул карту

При подаче питания карта показывает "--" и «FF».

Включаем машину

Потом карточка несколько раз меняет изображение, и опять «FF00» загрузилась система. Резонный вопрос и желание узнать что же за коды промелькнули, заставляет сделать нехитрое умозаключение, что две единственные кнопки позволяют листать коды, и вуаля! Так оно и есть, тыкаем на кнопку, видим

Теперь на левом табло порядковый номер POST кода, на правом сам код. (не по порядку ибо в начале повторяется)

Тык кнопку

Тык кнопку

Тык кнопку

Снова тык

Опять тык

И еще раз

И еще чуть чуть

Вот и последний

Тут мы переходим к одному интересному моменту и не самому впечатляющему выводу.
Интересный момент это User manual, в самом начале мануала у нас обозначение светодиодов

"+5 вольт" светится все время пока мать включена, вполне логично ибо USB ;-)

"+3,3 вольт" такой же индикатор питания как и "+5 вольт" не горит когда нет питания на PCI слоте (либо мать не поддерживает, чета не разобрался с точным переводом, в оригинале )

«FRAME» светится когда сигнал «FRAME» активен.

FRAME (I/O)
Контакт А34

Сигнал FRAME выдается действующим главным абонентом шины PCI. Переход FRAME на низкий, т.е. активный, уровень инициирует фазу адресации. Чтобы обозначить последнюю фазу данных, завершающую цикл работы шины, главный абонент должен вновь деактивировать FRAME.

«CLK» светится когда сигнал «CLK» активен.

CLK (O)
Контакт В16

Через этот контакт передается сигнал таймера PCI, сопровождающий все операции PCI. В соответствии с техническими требованиями, его частота лежит в интервале от 0 до 33 МГц.

«RSET» светится во время перезагрузки

"+12" включаем формальную логику

"-12" включаем формальную логику

"-5" то же самое что и "+3,3 вольт"

Расшифровки кодов

BIOS на матери Phoenix.

FF в моем случаях это наличие +5 на USB

А5 в мануале не указан (просто пустует)

AA ожидание нажатие клавиши F2

55 enable USB devices

04 get CPU type

На фотографиях светится "+5 вольт"

Итак «интересный момент, в мануале есть таблица со всеми кодами к финксовскому, АМИшному Авардавскому BIOS-ам, „не самый впечатляющий вывод“ в том что по LPT карта гонит полную чушь!

К слову о мануале - 28 страниц формата А6 чистейшей информации по POST кодам, обозначениям сигналов спикера и работы CMOS. Переводам займусь в ближайшее время, и представлю хабросообществу, но думаю дождаться десктопной карты что бы сделать сводный мануал.

Жду вторую карту и ноутбук мученник для полноценных тестов и обзоров.Перевожу и курю мануал.

P.S Воскресенье шестой час утра, может что то и упустил. Вопросы в комментах, по необходимости дополню.

P.P.S статья была написана в режиме реалтайм, „на лету“ пока писал перезагружался и фотал.

При подготовке статьи использованы две цитаты

Тестирование неисправных материнских плат, будь до настольные PC или ноутбуки, немыслимо без POST карт. К сожалению, в настоящий момент шина mini PCI в ноутбуках уже ушла, а честных POST карт, работающих непосредственно с шиной PCIe ещё нет. Все известные тестеры на самом деле, пользуются шиной LPC, которую некоторые производители выводят на свободные контакты разъёма mni PCIe. Если же шина LPC туда не выведена, ремонтникам приходится подпаиваться к каким-либо микросхемам на плате при помощи достаточно большого числа проводов. Нет, конечно, их не очень много, но хотелось бы всё-таки, чтобы было ещё меньше. Возможно ли это? Оказывается, во многих случаях - да!

Загадочный разъём

Давайте глянем на фото первой попавшейся материнской платы ноутбука. Для этого, автор вскрыл собственный (статья пишется на новогодних праздниках, так что злые вахтёры на работу не пускают).

Присмотримся повнимательней к разъёму, отмеченному стрелкой

Что это? К сожалению, схемы именно этой платы в коллекции не нашлось (сапожник без сапог), но вот фрагмент схемы от похожей материнки:

Оказывается, это ни что иное, как двухпроводный POST! И он имеется на многих материнских платах, производства COMPAL (которые стоят в ноутбуках множества производителей). Правда, на некоторых, он спрятан под наклейкой, но найти его - не так сложно, было бы желание.

Аббревиатура "P80" в названии цепей означает ни что иное, как "PORT 80", то есть, классический порт POST.

Вывод

Исходя из этого, в новые POST тестеры BVG Group была добавлена возможность получать коды не только из традиционных шин mini PCI и LPC, но и из этой двухпроводной шины. При этом, сам тестер по-прежнему устанавливается в разъём mini PCIe, откуда он получает питание (без этого, шина была бы четырёхпроводной, пришлось бы ещё землю и +3.3В протягивать), а два дополнительных провода подключаются к подобному разъёму. После включения питания, тестер выявляет наличие двухпроводной шины и начинает диагностику по ней. В остальном, работа полностью идентична классическим режимам работы с POST тестером, просто паять надо меньше. Кроме того, паять надо не к контактам микросхем с малым шагом, а к посадочному месту под разъём, где шаг намного больше. Правда, сказать, что "данный разъём стандартизован" нельзя, имеются и альтернативные цоколёвки, например, приведённая ниже, но всё равно, вариатнов всего два, и ошибка не приведёт ни к каким фатальным последствиям. Достаточно поменять провода, и всё заработает.