OSDev http://osdev.su/ |
|
APIC http://osdev.su/viewtopic.php?f=7&t=535 |
Страница 3 из 3 |
Автор: | Станислав [ 16 июн 2012, 16:54 ] |
Заголовок сообщения: | Re: APIC |
Вычитал, что PCI прерывания у APICа после 16го и в настройках нужно включать 15 и 13 бит для них. Кстати посмотрел в настройках устройств у винды и действительно у сетевушки для PIC было 11 а для APIC 17 и сошлось проверкой опытным путём у себя. Для AHCI было 15(22) тоже сошлось, для HDA тоже сошлось Где смотреть какое у APICа зная PICовское |
Автор: | Nable [ 17 июн 2012, 13:42 ] |
Заголовок сообщения: | Re: APIC |
В mptable и $PIR такое пишут, но это уже deprecated, нынче всё через ACPI, хотя на весьма новых железках внезапно mptable оказывалась рабочей. Почитать можно тут: http://people.freebsd.org/~jhb/papers/b ... node5.html , но зная твой подход, можешь сразу качать pirtool.c и mptable.c из freebsd'шной репы и собирать (оно в т.ч. и под линухом прекрасно собирается с небольшими изменениями, и даже под голое железо), смотреть на выхлоп, если устраивает - разбираться как работают эти парсеры. Строго говоря, если не верить этим таблицам и пытаться выяснять из оборудования, то оно весьма чипсетозависимо, ибо есть нередко ещё interrupt router, который можно перепрограммировать, меняя соответствие между выходами от карт расширения и входами I/O APIC'а. Плюс, 2012 на дворе, надо по-возможности переходить на MSI/MSI-X, оно очень клёвое и тупо устройству вектор даёшь, оно его и шлёт. |
Автор: | Станислав [ 17 июн 2012, 13:49 ] |
Заголовок сообщения: | Re: APIC |
Nable писал(а): В mptable и $PIR такое пишут, но это уже deprecated, нынче всё через ACPI, хотя на весьма новых железках внезапно mptable оказывалась рабочей. А, вообще, оно весьма чипсетозависимо, ибо есть нередко ещё interrupt router, который можно перепрограммировать, меняя соответствие между выходами от карт расширения и входами I/O APIC'а. Плюс, 2012 на дворе, надо по-возможности переходить на MSI/MSI-X, оно очень клёвое. Что даёт MSI, я его включал так для сетевушки, я всмысле, она даёт приемущества только по определению на любоё вектор и побыстрее работает ;push eax ;mov ebx,0FEC00020h ;mov eax,84 ;Message Address ;call pci_w32 ;mov ebx,0 ;mov eax,88 ;Message Address ;call pci_w32 ;mov bx,17 ;mov eax,92 ;Message Data ;call pci_w16 ;mov eax,82 ;Message Control ;call pci_r8 ;mov bl,al ;or bl,0100001b ;включим MSI ;mov eax,82 ;Message Control ;call pci_w8 ;pop eax правда ещё не отладил |
Автор: | diablo [ 23 ноя 2013, 18:35 ] |
Заголовок сообщения: | Re: APIC |
Что-то не могу разобраться с APIC Вроде инициализируется, пишу в IOAPIC вектор, но обработки не происходит... Где-то читал, что для правильной работы APIC нужно чтоб были замаскированы все(?) прерывания на 8259 (PIC) - это действительно так? Разве нельзя использовать старый PIC(8259) для обработки IRQ0-15 и APIC для обработки прерываний от PCI? Код: cpu0 = { local_apic = { base_addr = 0xfee00000 apic_id = 0x00000000 mode = 0x00000002 spurious_vector = 0x27 software_enabled = true focus_disable = false task_priority = 0x00000000 ldr = 0x00000000 dest_format = 0x0000000f isr = { 0x20 = 1 } } } если я правильно понимаю, то isr это запрос прерывания, вектор 0x20, т.е. IRQ0... или нет? если это так, то почему не происходит вызова вектора 0x80 для IRQ0 (согласно redirect table) ? Код: ioapic = { ioregsel = 0x00000023 intin = 0x00000004 irr = 0x00004066 ioredtbl = { 0x00 = { lo = 0x00000080 hi = 0x00000000 } 0x09 = { lo = 0x0000a029 hi = 0x00000000 } } } Подскажите, пожалуйста... Уже вторую неделю мучаюсь... |
Автор: | Himik [ 23 ноя 2013, 23:47 ] |
Заголовок сообщения: | Re: APIC |
В структурах весьма условные сведения. Покажи весь код программирования Local APIC и IO APIC. PIC и APIC вместе не работают. Да, PIC лучше замаскировать, но в принципе это не влияет на работу APIC, прерывания работают в любом случае. Учти, что линии прерываний PCI в APIC настраиваются иначе, и имеют другие номера IRQ16..IRQ23. Какие атрибуты у тебя в элементе 0x09, такие же используются и для прерываний PCI. Здесь на сайте что-то такое уже обсуждалось: viewtopic.php?f=5&t=706 viewtopic.php?f=6&t=797 |
Автор: | diablo [ 24 ноя 2013, 16:24 ] |
Заголовок сообщения: | Re: APIC |
Himik писал(а): Покажи весь код программирования Local APIC и IO APIC Стал смотреть код, чтоб сюда вставить и БАЦ(!) - меня осенило - я тупо забыл выполнить call init_ioapic Т.е. я проинициализировал APIC (о чем в логах успешно отписал Bochs), прописал вектор в IOAPIC, но включить-то последний забыл) |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |