OSDev

для всех
Текущее время: 27 апр 2024, 20:37

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Перезагрузка
СообщениеДобавлено: 03 дек 2011, 20:44 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Вопрос: Существуют ли способы перезагрузки НЕ через
Код:
jmp 0F000h:0FFF0h

и НЕ через
Код:
mov al, 0xFE
out 0x64, al 

? Первый мне не подходит, потому что не хочу возвращаться из x64 в x16, а второй - все-таки какой-то древний и нелогичный. Выключение я через ACPI сделал. Может кто знает, можно ли ребутиться через ACPI? В доках нашел только режим вырубания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 03 дек 2011, 21:37 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Для того чтобы перезагрузиться есть куча способов.

Через контролёр клавиатуры. ИХМО наиболее универсальный.
Через порт 92h
APM
ACPI
Тройная ошибка.
Возврат в реальный режим и выполнить jmp 0F000h:0FFF0h
Через мост PCI, железо зависимо, в биосе таких вариантов перезагрузок несколько десятков. У intel порт CF9h
Через Power Manadger - имеется ввиду железка, тоже зависит от производителя.


Последний раз редактировалось pavia 03 дек 2011, 21:45, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 03 дек 2011, 21:40 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
mov al, 0xFE
out 0x64, al

Код не правельный


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 03 дек 2011, 22:49 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Может неправильный, но работает.:D Нашел его здесь же, на форуме.
Ну если через контроллер клавы самый универсальный - может и стоит его поставить... Лишь бы его не убрали.
А что тут не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 03 дек 2011, 22:59 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Через порт клавиатуры не самый правильный. Нет единственно правильного способа. Выполняй последовательность всех известных способов, один да сработает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 03 дек 2011, 23:24 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Как бы не хватает проверки буфера перед отправкой данных в порт.
И цикла, после того как. Там должно пройти 6мкс до сброса.

Кстати вот про ACPI нашел
http://wiki.osdev.org/Shutdown
далее
http://forum.osdev.org/viewtopic.php?t=16990


Последний раз редактировалось pavia 04 дек 2011, 09:42, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 04 дек 2011, 09:07 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Если я правильно понимаю, то triple fault приводит к перезагрузке. Так что, попробуйте просто обнулить IDTR и поделить на 0. :).
P.S.: Если не сложно будет, оповестите о результатах опытов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 04 дек 2011, 09:50 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
P.S.: Если не сложно будет, оповестите о результатах опытов.

Когда начинал разработку ОС по незнанию сто раз падал на ей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 04 дек 2011, 18:07 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
По поводу ACPI - выключение я уже делал, и без 300 строк на си.:) Интересует именно Reboot.
Проверку буфера - спасибо, сделаю.
А перезагрузка через Tripple Fault - это не очень хорошо. Хотя бы потому, что любая виртуалка и эмулятор будет громко материться. Как минимум будет БОРЩ, мб иногда QEMU и VMWare.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезагрузка
СообщениеДобавлено: 05 дек 2011, 10:24 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Bargest писал(а):
По поводу ACPI - выключение я уже делал, и без 300 строк на си.:) Интересует именно Reboot.
Проверку буфера - спасибо, сделаю.
А перезагрузка через Tripple Fault - это не очень хорошо. Хотя бы потому, что любая виртуалка и эмулятор будет громко материться. Как минимум будет БОРЩ, мб иногда QEMU и VMWare.

Ранее вы про виртуалки не упоминали. :) Да, они действительно будут генерировать тонны кирпичей при обнаружении TF.
З.Ы.: как минимум vmware можно попросить не обременять пользователя своими проблемами.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB