Главная > Операционные системы > Unix/QNX >
QNX Operating System FAQ. How to
QNX Operating System FAQ
HowTo

Как запустить PCMCIA драйвер

Утилита pcmciatrap может быть очень полезной для определения какой PCMCIA драйвер запустить и с какими параметрами.

pcmciatrap - Autodetect PCMCIA adapter and optionally start correct driver.
pcmciatrap  [options] [query]   Print command line necessary to start driver.
pcmciatrap  [options] start     Start driver.
Options:
 -q      Quiet output
 -v      Verbose output for debugging.

Команда pcmciatrap start запустит соответствующий PCMCIA драйвер для вашей системы.

После того как это будет сделано вы можете использовать команду pin для просмотра PCMCIA статистики.

pin - display information about PCMCIA devices and servers (QNX)
pin [options]...  [command]
Options:
 -n node           Information about server on this node
 -s socket         Information about this socket only (1 based)
Commands:
 status            Show status of each socket (default)
 resources         Port, irq and memory resources
 config            Attempt to make configuration file entries
 cis               Decode CIS on card
 clear             Clear all resource tables on server
 file              Cause server to reread configuration file

Например pin покажет количество слотов и информацию об установленных устройствах:

Sock  Win  Type    Flags            PID    Base   Size   IRQ  Base   Size  DMA
1          Empty   ----MF---------- None
2          Empty   ----MF---------- None
Конфигурирование ресурсов

Следующим шагом следует определить какие ресурсы могут быть использованы PCMCIA картами. PCMCIA Менеджер пытается выделить ресурсы картам когда они устанавливаются, и следует убедиться, что не возникнет конфликта. Для этого нам надо редактировать файл /etc/config/pcmcia.узел . Этот файл может выглядеть примерно так:

[resources]
memory = 0xd0000-0xd1fff
ports = 0x280-0x29f, 0x300-0x33f
rports = 0x2e8+8, 0x3e8+8, 0x170+8, 0x376+2
irqs = 12,7,5,3
[resources]
Эта строка говорит PCMCIA Менеджеру о том, что мы определяем набор ресурсов, который он может использовать, и является обязательной.
memory = 0xd0000-0xd1fff
Это определяет диапазон адресов памяти.
ports = 0x280-0x29f, 0x300-0x33f
Порты ввода/вывода, которые могут быть использованы картами. Если портов недостаточно, то не все устройства смогут запуститься.
rports = 0x2e8+8, 0x3e8+8 0x170+8 0x376+2
Порты ввода/вывода, которые PCMCIA Менеджер не должен использовать.
irqs = 12,7,5,3
Допустимые значения векторов прерываний, которые могут присваиваться картам.
Конфигурирование карт

Чтобы ОС QNX могла автоматически распознавать и конфигурировать карты, информацию о них надо предварительно поместить в специальный файл /etc/config/pcmcia.cards , в котором содержится список всех поддерживаемых карт. Записи имеют тот же формат, что и вывод команды pin config:

; socket 1
[device]
manufacturer = "Socket Communications Inc"
product = "Socket EA PCMCIA LAN Adapter Revision E"
info1 = "Ethernet ID 00C01B006B0D"
regbase = 0x10000
config = 0x01, 0x0601, irq any, io any+32 (width=16)
config = 0x03, 0x0601, irq any, io 0x2a0-0x2bf (width=16)
config = 0x05, 0x0601, irq any, io 0x2c0-0x2df (width=16)
config = 0x07, 0x0601, irq any, io 0x2e0-0x2ff (width=16)
config = 0x09, 0x0601, irq any, io 0x300-0x31f (width=16)
config = 0x0b, 0x0601, irq any, io 0x320-0x33f (width=16)
config = 0x0d, 0x0601, irq any, io 0x340-0x35f (width=16)
config = 0x0f, 0x0601, irq any, io 0x360-0x37f (width=16)
register = 0, 0x40, 0x40     ; level mode interrupts

Любые строки, начинающиеся с '#' или ';' рассматриваются как комментарии и игнорируются.

