Есть: мамка PCA-6178, на ней имеется аппаратный Watchdog timer (если в течении определённого времени в определённый порт не запишется некое значение, то комп ресетится).
Цель: включить этот самый Watchdog timer до попытки загрузки ОС.
Предполагаю дополнить код BIOS, но даже незнаю с какой стороны подойти, как найти последние инструкции выполняемые BIOS-ом перед тем как передать управление загрузчику?... Нашёл код, который грузит в 0000:7C00 первый сектор с дисков, но у меня загрузка происходит но сети :(
Есть кто нибуть, кто такое уже делал? или может кто-то поможет дельным советом?
BIOS AWARV v4.51 (2A69KAKG)
Про винду можно не беспокоиться. На этой машине крутится собственно написаная ОС. А мне необходимо до загрузки ОС выполнить комманды по запуску Watchdog.
Который встроен в генератор? Тогда найдите даташит на оный и программите на здоровье...
п.с. и нафиг он вас сдался??? :)
Чувствую нужно разложить всё по полочкам (чтоб все поняли и прониклись проблемой :)
Есть стойка из N компьютеров такого типа (без дисков). Каждый комп в сети. Сеть этих компьютеров объединяется с другой сетью через радиолинк. В удалённой сети есть сервер с которого N компьютеров загружают ОС (по сети).
Я пытаюсь решить проблему следующего плана: если какомуто из N-компьютеров требуется перегрузиться (а такое бывает часто) и если на какоето время нет радиолинка (сервер не доступен), то компьютер в итоге напишит "Press any key" и будет ждать вмешательство оператора...
Так вот зачем мне здался этот Watchdog - чтобы комп автоматически уходил в ребут по истечении заданного времени.
Программировать Watchdog очень просто:
out 0443h,значение, где (значение) есть время в секундах до ресета.
in reg,0443h - выключает watchdog.
Мне нужно вставить код активизации Watchdog до того как комп поппытается загрузить ОС по сетке! Вот.
Или скажу по другому - мне нужно найти в биосе где он закончил POST и пытается определить (исходя из настроек) с чего грузить ОС (Fdd,HDD,CD-ROM,LAN,...).
Заранее спасибо.
модуль должен располагаться в памяти в адресах с C0000h по EFFFFh на 2-х килобайтной границе.
в начале расширения биос стоит слово $AA55, после которого идет jmp на точку входа
Я понял! Но вот вопрос - а куда потом передать управление? или чем завершить код (не RETF случайно)?
вы необычайно догадливы :wink:
изучите все тонкости на примере дизассемблирования сходного модулька из биоса
Спасибо! :)
Прикрепил cbrom-ом свой кусочек кода со всеми (кажется) премудростями. cbrom /D - показывает что код упаковал, но просматривая образ биоса, обнаружил, что упакован он с не с сигнатурой lh5, а LH0...
В итоге - не работает :( и в памяти моего куска нету :cry:
PS: Там нет никаких контрольных сумм, проверки и т.д?
PS2: Танцы с бубном по замене LH0 на LH5 + update file MODBIN-ом желаемого результата не дают.
...как я уже запарился флешки перетыкать что бы эксперементальную машину восстанавливать... :twisted:
lh0 - это вроде store? нафигачьте пустого места чтоб было что жать :)
по поводу модулька - вот есть статейка - почитайте - может чего полезного почерпнете
http://www.geocities.com/mamanzip/Articles/Bios_Tricks.txt