Часто бывает так, что плата не работает, на 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. Как же я люблю Ассемблер!
2 (R)SOFT, извиняюсь за назойливость, а где можно прочесть долгую историю?
Зачем AND? TEST ведь и есть AND без сохранения результата
wiki.rom.by - здесь специально собраны ответы на большинство вопросов!
Когда другие уже закончили, процессоры Intel (R) Pentium (R) продолжают работать, работать и работать...
RDTSC ? пентиум это еще не все процессоры
я этой программой 486 тестил
И зачем что-то компилировать?
Это программа пишется в отладчике прямо поверх любого файла биоса
2 GaRR, RDTSC это не только и не столько программа, в первую очередь команда ReaD Time Stamp Clock - чтение регистра-внутреннего счетчика тактов процессора (существует с первентиумов, кажется было и в некоторых 486) - ремонтировать более старые матплаты сейчас не приходится
wiki.rom.by - здесь специально собраны ответы на большинство вопросов!
Когда другие уже закончили, процессоры Intel (R) Pentium (R) продолжают работать, работать и работать...
Привет!
Что-то тема заглохла...
Кратко история... Матплата Asrock K7VT4A Pro (KT400A & VT8237) была куплена на барахолке для доноров/запчастей. Попытался её реанимировать. Всё пересмотрел, вроде в порядке. Биос прочитал на программаторе - тоже порядок. При старте на посткарту ничего не выводит. Смотрю рсциллом на 14 ноге параллельной флешки (SST39SF020A) - есть кратковременное "шевеление" но тут же исчезает... Дай, думаю, зашью ей тестовую 16-байтную программу. Пробую - выводит FD. Ага, вот где "собака порылась"!... Только не зацикливается программа, а вываливается через ~5 сек - т.е. на 14 ноге исчезает меандр. Путем вычислений я понял, что первый бит засажен на 0 в самом ЮМ. Флешка подключена через SIO (W83697HF) по LPC. Думал, что это SIO засаживает, меняю SIO - всё то же самое. Одним словом мне пришлось выбирать такие машинные команды, в которых бы 1-й бит был в нуле (первая тетрада от 0 до F, вторая тетрада - 0, 1, 4, 5, 8, 9, C и D).
Потом понял, что потеря команды проверки флагов перед условным переходом (в приведенном фрагменте) вызвана ЛИШНИМ случайным нажатием Ctrl+Y (удаление строки)... Такое у меня уже не первый раз встречается. Приношу свои извинения за баг. Ссылаться нужно только на программу автора, а не на мои глюки.
Эта привычка осталась ещё со времен Z80. По 80х86 я занимался дизассемблированием/патчингом в IDA, а вот по написанию программ - пока мало практики.
С уважением, Владимир.
Партизан подпольной луны aka (R)soft
Отправить комментарий