Решение проблем совместимости аппаратных устройств с QNX

С учётом описанных задач, решаемых ПО блока регистрации, была выбрана аппаратная структура блока (рис. 4), включающая следующие элементы:

• ЦП — процессорная плата IB945F-(ЦП Intel Core 2 Quard Q9300) производства iBASE;

• плата цифрового ввода-вывода PCI-1734 компании Advantech;

• две платы АЦП PCI-1714 Advantech;

• BlueStorm/SP Opto — многопортовый коммуникационный адаптер — СоnnectTech.

Для реализации человеко-машинного интерфейса необходимо предусмотреть наличие монитора с сенсорной панелью; был выбран промышленный ЖК-мониторTDM-121 фирмы IE1. Основным критерием выбора данных компонентов системы, кроме необходимой функциональности, было наличие драйверов производителя под QNX или открытых низкоуровневых описаний плат (в случае Advantech).

Несмотря на наличие протестированных драйверов всех отдельно взятых устройств, возникла проблема при сборе инструментальной системы в целом. Все используемые платы — 5 единиц — подключаются к шине PCI. Выделение ресурсов (пространства ввода-вывода и прерываний) осуществляется на уровне BIOS при загрузке системы. Спецификация PCI поддерживает возможность работы нескольких устройств с одной линией запроса прерывания. BIOS по умолчанию выделяет одно и то же прерывание, например, интегрированному контроллеру Ethernet и одной из плат АЦП. При низкой частоте прерываний такая схема отрабатывает вполне корректно, но на практике при периоде прерываний 600 мкс система, если не зависает совсем, то надолго засыпает. Для увеличения производительности в QNX 6.5 [7] можно исключить разделение прерываний между устройствами, включив поддержку APIC (Advanced Programmable Interrupt Controller), что и было сделано по совету специалистов отдела разработки компании «СВД Встраиваемые Системы». Все устройства в системе при этом получили уникальные IRQ (Interrupt Request — аппаратное прерывание). Но проблемы на этом не закончились. Оказалось, что плата BlueStorm/SP Opto не поддерживает работу при загрузке в режиме APIC. По нашей просьбе служба поддержки SWD Software и производитель платы ConnectTech доработали стандартный драйвер так, чтобы прерывания платы получали уникальные предустановленные номера IRQ, свободные в нашей системе. В итоге мы получили распределение векторов прерываний, показанное на рис. 5, с помощью перспективы QNX Profiler. Используя опцию TimeLine, можно убедиться, что все устройства имеют уникальные IRQ:

• 2, 128 —сетевой менеджер io-pkt-v4-hc (интегрированный контроллер Ethernet);

• 3 — драйвер последовательного порта dcvc-scr8250 (обмен с КУ);

• 17 — драйвер устройства расширения последовательных портов devc-serCtiPciUart (АСУ);

• 18, 19 — платы АЦП (рабочая программа cayl).

Стрелками на рис. 5 выделен период прерываний АЦП, который составляет порядка 600 мкс. Оба АЦП работают синхронно.

При запуске программы на такой инструментальной платформе зависания графического интерфейса и периферийного оборудования отсутствуют.

08.02.2014

Добавить страницу в мои закладки:

Смотрите также:

Что вы чаще всего делаете в Интернете?

Загрузка ... Загрузка ...