|
|
  |
Прерывания в Linux, Система не реагирует на прерывание |
|
|
|
Sep 18 2012, 05:51
|

Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30

|
QUOTE (Docent86 @ Sep 18 2012, 08:00)  Железо: Одноплатный комп + плата расширения. Софт: ubuntu 8.04, ядро 2.6.24-26-generic исходники модуля для платы расширения Суть: Плата расширения сидит на РС-104 шине (аналог ISA), имеет встроенную память с которой и работаем, вырабатывает прерывания. Прерывания на плате задаются перемычками, соответствующие прерывания включаем в Биосе и при инициализации модуля. Прерывания выбираются согласно манулу на ОПК для исключения конфликтов. Базовый адрес тоже на перемычках и т.д. Чтение/запись памяти платы на отлично, плата работает и вырабатывает прерывания которые можно наблюдать физически (на осцилографе длительность прерывания 500мс). далее - смотрим /proc/interrupts видим наше устройство и счетчик прерываний = 0. Система не видит\не реагирует на поступающее прерывание. --> обработчик прерываний соответственно не запускается. Танцы с бубном в биосе результатов не дали. Где искать что делать? [size="3"][/size] Linux пере-инициализирует контроллер прерываний при загрузке. У Вас PnP PC-104 плата? Linux ее находит? Попробуйте параметры загрузки ядра pci=biosirq /proc/bus/isapnp /proc/bus/eisa dmesg > log Либо обработчик завесился не на то прерывание. Другие драйвера используют это перывание?
|
|
|
|
|
Sep 19 2012, 06:26
|

Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30

|
QUOTE (Docent86 @ Sep 18 2012, 10:26)  Плата не ПнП, в комплекте с платой идут исходники модуля в /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.
|
|
|
|
|
Sep 19 2012, 09:26
|

Участник

Группа: Участник
Сообщений: 43
Регистрация: 2-03-10
Из: С.-Пб.
Пользователь №: 55 772

|
Цитата(gosha @ Sep 19 2012, 10:26)  Шина 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 - Sep 19 2012, 12:17
|
|
|
|
|
Sep 20 2012, 08:10
|

Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30

|
QUOTE (Docent86 @ Sep 19 2012, 15:30)  Наткнулся на форум по 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Убедитесь, что они правильные.
|
|
|
|
|
Sep 20 2012, 08:58
|

Участник

Группа: Участник
Сообщений: 43
Регистрация: 2-03-10
Из: С.-Пб.
Пользователь №: 55 772

|
Цитата(gosha @ Sep 20 2012, 12:10)  Вставьте 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(производятся в Росии)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|