Есть: мамка PCA-6178, на ней имеется аппаратный Watchdog timer (если в течении определённого времени в определённый порт не запишется некое значение, то комп ресетится).
Цель: включить этот самый Watchdog timer до попытки загрузки ОС.
Предполагаю дополнить код BIOS, но даже незнаю с какой стороны подойти, как найти последние инструкции выполняемые BIOS-ом перед тем как передать управление загрузчику?... Нашёл код, который грузит в 0000:7C00 первый сектор с дисков, но у меня загрузка происходит но сети
Есть кто нибуть, кто такое уже делал? или может кто-то поможет дельным советом?
BIOS AWARV v4.51 (2A69KAKG)
Так и сделанно Удлинив исходный файл до 512 байт, cbrom стал его упаковывать по LH5.
Спасибо. Спасибо всем кто пытался помочь!
К сожалению вставить свой модуль у меня так и не получилось.
А сейчас уже всё сделано. И сделано по изначальному видению сей проблемы...
Вобщем рассказываю, может кому пригодится...
1. В моём случае, при неудачной попытке загрузить ОС с чего либо выдаётся сообщение DISK BOOT FAILURE, PRESS ENTER.... Так вот, для начала я искал этот текст (само сабой в распакованных файлах (конкретно original.tmp)). У меня начало сей строки было по адресу F000:548C (здесь я учёл все сегменты, т.е. адресс где эта строка находится в реальном BIOS-e).
2. Определившись с местоположением в биосе (адрес) я искал ссылку на начало этой строки, т.е. последовательность 2-х байт 8Ch, 54h. Кусков было около 10, но оди из них при последующем дизассемблировании оказался:
F000:5DE3 mov si,548Ch
F000:5DE6 call EDA8h ; как позже выяснилось это пп вывода строки.
3. Далее всё просто:
3.1. Находим свободное место;
3.2. Вписываем в свободное место свой код начинаем его CALL EDA8h, завершаем RET);
3.3. Вместо CALL EDA8h (F000:5DE6) делаем CALL на свой код.
3.4. Упаковываем original.tmp;
3.5. Размещаем файл из п. 3.4 по методике из статьи "Редактируем BIOS" с этого сайта;
3.6. Зашиваем в flash;
4. НАСЛАЖДАЕМСЯ СВОЕЙ МАЛЕНЬКОЙ НО ДЕЙСТВИТЕЛЬНО ПОЛЕЗНОЙ РАБОТОЙ
Отправить комментарий