Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

APIC

18K
28 июня 2009 года
logree
102 / / 27.09.2008
Вот возникла необходимость перепрограммировать контроллер прерываний чтобы перенаправить вектора, хочу сделать через APIC, прочитал в мануале интел (да и в мануале AMD) про local APIC - почти ни чего не понял, особенно всякие IPI, INIT, LINT0, LINT1 и т д что это вообще такое? где почитать про I/O APIC (на форуме wasm пишут что в документации на чипсет сразу вопрос где взять?) что вообще нужно программировать чтобы перенаправить вектора Local или I/O APIC?
Кто нибудь расскажите по-подробнее.
551
29 июня 2009 года
Pavia
357 / / 22.04.2004
Надо было читать внимательнее.
Все APIC'и соеденены общей шиной для общения. Объмен идет сообщениями. Так вот различают 6 типв сообщения:
Fixed, "lowest priority", SMI, NMI, INIT, ExtINT еще 2 зарезервированны.
В зависимости от типа сообщения апики реагируют по разному. По мимо этого в сообщении указывается вектор, режим тригера.

IPI в переводе меж процессорные прерывания. Оно может быть любым из тех 6 типов. Служит для общения между процессорами\ядрами. IPI генерирует Local APIC, а вернее для посылки IPI’s нужно запрограммировать командные регистры прерывания(ICR- interrupt command register) . Запись в регистры ICR приводит к генерации IPI сообщения и доставки его по шине до процессора. IPI’s могут доставляться как до других процессоров так и до того который вызвал его(само прерывания). В самом сообщении прерывания IPI уже содержит номер прерывания его триггер и др.


Помимо шины у Local APIC есть еще два входа LINT0, LINT1. Эти входы могут быть настроенны поразному. Но в классической схеме. LINT0 настроен как INTR и к нему подключен PIC. Если выбранна схема с IOAPIC то прерывание по LINT0 маскируются. LINT1 настроен как NMI.

Для этих линии вектор тригер и др задается в LVT(локальная таблица векторов) Local APIC.
В LVT также находиться вектор прерывания для таймера апика, вектор ошибки апика

Если пришло сообщение с типом ExtINT. То начинается классическая схема общения с PIC. В таком случии IOAPIC выступает в роле курьера и ничего более.

EOI в Local APIC надо посылать для Fixed, "lowest priority". Путем записи 0 в одноименный регистр.
18K
29 июня 2009 года
logree
102 / / 27.09.2008
За ответ спасибо... но в принципе это-то я всё понял... мне было не понятно где конкретно перенаправлять вектора... нашёл спецификацию по I/O APIC и там всё чётко написано благо разобрался...

Правда остались некоторые непрояснённые моменты:
1. Где конкретно мне потребуется работать с сигналами и как общаться с шиной SMI?
2. что такое Тригер?
3. как перевести
Schmitt Trigger Input pin и что это за сигнал?
Bi-directional Input withOpen Drain Output pin (двунаправленный но откуда куда?)
4. что обозначает что сигнал находиться в low\high voltage leve?
5. к примеру регистр I/O Register Select находиться по адресу FEC0 xy00h, и написано xy=See APICBASE Register in PIIX3, что за PIIX3(по русски).
551
30 июня 2009 года
Pavia
357 / / 22.04.2004
1) Непонял с какими сигналами? Непомню что-бы была шина SMI. SMI это системные прерывания обрабатываемые в SMM режиме. Тебя они не должны касаться.

2) Тригер это логический электрический элемент как транзистр только более интелектуальный существует несколько разновидностей. В IOAPIC у каждого входа есть тригер. Так вот его можно настроеть на два режима уровень или франтом.
если настрон на уровень. Как только сигнал привышает порог тригер буджет выдовать 1. Или фронтом. Когда будет перепад сигнала с низкого на высокий, непомню точном ождет и наоборот.

ISA устройства выдают прерывание импульсом и для таких устройств тригер должен быть настрое на реакцию франтом. Входы 0-15.

PCI устройства напротив сигнализируют о прерывании путем приведения уровня в ноль. Для таких устройст тригер должен быть настрое на уровень и указанна соответсвуюящая полеризация. Входы 16-19 и 20-23.

3) pin - переводиться как иголка или булавка. В применительно к электроники это физический контакт, вывод, ножка микросхемы.

Ножка(pin) может работать как вход (Input) только на прием данных, как выход (Output) только выдавать данные, или может совмещать две функции как на прием так и выдачу други словами дву-направленный(Bi-directional) или еще обозначается I/O (Input/Output) .

Schmitt Trigger разновидность тригера выполняет следующую роль он переводит сигнал произвольной формы в 0 и 1.
Если сигнал пришел на такой вход и он выше порога срабатывания то тригер начинает выдовать постоянное фиксированное значение равное логическому 1. А после того как сигнал опустился ниже порога опускания тригер начинает выдовать 0.

Получается петля гистерезиса. Что лучше чем просто один порог.

with Open Drain Output pin разновидность вывода переводиться как вывод с открым коллектором. Такой выход работает по принцепу унитаза. Drain переводить как слив.

Открыли слив вода утекает. Так и тут. На линии подается напряжение, как только открыли слив с линии сигнал утикает т.е. у него падает уровень. Низкий уровень 1 закрыт коллектор высокий уровень 0.

4)
Замечани. Соответствие высойкий/низкий 1/0 зависит от того как договориться высокий уровень называть логическо 1 и низкий 0 или наоборот 0 и 1 соответственно.

5) PIIX3 Это южный мост для пентиума второго. Обычно по мосту и материнка называется. У нас больше PIIX4 был распространенн.
Согласно MultiProcessor Specification Для совместимости должен быть FEC0 0000h
А вообще если хочешь точно узнать то лучше это делать через ACPI.


http://wiki.osdev.ru/index.php/I/O_APIC
18K
30 июня 2009 года
logree
102 / / 27.09.2008
Ну вроде как понял... ещё раз спасибо.

зы. ссылочку почему-то сам не нашёл :(
18K
09 июля 2009 года
logree
102 / / 27.09.2008
а старшая часть записи в таблице храниться по младшему индексу или наоборот?

и где вы брали спецификацию апика? просто в моей ни чего не сказано про порты IRQPA и EOIR?
551
09 июля 2009 года
Pavia
357 / / 22.04.2004
Помимо PIIX3 PIIX4 у интел есть еще северные мосты ICH1, ... , ICH10 вот в них смотрел. По другим производителям не лазил.

Цитата:
а старшая часть записи в таблице храниться по младшему индексу или наоборот?

В интел формате.

18K
12 июля 2009 года
logree
102 / / 27.09.2008
спасибо, глянул доки на ICH10 - интересное чтиво, особенно регистры SATA.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог