Industrial PC (PCA-6178) & Watchdog timer

Есть: мамка PCA-6178, на ней имеется аппаратный Watchdog timer (если в течении определённого времени в определённый порт не запишется некое значение, то комп ресетится).
Цель: включить этот самый Watchdog timer до попытки загрузки ОС.
Предполагаю дополнить код BIOS, но даже незнаю с какой стороны подойти, как найти последние инструкции выполняемые BIOS-ом перед тем как передать управление загрузчику?... Нашёл код, который грузит в 0000:7C00 первый сектор с дисков, но у меня загрузка происходит но сети:(
Есть кто нибуть, кто такое уже делал? или может кто-то поможет дельным советом?

BIOS AWARV v4.51 (2A69KAKG)

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

Тут бы тебе реально смог бы помочь создатель ... но он в последнее время не часто нас жалует своим присутствием.

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

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

StarGaz0r писал(-а):
скорее всего один сторожевой порт отключить не удастся - он ведь часть ACPI, да и винда его возможно опять сама найдет и включит - ищите даташиты на сей девайс...расположен в суперио...

Про винду можно не беспокоиться. На этой машине крутится собственно написаная ОС. А мне необходимо до загрузки ОС выполнить комманды по запуску Watchdog.

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

Цитата:
на ней имеется аппаратный Watchdog timer

Который встроен в генератор? Тогда найдите даташит на оный и программите на здоровье...
п.с. и нафиг он вас сдался???:)

apple_rom писал(-а):
Цитата:
на ней имеется аппаратный Watchdog timer

Который встроен в генератор? Тогда найдите даташит на оный и программите на здоровье...
п.с. и нафиг он вас сдался???:)

Чувствую нужно разложить всё по полочкам (чтоб все поняли и прониклись проблемой:)

Есть стойка из N компьютеров такого типа (без дисков). Каждый комп в сети. Сеть этих компьютеров объединяется с другой сетью через радиолинк. В удалённой сети есть сервер с которого N компьютеров загружают ОС (по сети).
Я пытаюсь решить проблему следующего плана: если какомуто из N-компьютеров требуется перегрузиться (а такое бывает часто) и если на какоето время нет радиолинка (сервер не доступен), то компьютер в итоге напишит "Press any key" и будет ждать вмешательство оператора...
Так вот зачем мне здался этот Watchdog - чтобы комп автоматически уходил в ребут по истечении заданного времени.
Программировать Watchdog очень просто:
out 0443h,значение, где (значение) есть время в секундах до ресета.
in reg,0443h - выключает watchdog.
Мне нужно вставить код активизации Watchdog до того как комп поппытается загрузить ОС по сетке! Вот.
Или скажу по другому - мне нужно найти в биосе где он закончил POST и пытается определить (исходя из настроек) с чего грузить ОС (Fdd,HDD,CD-ROM,LAN,...).

Заранее спасибо.

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

напишите на асме модулек расширения биос с данным кодом и приклейте его сибиромом.
модуль должен располагаться в памяти в адресах с C0000h по EFFFFh на 2-х килобайтной границе.
в начале расширения биос стоит слово $AA55, после которого идет jmp на точку входа

StarGaz0r писал(-а):
напишите на асме модулек расширения биос с данным кодом и приклейте его сибиромом.
модуль должен располагаться в памяти в адресах с C0000h по EFFFFh на 2-х килобайтной границе.
в начале расширения биос стоит слово $AA55, после которого идет jmp на точку входа

Я понял! Но вот вопрос - а куда потом передать управление? или чем завершить код (не RETF случайно)?

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

AnSy писал(-а):
а куда потом передать управление? или чем завершить код (не RETF случайно)?

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

StarGaz0r писал(-а):
AnSy писал(-а):
а куда потом передать управление? или чем завершить код (не RETF случайно)?

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

Спасибо!:)

Прикрепил cbrom-ом свой кусочек кода со всеми (кажется) премудростями. cbrom /D - показывает что код упаковал, но просматривая образ биоса, обнаружил, что упакован он с не с сигнатурой lh5, а LH0...
В итоге - не работает:( и в памяти моего куска нету cry

PS: Там нет никаких контрольных сумм, проверки и т.д?
PS2: Танцы с бубном по замене LH0 на LH5 + update file MODBIN-ом желаемого результата не дают.

...как я уже запарился флешки перетыкать что бы эксперементальную машину восстанавливать... :twisted:

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

lh0 - это другой метод упаковки - по идее биос должен понимать lh5 и lh0 - можно попробоватб упаковать lha и модифицировать заголовок под нужный для биос
lh0 - это вроде store? нафигачьте пустого места чтоб было что жать :)

по поводу модулька - вот есть статейка - почитайте - может чего полезного почерпнете
geocities.com/mamanzip/Articles/Bios_Tricks.txt

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

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые 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.

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

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