[device]
Обозначает начало описания устройства.
manufacturer = "Socket Communications Inc"
Имя производителя используется PCMCIA менеджером для сравнения с информацией считанной из Card Information Structure (CIS) при установке карты. Могут использоваться макросимволы типа * ?.
product = "Socket EA PCMCIA LAN Adapter Revision E"
Наименование продукта как оно указывается производителем карты. Если установлены несколько карт одного производителя, то наименование продукта будет использоваться для идентификации карты. Могут использоваться макросимволы.
info1 = "Ethernet ID 00C01B006B0D"
Строки info1 и info2 являются необязательными и содержат дополнительную информацию о карте.
regbase = 0x10000
Эта строка определяет местоположение регистров конфигурации в пространстве регистров карты. По умолчанию 0x100.
config = 0x01, 0x0601, irq any, io any+32 (width=16)
config = 0x03, 0x0601, irq any, io 0x2a0-0x2bf (width=16)
config = 0x05, 0x0601, irq any, io 0x2c0-0x2df (width=16)
config = 0x07, 0x0601, irq any, io 0x2e0-0x2ff (width=16)
config = 0x09, 0x0601, irq any, io 0x300-0x31f (width=16)
config = 0x0b, 0x0601, irq any, io 0x320-0x33f (width=16)
config = 0x0d, 0x0601, irq any, io 0x340-0x35f (width=16)
config = 0x0f, 0x0601, irq any, io 0x360-0x37f (width=16)
Здесь присутствуют следующие поля (слева направо):
индекс
Числовая константа, обозначающая значение индекса конфигурации, которое будет записано в регистр конфигурации карты.
тип
Тип карты.
  • 0x0201 Serial/ modem devices with 8250/16450 devices
  • 0x0301 PC Parallel ports
  • 0x0401 ATA Hard Disk
  • 0x0501 VGA Adaptor
  • 0x0601 NE2000 compatible network card
  • 0x0602 NCR Wavelan Card
  • 0x8001 Adaptec T340 SCSI Adaptor (NCR53C400)
  • 0x8101 New Media .WAVJammer
ресурс
Указывает какие ресурсы требуются в данной конфигурации . Возможные значения:

irq

Определяет присваиваемый карте IRQ. Множество значений может быть указано в виде irq | irq | irq , в этом случае любое из них может быть использовано.
io
Допустимые значения портов ввода/вывода. Возможные варианты описания:
  • начало - конец
  • начало + длина
  • ANY + длина
  • width=8
  • width=16
  • offset=
    offset сейчас не поддерживается
  • mem
    обозначает дипазон памяти с выравниваем по 4K странице

Файл /etc/config/pcmcia.cards содержит текущий список всех описаний, которые работают с QNX. Добавить карту в этот список можно следующим образом:

	pin config > /tmp/pin.cfg
	cat /tmp/pin.cfg >> /etc/config/pcmcia.cards

После добавления необходимо перезапустить PCMCIA Менеджер и выполнить команду pin. Вы должны увидеть что-то вроде этого:


Sock  Win  Type    Flags            PID    Base   Size   IRQ  Base   Size  DMA
1      0   NE2000  C---I-+--------W None   0x280  32     5                     
2          Empty   ----MF---------- None

Возьмите на заметку эти параметры, так как они понадобяться при запуске драйвера устройства.

К сожалению, иногда процесс создания описания бывает более длительным. Если после выполнения команды pin вы получили следующее:


Sock  Win  Type    Flags            PID    Base   Size   IRQ  Base   Size  DMA
1      0   Unknown C---MF---------- None                     
2          Empty   ----MF---------- None

то это означает, что PCMCIA карта обнаружена (флаг С) но ее тип неизвестен. Как правило, причина в том, что в описании карты не указан ее тип. Откройте с помощью текстового редактора файл /etc/config/pcmcia.cards. В поле тип замените во всех строках config= описания этой карты 0xffffffff на одно из перечисленных выше значений (например,если это NE2000-совместимая сетевая карта, то 0x0601).

После изменения файла /etc/config/pcmcia.cards необходимо перезапустить PCMCIA Менеджер и снова выполнить команду pin.

Запуск драйвера устройства

Теперь, когда команда pin правильно определяет карту, осталось только запустить соответствующий драйвер для вашего оборудования. QNX позволяет динамический запуск и остановку драйверов устройств из командной строки. Так для примера с NE2000 совместимой сетевой картой команда будет выглядеть:

	Net.ether1000 -l2 -i5 -p 280 &

Иногда здесь ожидает неприятный сюрприз, например:


Net.ether1000 -l2 -i5 -p320 -v & 
Net.ether1000 Driver Initializing ... 
I/O Port Base ....... 0320 
%3 + 4929 Running Net.ether1000 -l2 -i5 -p320 -v 
Trying as 16 bit card 
Memory Verification Failed, Exiting 
Net.ether1000: INITIALIZATION ERROR 10 Net.ether1000: INITIALIZATION ERROR 04 

В большинстве случаев помогают следущие рекомендации(в зависимости от конкретной ситуации вам может понадобиться выполнить либо оба пункта, либо будет достаточно одного из них):

1)В этом случае мы видим, что в выбранной автоматически конфигурации используются неудачные значения адреса порта и прерывания. Прерывание 5 часто бывает занято, а адрес порта 0x320 обычно используется soundblaster'ом. Принудительно заставьте PCMCIA драйвер выбрать другую конфигурацию карты, для чего измените описание доступных ресурсов в файле /etc/config/pcmcia.узел следующим образом:


[resources]
memory = 0xd4000-0xd5fff
ports = 0x340-0x3ff (было 0x320-0x33f)
irqs = 11, 12

2)в файле /etc/config/pcmcia.cards убрать (width=16) из строк config = ... описания данной карты



©1999 by Nigl
Mail to: qnxworld@mail.ru

Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2002
Сайт создан в системе uCoz