ЖУРНАЛ СТА 1/2015
рование обмена сообщениями осу- ществляется микроядром. Решение проблем совместимости аппаратных устройств с QNX С учётом описанных задач, решаемых ПО блока регистрации, была выбрана аппаратная структура блока (рис. 4), включающая следующие элементы: ● ЦП – процессорная плата IB945F- (ЦП Intel Core 2 Quard Q9300) про- изводства iBASE; ● плата цифрового ввода-вывода PCI- 1734 компании Advantech; ● две платы АЦП PCI-1714 Advantech; ● BlueStorm/SP Opto – многопортовый коммуникационный адаптер – Con- nectTech. Для реализации человеко-машинно- го интерфейса необходимо предусмот- реть наличие монитора с сенсорной па- нелью; был выбран промышленный ЖК-монитор TDM-121 фирмы IEI. Ос- новным критерием выбора данных компонентов системы, кроме необхо- димой функциональности, было нали- чие драйверов производителя под QNX или открытых низкоуровневых описа- ний плат (в случае Advantech). Настройка целевой системы Несмотря на наличие протестирован- ных драйверов всех отдельно взятых устройств, возникла проблема при сборе инструментальной системы в целом. Все используемые платы – 5 единиц – под- ключаются к шине PCI. Выделение ре- сурсов (пространства ввода-вывода и прерываний) осуществляется на уровне BIOS при загрузке системы. Специфика- ция PCI поддерживает возможность ра- боты нескольких устройств с одной ли- нией запроса прерывания. BIOS по умолчанию выделяет одно и то же пре- рывание, например, интегрированному контроллеру Ethernet и одной из плат АЦП. При низкой частоте прерываний такая схема отрабатывает вполне кор- ректно, но на практике при периоде пре- рываний 600 мкс система, если не зави- сает совсем, то надолго засыпает. Для увеличения производительности в QNX 6.5 [7] можно исключить разделение пре- рываний между устройствами, включив поддержку APIC (Advanced Programmable Interrupt Controller), что и было сделано по совету специалистов отдела разработ- ки компании «СВД Встраиваемые Си- стемы». Все устройства в системе при этом получили уникальные IRQ (Inter- rupt Request – аппаратное прерывание). Но проблемы на этом не закончились. Оказалось, что плата BlueStorm/SP Opto не поддерживает работу при загрузке в режиме APIC. По нашей просьбе служба поддержки SWD Software и производи- тель платы ConnectТech доработали стандартный драйвер так, чтобы преры- вания платы получали уникальные пред- установленные номера IRQ, свободные в нашей системе. В итоге мы получили распределение векторов прерываний, показанное на рис. 5, с помощью пер- спективыQNXProfiler. Используя опцию TimeLine, можно убедиться, что все устройства имеют уникальные IRQ: ● 2, 128 – сетевой менеджер io-pkt-v4-hc (интегрированный контроллер Ether- net); ● 3 – драйвер последовательного порта devc-ser8250 (обмен с КУ); ● 17 – драйвер устройства расширения последовательных портов devc- serCtiPciUart (АСУ); ● 18, 19 – платы АЦП (рабочая про- грамма cay1). Стрелками на рис. 5 выделен период прерываний АЦП, который составляет порядка 600 мкс. Оба АЦП работают синхронно. При запуске программы на такой ин- струментальной платформе зависания графического интерфейса и перифе- рийного оборудования отсутствуют. Планирование потоков Микроядро QNX управляет только потоками, и именно потоки можно счи- тать минимальной единицей выполне- ния [1]. Каждый процесс в QNX может содержать один или несколько потоков. В нашем случае требуется параллельное выполнение нескольких алгоритмов в одном процессе. Выбор потока, кото- рый будет выполняться процессором (то есть активно использовать процес- сорное время), и есть планирование по- токов. Микроядро выбирает, какой по- ток будет выполняться в следующий момент времени, основываясь на сле- дующих параметрах потоков: ● приоритет потока (уровень приорите- та потока): каждый поток в ОС РВ QNX6 выполняется с каким-то опре- делённым приоритетом. Чем выше приоритет, тем больше шансов у по- тока получить процессорное время в первую очередь. При наличии в си- стеме двух и более потоков в состоя- нии Ready (готовых к выполнению) микроядро передаст управление тому потоку, чей приоритет выше; 38 СТА 1/2015 РАЗ РА БОТ КИ / ДОБЫВ АЮЩА Я П РОМЫШЛ Е ННОС Т Ь www.cta.ru Модуль процессорный (ЦП) Плата портов АЦП (2) АЦП (1) Плата ввода-вывода Рис. 4. Внешний вид блока регистрации Рис. 5. Распределение прерываний в системе
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy