Перейти к содержанию
    

Прерывания в Linux

Железо:

Одноплатный комп + плата расширения.

Софт:

ubuntu 8.04, ядро 2.6.24-26-generic

исходники модуля для платы расширения

Суть:

Плата расширения сидит на РС-104 шине (аналог ISA), имеет встроенную память с которой и работаем, вырабатывает прерывания. Прерывания на плате задаются перемычками, соответствующие прерывания включаем в Биосе и при инициализации модуля. Прерывания выбираются согласно манулу на ОПК для исключения конфликтов. Базовый адрес тоже на перемычках и т.д. Чтение/запись памяти платы на отлично, плата работает и вырабатывает прерывания которые можно наблюдать физически (на осцилографе длительность прерывания 500мс). далее - смотрим /proc/interrupts видим наше устройство и счетчик прерываний = 0. Система не видит\не реагирует на поступающее прерывание. --> обработчик прерываний соответственно не запускается.

Танцы с бубном в биосе результатов не дали. Где искать что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Железо:

Одноплатный комп + плата расширения.

Софт:

ubuntu 8.04, ядро 2.6.24-26-generic

исходники модуля для платы расширения

Суть:

Плата расширения сидит на РС-104 шине (аналог ISA), имеет встроенную память с которой и работаем, вырабатывает прерывания. Прерывания на плате задаются перемычками, соответствующие прерывания включаем в Биосе и при инициализации модуля. Прерывания выбираются согласно манулу на ОПК для исключения конфликтов. Базовый адрес тоже на перемычках и т.д. Чтение/запись памяти платы на отлично, плата работает и вырабатывает прерывания которые можно наблюдать физически (на осцилографе длительность прерывания 500мс). далее - смотрим /proc/interrupts видим наше устройство и счетчик прерываний = 0. Система не видит\не реагирует на поступающее прерывание. --> обработчик прерываний соответственно не запускается.

Танцы с бубном в биосе результатов не дали. Где искать что делать?

 

Linux пере-инициализирует контроллер прерываний при загрузке.

У Вас PnP PC-104 плата? Linux ее находит?

Попробуйте параметры загрузки ядра pci=biosirq

 

/proc/bus/isapnp

/proc/bus/eisa

dmesg > log

 

Либо обработчик завесился не на то прерывание.

Другие драйвера используют это перывание?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плата не ПнП, в комплекте с платой идут исходники модуля

в /proc/bus/ только input, pci, usb

в dmesg три записи о модуле :

no version for "struct_modules" found: kernel tainted

module license 'uncpecified' taints kernel

registered device..

 

никто другой прерывание не использует, прерывание назначается при загрузке insmod'ом с параметрами

isapnp: No Plug & Play devices found

Хотя сама плата работает - в ее память можно записать и считать данные, плата понимает команды управления и вырабатывает прерывание по результатам работы!!!

плата занимает два прерывания назначаемые параметрами при инициализации модуля, в /proc/interrupts эти два прерывания числятся под соотв номерами... но только числятся. значения = 0. в /dev/ устройство тоже есть. В биосе ОПК пробовали отключать ACPI, запускали ядро с параметрами не помогает

Изменено пользователем Docent86

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плата не ПнП, в комплекте с платой идут исходники модуля

в /proc/bus/ только input, pci, usb

в dmesg три записи о модуле :

no version for "struct_modules" found: kernel tainted

module license 'uncpecified' taints kernel

registered device..

 

никто другой прерывание не использует, прерывание назначается при загрузке insmod'ом с параметрами

isapnp: No Plug & Play devices found

Хотя сама плата работает - в ее память можно записать и считать данные, плата понимает команды управления и вырабатывает прерывание по результатам работы!!!

плата занимает два прерывания назначаемые параметрами при инициализации модуля, в /proc/interrupts эти два прерывания числятся под соотв номерами... но только числятся. значения = 0. в /dev/ устройство тоже есть. В биосе ОПК пробовали отключать ACPI, запускали ядро с параметрами не помогает

 

Шина PCI или Express ?

 

Linux при старте может запрещать роутинг прерываний в isa-pci bridge, если не находит на ISA плат.

