Идея диагностики опроса BIOS

Часто бывает так, что плата не работает, на POST-кодере 00 или FF. Осциллографом тыкаться на флэшку бессмысленно - если там мусор, то процессор скорее всего зависнет.

Конечно, проще сразу зашить нормальный БИОС для этой платы. Но мне кажется, при желании можно придумать ситуации, где такой BIOS выгоднее родного от платы - к примеру, до выдачи первого POSt-кода (который еще может не дойти в случае неработоспособности SIO/MIO) процессор выполняет кучу команд, в том числе обращается к железу (если память не изменяет, кроме Phoenix BIOS) - если там произойдет зависание, то родной BIOS не поможет...

Насколько я знаю, до сих пор процессоры стартуют в режиме эмуляции i8086 (в т.н. "реальном режиме").

А что если взять и сделать BIOS из одной команды - короткий переход на саму себя (JMP $ или m1: jmp m1 для Турбо Ассемблера, опкод 0xEB 0xFE, где EB - команда jmp short, FE=-2 - относительный адрес перехода в байтах.) И иметь набор из нескольких флэшек или просто зашивать его каждый раз в флэшку с платы, предварительно сохранив содержимое?

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

Прерывания ведь при старте процессора запрещены т.к. контроллер прерываний еще проинициализировать надо?

Какие будут мнения?

Просьба сильно не пинать, если идея совсем тупая, мне ведь интересен еще и теоретический аспект.

P.S. Как же я люблю Ассемблер!:)

Не силен в архитектуре x86, но идея, я думаю, вполне жизнеспособна и целесообразна...

Alles Luge...

Аватар пользователя dizzy

Dmitry-r писал(-а):
Не силен в архитектуре x86, но идея, я думаю, вполне жизнеспособна и целесообразна...

Идея может и хороша, но ее должны обмозговать наши гуру БИОСов (icbook или apple_rom )...

Аватар пользователя R_Soft

Привет!

Highlander писал(-а):
.... А что если взять и сделать BIOS из одной команды - короткий переход на саму себя (JMP $ или m1: jmp m1 для Турбо Ассемблера, опкод 0xEB 0xFE, где EB - команда jmp short, FE=-2 - относительный адрес перехода в байтах.) И иметь набор из нескольких флэшек или просто зашивать его каждый раз в флэшку с платы, предварительно сохранив содержимое?

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

Прерывания ведь при старте процессора запрещены т.к. контроллер прерываний еще проинициализировать надо?

Какие будут мнения?

Не знаю, наверное ЭТО я видел один.... всмысле ЭТО - 16-байтная TestBIOS прошивается в последние 16 байт прошивки. Уже здесь было на форуме. И я не раз эту прошивку применял. Суть проста - вывод в порт 80h значения аккамулятора, считанного из ОЗУ в цикле. Если кто не видел - могу вечером (как буду дома) запостить сюда исходник на асме. Там всего несколько строк. При диагностике одной из мёртвых матплат выяснил интересный глюк (так и не понял мультика или ЮМ) при помощи этой самой прошивки. wink Правда я прошивку слегка модернизировал... Кстати, действительно удобно наблюдать осциллом на одной из ног данных, есть ли жизнь после Reset. wink

С уважением, Владимир.

Партизан подпольной луны aka (R)soft

и я когда-то делал такую -
в 80 порт пишется 1, затем 10000 пустых циклов
затем 2, потом -циклы и тд и по кругу

Аватар пользователя icbook

Highlander писал(-а):
Насколько я знаю, до сих пор процессоры стартуют в режиме эмуляции i8086 (в т.н. "реальном режиме").
Какие будут мнения?
Просьба сильно не пинать, если идея совсем тупая, мне ведь интересен еще и теоретический аспект.

Идея совсем не тупая, более того - уже очень давно реализованная: icbook.com.ua/software/litebios.html

Проблема в том, что современные процессоры уже не стартуют в режиме эмуляции i8086:(


В частности, для AMD Duron/Athlon старт выполняется с инициализации Serial Initialization Protocol (SIP Protocol). Для AMD-64 - итого хуже.

Аватар пользователя Highlander

Опа... Рад что тема интересна!

2 dizzy, лучше не "или", а "и":)

