Автоматизированные системы контроля и управления РЭС, конспект лекций, страница 29

Рис. 5.2.

FFT - fast Fourier transform.

Каждый из основных модулей в свою очередь разделяются на подмодули (подзадачи).

Обычно программа пишется на языке высокого уровня с использованием стандартных библиотек обработки, графики и включением ассемблерных процедур и вставок. Это в первую очередь процедуры взаимодействия с устройствами В/В или иначе драйверы устройств.

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

Таким образом, к специальным задачам проектирования ПО ССОД можно отнести разработку драйверов устройств и гибридное программирование, т.е. программное с использованием языков высокого уровня и ассемблера. Дополнительные проблемы возникают также при программировании мультипроцессорных систем (разделение задач между МПС и их взаимодействие на программном уровне).

5.2. Разработка программных драйверов устройств

Выполняется, как правило, в виде библиотеки ассемблерных процедур. С некоторыми элементами разработки одномодульных ассемблерных драйверов мы познакомились на примере программирования модуля аналогового В/В RD1.

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

AD_IN (channel, result) - ввод данных АЦП с канала channel, с записью в ячейку result.

ADC (channel, interval, data, length, background) - ввод данных АЦП с канала channel (одного или многих), через заданные интервалы времени interval, с записью в массив data длиной length в фоновом режиме (background=1) или в основном (background=0); фоновой режим - это может быть по прерыванию или ПДП, основной - это программно-управляемый.

DA_OUT (channel, value) - вывод значения value на ЦАП канала channel.

DA_OUTPUT (channel, interval, array, length).

DA_X_Y_OUT (channel_x, channel_y, array_x, array_y, interval, length) - одновременный вывод двух массивов - для двух координатных систем.