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/ |