IRQ's unmasking problem

Internal structure and you change requests/suggestions
  • это все прекрасно.. но когда данная проблема решится? Serge, в твоей сборке это будет (или уже) сделано?..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Не знаю когда решится. Моя сборка будет не скоро. Для себя каждый может решить проблему сам.
    Найти в kernel.asm

    Code: Select all

            cli                          ;guarantee forbidance of interrupts.
            mov   al,0                   ; unmask all irq's
            out   0xA1,al
            out   0x21,al
    и поставить необходимую маску.
    Проблема в том что одинакового для всех набора устройств уже нет. COM LPT FDC могут отсутствовать или быть отключены и BIOS назначит их линии другми устройствам. Поэтому чтобы сделать маску прерываний надо определить все занятые линии и кем они заняты.
  • В интернете видел описание PCI в линуксе. Там написанно что идет маскирование по тайм ауту в случии непрерывных прерываний. Есть два типа прерываний ISA и PCI. C PCI все просто 4 линии определить/назначить не сложно через PCI BIOS это для PIC. Для APIC они фиксированны 16-19, а 20-23 - резерв или дополнительные 4 линии. Часть PCI Устройств поддерживают переназначение прерывания через MSI.
    ISA и PCI прерывания не могут быть смешанны. ISA прерывания стандартны. Но часть могут и отсутствовать.
    Собственно предлогаю добавить строчку которая закидывает PCI линии на свободные места 9 10 11 . На одном два не денишься.
    Выяснить ISA прерывания можно через PnP BIOS.

    А вообще APIC это просто. Его только инициализировать вернее и инициализировать не надо биос настраивает только включить нужный режим и все а это не трудно. Учесть только что прерывания имеют другой порядок. :roll:
  • А как пронумеровать устройства в системе ?
  • Пересмотрел свои записи. Можно поступить проще и правельнее. Используя PCI BIOS(руки не дошли до перевода) или через структуру
    PCI IRQ Routing Table Specification(ее я перевел) можно найти все IRQ которые отведены под PCI. Вот их и замаскировать, а драйвера устройств пусть размаскируют. Вернее этим должен заниматься мэнеджер PCI, но по требованию драйвера.
    А как пронумеровать устройства в системе ?
    Все чтоли?
    В любом случии я склонен к идеии того что надо писать драйвер под чипсет и один универсальный. Распозновать чипсет и биос.
    Тут три источника для нумирации PCI пройтись по всем устройствам и PnP BIOS(это для ISA устройств) еще в довесок ACPI.
    Понимаю что ACPI не первостипенная задача его можно опустить.
  • А как нумеровать через PnP BIOS ?

    Мне нравится идея замаскировать всё. Для com и ps/2 мышей есть нормальные драйверы. FDC наверное определяется через порты. Таймер, клава, IDE известны. Остальное нафиг.

    Но сделать определитель всего оборудования полезно.
  • Вот пример перечесления всех PnP устройств. Вывод рессурсов я не делал руки не дошли.Расшифровка PnP кодов в файле devids.txt
    Нужна две спецификации PnP BIOS и PnP ISA. В архиве также мои записи по программированию железа:
    PnP, DMI, PCI, SMBus, HDD, PIC и APIC(Local и I/O).

    http://homepage0.icehard.net/files/hard ... helezo.zip
  • Пишет "Not found"
  • У меня качает. Попробуй ещё раз).
    Из хаоса в космос
  • Только что перезалил. Критика приветствуется.
  • Спасибо.
  • Who is online

    Users browsing this forum: No registered users and 36 guests