APIC
Кто нибудь расскажите по-подробнее.
Все 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 в одноименный регистр.
Правда остались некоторые непрояснённые моменты:
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(по русски).
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
зы. ссылочку почему-то сам не нашёл :(
и где вы брали спецификацию апика? просто в моей ни чего не сказано про порты IRQPA и EOIR?
Цитата:
а старшая часть записи в таблице храниться по младшему индексу или наоборот?
В интел формате.
спасибо, глянул доки на ICH10 - интересное чтиво, особенно регистры SATA.