OSDev

для всех
Текущее время: 07 май 2024, 03:48

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 22 июн 2010, 16:32 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Меня интересует русская документация/примеры про программирования следующих вещей:
1) ACPI
2) IO APIC и Local APIC
3) Виртуальный режим в длинном режиме (или это возможно только в 32-битном режиме?).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июн 2010, 16:41 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
1 и 2 -- русская документация в природе отсутствует. Отдельные статьи найти, наверное, можно, но в любом случае придётся вникать в английские оригиналы.
3 -- документация Интел абсолютно чётко говорит: режим V86 поддерживается только в обычном 32-разрядном защищённом режиме. В 64-разрядном V86 отсутствует в принципе, как отсутствуют сегментация и аппаратная многозадачность.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июн 2010, 18:04 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Про 3 ясно. Я английским владею не достаточно хорошо. То есть прочитать пару страниц и понять какой формат какого-нибудь дескриптора и что в нём для чего я ещё могу, но переварить целый том документации - нет. Я пытался разбираться в спецификации ACPI - мало что понял. Мне бы не помешала статья, где будет рассказаны основные принципы. Причём желательно с упором на практику, потому что в официальной спецификации я не увидел никаких конкретных значений (может просто плохо смотрел). Про APIC я ещё английскую документацию не читал, но тоже хотелось бы найти где-нибудь русскую статью. Чтобы там рассказывалось про основные принципы и как прочитать какое-нибудь значение и какого-нибудь регистра и т. п. А уже за более продвинутыми функциями я буду лезть в английскую литературу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июн 2010, 19:37 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
А Вы просто разбирайтесь, и всё. Понимание языка само приходит с практикой. Школу я закончил, имея по английскому 4, но нихрена его не знал (просто зазубрил к экзамену наизусть топики да кой-какую грамматику, и всё). С тех пор никаких курсов-занятий не посещал, да и целенаправленным самообразованием не занимался, однако доку читаю свободно, художественную -- зависит от богатства языка автора (Гарри Поттера -- без особых проблем, а вот того же Айвенго -- фигвам, без конца в словарь смотреть приходится); могу понятно писать на английском (с ошибками, но англоамерикосы понимают без проблем). Всё достигнуто постоянной работой с документацией :)

Статей не посоветую -- не встречал (правда, и не искал). Что касается спецификации ACPI, то она действительно довольно тяжело читается, пока не врубишься в основные принципы. Полноценную поддержку сделать достаточно тяжело, поскольку для этого нужно реализовать виртуальную машину -- интерпретатор байт-кода ACPI, с помощью которого и выполняются основные функции. Собсно говоря, половина спецификации -- это описание этого самого кода :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2010, 10:29 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Описание AML - раздел 18. Общие принципы вроде бы понятны, но я пока не понимаю, как интерпретатор должен выполнять байт-код для управления аппаратурой. Если есть желание, можем скооперироваться и разобраться с ACPI окончательно. Я пока хожу вокруг, да около, но никак не могу взяться за это основательно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2010, 17:29 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
я писал(а):
Описание AML - раздел 18.
Раздел 19 в ревизии 4.0a. Сегодня скачал.

я писал(а):
Общие принципы вроде бы понятны, но я пока не понимаю, как интерпретатор должен выполнять байт-код для управления аппаратурой.
Уже понятно.
Цитата:
> ACPI registers can be:
* PCI conguration registers;
* Memory-mapped registers;
* Programmed IO registers.

> They're dened by the OperationRegion statement:
OperationRegion(FOO, PCI_Config, Address [...])
OperationRegion(FOO, SystemIO, Address [...])

> Fields of the register can be named with the Field statement.
Код:
Name (RegionSpace Keyword) Value
SystemMemory               0
SystemIO                   1
PCI_Config                 2
...                        ...

Посмотреть на байт-код в живую можно после компиляции ASL-исходника (компиляторы asl - майкрософт, iasl - интел), можно взять и из таблиц (оба компилятора могут получать таблицы в различном виде, в том числе и виде листинга).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 июн 2010, 17:44 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Чистые ASL-исходники и листинги с байт-кодом вместе с оригинальным бинарником DSDT от моего компьютера: acpidata.zip


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2010, 23:29 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
KIV, по IO APIC и Local APIC у меня русской доки нет, но есть опыт их использования. Спрашивай, на отдельные вопросы смогу ответить.
Для начала советую ознакомиться с электрической схемой их соединения между собой. Она есть в интеловской мультипроцессорной спецификации http://www.intel.com/design/archives/pr ... 242016.htm
на страницах 5-3 и 5-5.

Основное отличие в разводке IOAPIC от PIC в том, что к IRQ0 вместо системного таймера подключен PIC, а системный таймер подключен к IRQ2. Соответственно, IRQ0 лучше замаскировать, чтобы прерывания не дублировались с PIC.

В настройке векторов прерываний IRQ от 0 до 15 (прерывания ISA) все биты атрибутов установить в 0, что означает срабатывание по высокому фронту. Для IRQ от 16 и выше (прерывания PCI) установить биты A000, что означает срабатывание по низкому уровню.

Сигнал конца обработки прерывания (EOI) делается через Local APIC записью 32-битного нуля в оперативную память FEE000B0.

При использовании страничного режима памяти, страницы для FEC00000 и FEE00000 должны быть с атрибутом PCD (10h) "Cache disabled".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2010, 12:34 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Возвращаясь к ACPI... Я научился декодировать пакет \_S5 для выключения питания через ACPI. Если не считать включение режима ACPI и декодирование таблиц, то для выключения нужна одна единственная команда записи в порт PM1a_CNT (плюс вариативно еще одна дублирующая в порт PM1b_CNT).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2010, 12:37 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Спасибо, chizh. Уж извините, что задам сейчас, наверное, совсем глупые вопросы (просто я сейчас не имею возможности скачать документацию из-за медленного и дорогого GPRS интернета), а разобраться и сделать поддержку в своей ОС хотелось бы побыстрее (не дожидаясь нормального интернета). Итак, во-первых, как включить IO APIC, во-вторых, как установить базовый вектор прерываний. Ответить можно любыми ссылками кроме Google. Ну или кодом. Или словесным описанием. Как удобнее...


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

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


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

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


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

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