Это регистры pci-isa bridge. Или irq isa роутятся не так, как мы думаем?

 

 

Я бы, для начала, установил 4 любые карточки во все слоты PCI.

Определил бы их прерывания(/proc/interrupt)

Выгрузил бы драйвера карточек.

И последовательно завесился драйвером от PC-104 на их IRQ.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Шина PCI или Express ?

 

Linux при старте может запрещать роутинг прерываний в isa-pci bridge, если не находит на ISA плат.

Это регистры pci-isa bridge. Или irq isa роутятся не так, как мы думаем?

 

 

Я бы, для начала, установил 4 любые карточки во все слоты PCI.

Определил бы их прерывания(/proc/interrupt)

Выгрузил бы драйвера карточек.

И последовательно завесился драйвером от PC-104 на их IRQ.

 

Шина PC-104 - это такой аналог ISA шины при котором устройства ставятся одно на другое сверху третье, поэтому слот только один, используется на промышленных одноплатных компьютерах (ОПК).

Плата не ПнП и ИРКю назначаются ручками при инициализации драйвера - insmod с параметрами, и на плате джамперами соотв. IRQ выбирается в соответствии с мануалом на ОПК в котором указано какие ИРКю выделены для PC-104 шины. Если IRQ выбрать не из списка модуль(драйвер) не запуститься всвязи с тем что IRQ уже используется. При загрузке ядра идет поиск ISA PnP устройств и естественно не находит т.к. не ПнП плата.

 

 

Да скорее всего IRQ isa как-то роутятся непонятно.

Как разрешить роутинг isa-pci?

 

P.S. - lspci:

00:01.0 PCI bridge: VIA Technologies, Inc. VT8605 [ProSavage PM133]

00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [PM133 AGP]

Изменено пользователем Docent86

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наткнулся на форум по QNX - там ребята с этой же платой работают и у них точно такая же проблема. Под "окнами" и ДОСом плата работает нормально, в КуНиксе ошибка по прерываниям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наткнулся на форум по QNX - там ребята с этой же платой работают и у них точно такая же проблема. Под "окнами" и ДОСом плата работает нормально, в КуНиксе ошибка по прерываниям.

 

Все ISA прерывания через pci-isa bridge подключаются в прерывания PCI.

Физичесики на шине их всего 4 провода: pci_irq_a, pci_irq_b, pci_irq_c, pci_irq_d

 

Вставьте 4 карточки в 4 первых слота PCI и узнайте их прерывания.

Не вытаскивайте пока карточек. Выгрузите их драйвера, чтобы не испортить распределение и маскирование irq в контроллере.

И завесьте обработчик последовательным перебором на каждое из прерываний PCI.

 

Не спорьте.

 

 

=========================================================

 

Какое ISA прерывание в какую PCI_irq line (a.b.c.d) map-ятся?

Какие номера irq соответсвуют pci_irq_a, pci_irq_b, pci_irq_c, pci_irq_d

 

Содержимое регистров 0x60, 0x61, 0x62, 0x63 Pci-ISA bridge?

http://www.openwatcom.org/index.php/PCI_Interrupt_Routing

Убедитесь, что они правильные.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вставьте 4 карточки в 4 первых слота PCI и узнайте их прерывания.

СЛОТ ОДИН -> РС-104 )))

сегодня другую "материнку" принесли (производители разные), переставил CompactFlash на новую, установил испытуемую плату, включил все работает. Но в новой "материнке" в настройках Биоса если отключить ISA bridge subtractive decode (управление субтрактивным декодированием моста PCI-ISA) не только IRQ игнорируются, но и обмен данными. На старой "материнке" Биос "убогий" и в нем нет такой возможности как и многих других.

Теперь основной вопрос можно перефразировать - "Как включить не через настройки Биоса ISA bridge subtractive decode"

P.S. старая "материнка" - Octagon Systems XE-900 (USA), новая - Faswel CPC308-01(производятся в Росии)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тему можно закрывать.

Помогло отключение SMM (System Management Mode).

ACPI на этот момент уже был отключен.

На другом процессорном модуле это делается включением ISA bridge subtractive decode (управление субтрактивным декодированием моста PCI-ISA)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...