OSDev
http://osdev.su/

Гугл подвел... Ищется функция scan2ascii...
http://osdev.su/viewtopic.php?f=6&t=920
Страница 3 из 3

Автор:  Mirmik [ 07 май 2014, 21:48 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

Функция - круто, ассемблер - круто, но лучше бы словами, что именно тут происходит...?

Автор:  Bargest [ 07 май 2014, 23:31 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

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

Автор:  pavia [ 08 май 2014, 09:03 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

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

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

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

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

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

Автор:  Mirmik [ 08 май 2014, 09:18 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

Я так понимаю, опять же проще всего стянуть драйвер у линухи?

Автор:  pavia [ 08 май 2014, 09:57 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

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

Автор:  Mirmik [ 08 май 2014, 10:03 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

Переформулирую вопрос:

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

Автор:  Nable [ 08 май 2014, 11:58 ]
Заголовок сообщения:  Re: Гугл подвел... Ищется функция scan2ascii...

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, проистекают из того что нужно усиленно маскироваться под винду (хотя в стандарте задумывалось что все операционки равны, но в итоге некоторые оказываются равнее других), иначе на куче железок будут проблемы.

Страница 3 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/