Е.С. Синютин, Ю.И. Волочков

Применение операционных систем реального времени для проектирования микропрограммного обеспечения автономных кардиографов и мобильных полиграфов

Автономные кардиографы, такие как, например, монитор Холтера, раньше имели только одно назначение – длительная регистрация одного, двух или трех каналов ЭКГ и запись на твердотельный или магнитный носитель. От постановки до считывания пользователь мог иметь только одну возможность взаимодействия с прибором – нажатие на тревожную кнопку. Факт и время нажатия регистрировались и сохранялись на носителе. Нажа- тие на тревожную кнопку могло означать все что угодно – это зависело от договоренности с врачом-диагностом. Чаще всего монитор даже не обладал индикацией валидности наложения электродов, что часто приводило к большому числу артефактов в получаемой записи или вся запись могла оказаться артефактной [1].

С развитием вычислительной техники появилась возможность расширить базовую функцию автономного кардиографа. Самым простым, но очень эффективным нововведением является встраивание индицирующего элемента. Это может быть жидкокристаллический индикатор, на который выводятся самые важные сведения о состоянии прибора, ходе записи и, возможно, о состоянии самого пациента. Для расширения опций по настройке записи прибор может быть оснащен пленочной клавиатурой. Эти два улучшения приводят к значительному усложнению алгоритма программы микроконтроллера, который является основой устройства. В табл.1 приведены три типа автономных устройства для съема, записи и хранения ЭКГ с различным набором функций.

Как видно из таблицы, первый прибор имеет всего два потока дан- ных, причем однородных (единый формат и заданная частота поступления данных). Внешнее прерывание одно, причем нажатие тревожной кнопки достаточно редкое событие (максимум 3-6 раз в час). Внутренние прерывания тесно связаны с потоками данных, прерывание от таймера используется для формирования точной частоты дискретизации. Алгоритм микропрограммы для такой системы представлен на рис. 1.

Рис.1. Алгоритм микропрограммы

На блок схеме не указаны прерывания от периферийных устройств, фактически, используя схему «бесконечного цикла», можно оставить только одно прерывание, генерируемое таймером. По этому прерыванию осуществляется сэмплинг и запись полученных данных в буфер. При заполнении буфера необходимо выставить флаг, который затем анализируется в «бесконечном цикле». Если буфер заполнен – вместо него подставляется чистый, а заполненный буфер переписывается во флэш, затем они снова меняются.

Прерывание нажатия тревожной кнопки так же преобразовывается в событие, отслеживаемое в «бесконечном цикле», так как это редкое и достаточно длительное событие. Следует обратить внимание на новое событие, отслеживаемое в цикле – это нажатие кнопки «Запись», по которому инициируется режим записи устройства. Разработчик может сделать две разные кнопки – «Запись» и «Тревога», а может сделать одну кнопку – после включения питания она является кнопкой «Запись», а после инициирования записи становится кнопкой «Тревога».

При таком алгоритме устройство будет иметь несколько режимов работы, например: режим ожидания (после включения питания), режим записи, режим передачи данных (если используется несъемная флэш-память).

Во втором устройстве, представленном в табл. 1, появляется два дополнительных потока данных, и эти потоки неоднородны. Их невозможно синхронизировать по единственному прерыванию таймера. Необходимо использовать второй таймер или добавлять новые флаги и события в «бесконечный цикл». Если действовать в рамках подобной идеологии, то любые дополнительные режимы и функции можно организовать, только вводя дополнительные флаги и усложняя логику бесконечного цикла, причем резко усложняется тестирование, если эти режимы должны включаться по событиям (возможны взаимные блокировки). Из литературы известно [2], что наличие трех потоков данных и пяти асинхронных прерываний приводит к ситуации, когда операционная система реального времени (ОСРВ) становится более экономичным решением, особенно с учетом надежности программного продукта и возможной его модификации.

Для современных микроконтроллеров на рынке присутствует большое количество ОСРВ, как специализированных (под конкретные семейства микроконтроллеров), так и портируемых практически под любой контроллер соответствующей архитектуры. В табл. 2 приведены некоторые наиболее популярные из существующих ОСРВ [3,4,5].

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

Как видно из рис. 2, в данную систему разработчик легко сможет добавлять новые потоки данных или процессы, взаимодействующие с потоками или между собой. Причем каждый процесс может быть унифицирован как блок, с изменяемыми характеристиками. Например, процессы запись данных в буфер и запись из буфера в память могут быть фактически одинаковыми блоками с различными настройками. При использовании ОСРВ один таймер будет использоваться операционной системой для генерации системных тиков, квантов времени, величина которых зависит от быстродействия системы.

Для современных мобильных полиграфов с числом каналов более двух, средствами индикации и управления режимами, использование ОСРВ представляется более целесообразным, чем разработка уникальной программы, использующей принцип «round robin». В качестве ОСРВ для малопотребляющего МПК типа MSP-430 при программировании в среде IAR Embedded Workbench C можно использовать ОСРВ Salvo.

Рис.2. Распределение потоков данных между процессами

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Макаров Л.М. Холтеровское мониторирование. 2-е изд. – М.: ИД «Медпрак- тика-М». 2003. – 340 с.

2. Сорокин С. Системы реального времени. – СТА 2/97. – М.: СТА-ПРЕСС, 1997. – С. 28-29.

3. www.salvo.com.

4. www.embos.com.

5. www.uros.com.