OSDev

для всех
Текущее время: 28 апр 2024, 23:25

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: 07 май 2014, 21:48 
Аватара пользователя

Зарегистрирован: 20 мар 2014, 12:53
Сообщения: 45
Функция - круто, ассемблер - круто, но лучше бы словами, что именно тут происходит...?

_________________
http://osdev.ru/viewtopic.php?f=4&t=893 - GenOS


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 май 2014, 23:31 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
На ранних этапах загрузки у меня вычитывается несколько базовых вещей из ACPI, одна из них - адрес FADT таблицы.
Тут я из этой таблицы достаю значение, которое надо записать для перезагрузки, и место, куда это надо записать. Также указывается, где располагается это место - либо MMIO (отображено в память), либо в IO-портах, либо на шине PCI. В первых двух случаях, соответственно, происходит запись в память/порт, в третьем - пишется в регистр некоего PCI-устройства, которое указано в таблице.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 май 2014, 09:03 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Доконца в ACPI не разобрался. Есть документация на ACPI и её надо смотреть так как по сути это 500+1 исключение из правил.
В доккументации описана куча различных функций и то как эти функции должны быть запрограммированны. Большинство функций базируется на таблицах в которыу указывают шину, порт(адресс), чтеение или запись, значение необходимоен прочитать записать.
Управление питанием ЭВМ строиться путем ваших желаний которые вызывают функции из драйверов а те в свою очередь вызывают функции из библиотеки ACPI. Вот это библиотеку вы и должны реализовать.

Но на самом деле не всё так сложно.

Есть базовый набор функций которе нужно реализовать.
Есть табилцы причём двух видов первые стационарные, вторые динамические. Стационарные описывают в какой порт послать команду и какую чтобы получить нужный результат.
Вторые динамические описывают уже некоторый код, порядок действий с условиями.
Для стационарных потребуется реализовать минимум функций это работы в 5 пространствах порты в/в, ячейки памяти, порты в/в в памяти, конфигурационно пространство PCI, в пространстве EC.

Для динамических труднее там ещё надо П-код разбирать. Обработка услой, барьеры для синхоронизации.

Задача поиска таблиц хоть и простая, но чтобы добраться до нужной нужно описать поиск предыдущих. А это поиск от 3 до 5 таблиц со своими нюансами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 май 2014, 09:18 
Аватара пользователя

Зарегистрирован: 20 мар 2014, 12:53
Сообщения: 45
Я так понимаю, опять же проще всего стянуть драйвер у линухи?

_________________
http://osdev.ru/viewtopic.php?f=4&t=893 - GenOS


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 май 2014, 09:57 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Ну незнаю, не знаю. Линуксойды хоть и заявили о завершении разработки ACPI подсистемы, но она у них глючит очень сильно. Думаю к 4 версии ядра допилят.
Да и для ресета не нужно весь ACPI достаточно базовой части которой 10-20 функций. По 5 строчек кода не более.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 май 2014, 10:03 
Аватара пользователя

Зарегистрирован: 20 мар 2014, 12:53
Сообщения: 45
Переформулирую вопрос:

- Готовый вариант есть?

_________________
http://osdev.ru/viewtopic.php?f=4&t=893 - GenOS


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 май 2014, 11:58 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
Mirmik писал(а):
Я так понимаю, опять же проще всего стянуть драйвер у линухи?
Не у линухи, а у Интела и не стянуть, а реализовать нужный API. http://wiki.osdev.org/ACPICA#Using_ACPICA_in_your_OS
Да, это тот самый вариант, который готовый.
pavia писал(а):
Линуксойды хоть и заявили о завершении разработки ACPI подсистемы, но она у них глючит очень сильно.
Что-что? Хорошо бы в таких случаях прикладывать ссылки на конкретные описания глюков. Чего я встречал из реальных глюков:
1) битые таблицы ACPI, которые винда игнорировала, а линух им следовал (видимо, я тогда забыл что есть опция ядра noacpi) и отключал кулер на проце совсем.
2) куча BIOS'ов от производителей, которые любят vendor-lock и если операционка не обозначила себя как Win7+ (или Vista, не помню), то прячут HPET, а если не обозначила себя как Windows, то вообще про оборудование через ACPI весьма странные результаты возвращает. Перефразирую: многие проблемы, связанные с ACPI, проистекают из того что нужно усиленно маскироваться под винду (хотя в стандарте задумывалось что все операционки равны, но в итоге некоторые оказываются равнее других), иначе на куче железок будут проблемы.


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

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


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

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


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

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