2 (R)SOFT, буду рад увидеть исходник! Думаю, не только я.

Цитата: "есть ли жизнь после Reset" - во сказанул! Эту фразу я запомню!

2 GaRR, тож неплохо. Тока я бы в реальном режиме использовал RDTSC

2 icbook а где узнать/почитать про SIP _подробно_ и вообще про инициализпцию различных процессоров? Или это закрытая информация "только для партийных" ?

wiki.rom.by - здесь специально собраны ответы на большинство вопросов!

Когда другие уже закончили, процессоры Intel (R) Pentium (R) продолжают работать, работать и работать...

Аватар пользователя icbook

Highlander писал(-а):
...где узнать/почитать про SIP _подробно_ и вообще про инициализпцию различных процессоров? Или это закрытая информация "только для партийных"?

Как следует из открытой документации AMD, описание SIP-протокола изложено в документе 21902 "AMD Athlon™ System Bus Specification". Сам документ - NDA. Был, во всяком случае...

Аватар пользователя R_Soft

Привет!

Highlander писал(-а):
... 2 (R)SOFT, буду рад увидеть исходник! Думаю, не только я.

Нашел я ссылку на страницу автора.
Вот что на ней есть...

>Проекты.
>Попытка повторить USBBlaster.
>Программаторы GAL, PROM.
>В помощь ремонтнику системных плат.
>Сюда буду складывать стандарты связанные с компьютерами.


>FPGA CPLD VHDL.

Глянул я одним глазом в "FPGA CPLD VHDL" и тихо обалдел... Во молодчина человек!.. Инженерам и электронщикам очень рекомендую всю страничку к рассмотрению. Теперь по делу...

У автора есть статья "Программа 16 байт для диагностики не стартующих MB". Вот её я использовал за основу. Покопался у себя в исходниках :

.MODEL TINY
.CODE
org 100h
.386

ProgramStart:

Label0:
mov al, 0A5h
out 80h, al
in al, 80h
Label1:
out 80h, al
jnz Label1
;

END ProgramStart

Коротко суть в следующем. Сначала выводится байтик A5h в порт 80h. Далее читается байт из этого порта (должно быть FFh) и выводится, если не ноль (а это так и есть) то вечный цикл. Моя посткарта NM9221.

С уважением, Владимир.

Партизан подпольной луны aka (R)soft

Аватар пользователя Highlander

2 icbook, и снова спасибо! Наверное, на многие вопросы я бы смог находить ответы сам, будь у меня получше с Интернетом...

2 (R)SOFT, Во-первых, я не знаю (и не понял из Вашего описания), что выдает порт 80h при чтении? Зачем с него что-то читать? Или выдает то, что в него записали, соотв. это проверка на исправность SB и SIO/MIO?

Во-вторых, ошибка заключается в том, что ни одна из команд в этой программе не влияет на состояние регистра флагов, поэтому флаг ZF будет иметь то значение, которое он имел при старте программы (это, судя по всему, .COM файл - видно по модели памяти и смещению кода на 100h от начала сегмента кода/данных/стека программы).

Добавлено спустя 52 секунды:

Необходимо добавить команду test al,al или cmp al,0

wiki.rom.by - здесь специально собраны ответы на большинство вопросов!

Когда другие уже закончили, процессоры Intel (R) Pentium (R) продолжают работать, работать и работать...

Аватар пользователя R_Soft

Привет!

Highlander писал(-а):
2 (R)SOFT, Во-первых, я не знаю (и не понял из Вашего описания), что выдает порт 80h при чтении? Зачем с него что-то читать? Или выдает то, что в него записали, соотв. это проверка на исправность SB и SIO/MIO?

Это долгая история.... в общем исправная матплата должна выдать FFh при чтении.

Highlander писал(-а):
Во-вторых, ошибка заключается в том, что ни одна из команд в этой программе не влияет на состояние регистра флагов, поэтому флаг ZF будет иметь то значение, которое он имел при старте программы (это, судя по всему, .COM файл - видно по модели памяти и смещению кода на 100h от начала сегмента кода/данных/стека программы).

Добавлено спустя 52 секунды:

Необходимо добавить команду test al,al или cmp al,0

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

С уважением, владимир.

Партизан подпольной луны aka (R)soft

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей