OSDev http://osdev.su/ |
|
Rebbot. http://osdev.su/viewtopic.php?f=6&t=349 |
Страница 1 из 1 |
Автор: | ZarathustrA [ 08 ноя 2010, 17:35 ] |
Заголовок сообщения: | Rebbot. |
Народ. Может кто помнит, как можно произвести перезагрузку компа программными методами. Я помню где-то видел инфу по этому поводу (что-то надо писать по определенным портам), но не помню, где я ее находил. |
Автор: | SII [ 08 ноя 2010, 18:51 ] |
Заголовок сообщения: | Re: Rebbot. |
Можно через контроллер PS/2 (см. http://ru.osdev.wikia.com/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0_PS/2). Надо в выходной порт контроллера выдать 0. |
Автор: | ZarathustrA [ 08 ноя 2010, 19:21 ] |
Заголовок сообщения: | Re: Rebbot. |
Не-не-не. Мне нужен не сброс процессора (Этого я могу добиться применяя на себя IPI init). Мне нужен именно ребут с полным циклом загрузки (BIOS, POST и т.д.). Должен где-то быть порт запись в который изменяет поведение мамки при сбросе процессора. (типа, бит установлен - ребут при сбросе, бит сброшен - простой shutdown). |
Автор: | iz56 [ 08 ноя 2010, 23:51 ] |
Заголовок сообщения: | Re: Rebbot. |
;-------------; ; reboot ; ;-------------; reboot: call kbd_wait mov al, 0xFE out 0x64, al jmp $ ret ;------------------; ; keyboard wait ; ;------------------; kbd_wait: jmp $+2 in al, 0x64 test al, 1 jz .ok jmp $+2 in al, 0x60 jmp kbd_wait .ok: test al, 2 jnz kbd_wait ret У меня так работает.(взято из исходников Bos) |
Автор: | ZarathustrA [ 09 ноя 2010, 05:24 ] |
Заголовок сообщения: | Re: Rebbot. |
iz56 <-- спасибо, взял на заметку. Однако возник более извращенный вопрос. Существует ли механизм позволяющий отправить систему в ребут без непосредственного обращения к железу? Что-то похожее на следующую схему: 1) ПО программирует мать на ребут. 2) Процессор делает например system-wide INIT IPI. 3) Вместо сброса процессоров поучаю сброс всей системы. Вопрос возникает по следующей причине. Не хочу привязывать ядро к железу (за исключением процессора). Да-да-да ядро это сферический конь в вакууме, этакий драйвер процессора. Однако, в природе наличествует такое явление как паника ядра. Можно по итогу паники уводить ядро в бесконечный холостой halt-цикл и все вроде как в шоколаде. Но с другой стороны, существует большой сегмент рынка, где прям таки требуют возможности изменения такого поведения ядра на перезагрузку (что б не приходилось бегать за три девять земель, просто чтобы нажать кнопку reset на системнике). Вот я и думаю, то ли полностью делегировать управление питанием наружу. То ли регистрировать какой-то выносной ребут-модуль. |
Автор: | Himik [ 11 ноя 2010, 14:37 ] |
Заголовок сообщения: | Re: Rebbot. |
Процессор сбрасывается от тройного исключения. Для этого пожалуй нужно обнулить все элементы IDT, и вызвать какое-нибудь прерывание или исключение. |
Автор: | ZarathustrA [ 11 ноя 2010, 18:10 ] |
Заголовок сообщения: | Re: Rebbot. |
Очень интересная идея. Пожалуй это мне подходит. Спасибо. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |