OSDev http://osdev.su/ |
|
Перезагрузка http://osdev.su/viewtopic.php?f=6&t=472 |
Страница 1 из 3 |
Автор: | Bargest [ 03 дек 2011, 20:44 ] |
Заголовок сообщения: | Перезагрузка |
Вопрос: Существуют ли способы перезагрузки НЕ через Код: jmp 0F000h:0FFF0h и НЕ через Код: mov al, 0xFE out 0x64, al ? Первый мне не подходит, потому что не хочу возвращаться из x64 в x16, а второй - все-таки какой-то древний и нелогичный. Выключение я через ACPI сделал. Может кто знает, можно ли ребутиться через ACPI? В доках нашел только режим вырубания. |
Автор: | pavia [ 03 дек 2011, 21:37 ] |
Заголовок сообщения: | Re: Перезагрузка |
Для того чтобы перезагрузиться есть куча способов. Через контролёр клавиатуры. ИХМО наиболее универсальный. Через порт 92h APM ACPI Тройная ошибка. Возврат в реальный режим и выполнить jmp 0F000h:0FFF0h Через мост PCI, железо зависимо, в биосе таких вариантов перезагрузок несколько десятков. У intel порт CF9h Через Power Manadger - имеется ввиду железка, тоже зависит от производителя. |
Автор: | pavia [ 03 дек 2011, 21:40 ] |
Заголовок сообщения: | Re: Перезагрузка |
Цитата: mov al, 0xFE out 0x64, al Код не правельный |
Автор: | Bargest [ 03 дек 2011, 22:49 ] |
Заголовок сообщения: | Re: Перезагрузка |
Может неправильный, но работает.:D Нашел его здесь же, на форуме. Ну если через контроллер клавы самый универсальный - может и стоит его поставить... Лишь бы его не убрали. А что тут не так? |
Автор: | Himik [ 03 дек 2011, 22:59 ] |
Заголовок сообщения: | Re: Перезагрузка |
Через порт клавиатуры не самый правильный. Нет единственно правильного способа. Выполняй последовательность всех известных способов, один да сработает. |
Автор: | pavia [ 03 дек 2011, 23:24 ] |
Заголовок сообщения: | Re: Перезагрузка |
Как бы не хватает проверки буфера перед отправкой данных в порт. И цикла, после того как. Там должно пройти 6мкс до сброса. Кстати вот про ACPI нашел http://wiki.osdev.org/Shutdown далее http://forum.osdev.org/viewtopic.php?t=16990 |
Автор: | ZarathustrA [ 04 дек 2011, 09:07 ] |
Заголовок сообщения: | Re: Перезагрузка |
Если я правильно понимаю, то triple fault приводит к перезагрузке. Так что, попробуйте просто обнулить IDTR и поделить на 0. :). P.S.: Если не сложно будет, оповестите о результатах опытов. |
Автор: | pavia [ 04 дек 2011, 09:50 ] |
Заголовок сообщения: | Re: Перезагрузка |
Цитата: P.S.: Если не сложно будет, оповестите о результатах опытов. Когда начинал разработку ОС по незнанию сто раз падал на ей. |
Автор: | Bargest [ 04 дек 2011, 18:07 ] |
Заголовок сообщения: | Re: Перезагрузка |
По поводу ACPI - выключение я уже делал, и без 300 строк на си.:) Интересует именно Reboot. Проверку буфера - спасибо, сделаю. А перезагрузка через Tripple Fault - это не очень хорошо. Хотя бы потому, что любая виртуалка и эмулятор будет громко материться. Как минимум будет БОРЩ, мб иногда QEMU и VMWare. |
Автор: | ZarathustrA [ 05 дек 2011, 10:24 ] |
Заголовок сообщения: | Re: Перезагрузка |
Bargest писал(а): По поводу ACPI - выключение я уже делал, и без 300 строк на си.:) Интересует именно Reboot. Проверку буфера - спасибо, сделаю. А перезагрузка через Tripple Fault - это не очень хорошо. Хотя бы потому, что любая виртуалка и эмулятор будет громко материться. Как минимум будет БОРЩ, мб иногда QEMU и VMWare. Ранее вы про виртуалки не упоминали. :) Да, они действительно будут генерировать тонны кирпичей при обнаружении TF. З.Ы.: как минимум vmware можно попросить не обременять пользователя своими проблемами. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |