Упрощение разработки приложений для Linux/WinCE


PDF версия

В статье предложен способ упрощения разработки приложений, работающих в режиме реального времени, с помощью 8- и 32-разрядных микроконтроллеров (МК).

Многих удивит, что об операционной системе (ОС) Linux/WinCE говорится применительно к 8-разрядным МК. Однако имеется в виду то, что часть нагрузки, а именно функции, требующие отклика в режиме реального времени, переносятся с основного процессора на МК. При этом процессор отвечает только за работу ОС. С аппаратной точки зрения система усложняется, однако разработка и поддержание программных приложений становятся намного проще.
Это происходит за счет синергии: использование МК совместно с процессором дает определенные преимущества, которые оправдывают издержки. Если рассматривать это решение с  чисто аппаратной точки зрения, то преимущества сложно заметить. Программные преимущества более очевидны, когда требуется много портов ввода-вывода общего назначения или портов ввода-вывода для устройств, работающих в режиме реального времени. Для определенности условимся, что под работой в режиме реального времени будем иметь в виду, что задержка отклика на события составляет микросекунды.
МК Freescale поддерживают все основные виды ОС: Linux, Android и WinCE и имеют большое количество портов. ОС обеспечивает наиболее распространенные графические интерфейсы, интерфейсы для воспроизведения медиафайлов и имеет мощные коммуникационные стеки и т.д. МК оснащены всеми периферийными возможностями для обеспечения работы в режиме реального времени. Они отвечают жестким временным требованиям большинства электромеханических систем. Типичными областями промышленного применения МК являются системы управления двигателем или датчики движения.В этих же приложениях они могут существенно упростить разработку программного кода.
Гораздо сложнее работать с многопроцессорными системами, поскольку необходимо управлять передачей данных между ними. Для решения этой проблемы в современных прикладных процессорах предусмотрены встроенные периферийные интерфейсы, в т.ч. Ethernet, USB, UART, I2C и SPI. В программном обеспечении (ПО) МК есть драйверы I2C, SPI и USB для открытых ОС Linux, Android и WinCE.

Упрощение программной разработки

За счет чего происходит упрощение, рассмотрим на примере 3-координатного промышленного акселерометра, который является одним из наиболее распространенных типов датчиков и часто используется для детектирования вибраций и ориентации. Сейчас их можно использовать даже для ввода пользователя.
Алгоритмы детектирования вибрации и несанкционированных подключений к линии являются яркими примерами работы в масштабе реального времени. Они сложно реализуются в ОС, например, Linux. Допустим, требуется написать драйвер для захвата необработанных данных с 3-координатного датчика через прерывание таймера. Частота считываний составляет примерно 350 Гц, данные хранятся в буфере. Когда он заполняется, активизируется пространство пользователя, данные переписываются в него, и производится обработка (БПФ, фильтрация, распознавание импульсной последовательности). На этом этапе важно объективно оценить и сравнить затраты на разработку программного кода. Например, сколько времени может уйти на написание и отладку кода, если уже имеется опыт разработки драйверов для Linux?
Теперь рассмотрим, как эта же задача может быть выполнена с помощью отдельного МК, который будет производить все вычисления в реальном времени. Для примера возьмем MMA9550L Freescale — интеллектуальный 3-координатный акселерометр со встроенным 32-разрядным МК (см. рис. 1). МК имеет встроенные алгоритмы выполнения многих типичных задач акселерометра: детектирование подключения, в т.ч. двойного, к линии, фильтрация, детектирование достижения пороговых значений, простая очередь. Буфер FIFO может быть использован для замены специализированного драйвера. Есть возможность создания собственных пользовательских алгоритмов и хранения их во флэш-памяти MMA9550.

 

Рис. 1. Структура MMA9550L

В [1] подробно разобрано, как реализовать алгоритм БПФ на МК MMA9550L. Данный датчик со встроенным МК позволяет полностью разгрузить процессор от обработки в режиме реального времени. Таким образом процессор только считывает предварительно обработанные данные через интерфейс I2C. Микросхему MMA9550L можно использовать в качестве концентратора результатов измерения, который направляет и обрабатывает данные от всех датчиков в системе.

Выводы общего назначения

В каждом промышленном проекте нужны порты ввода-вывода общего назначения. Часто требуется функция считывания или генерации импульсов с точно заданными параметрами. Некоторые задачи гораздо эффективнее решаются не на прикладном процессоре, а на МК. Хотя прикладные процессоры имеют много выводов, они используются для реализации внешних интерфейсов. Если лишних выводов не остается, следует задействовать порты ввода-вывода МК.
8-разрядные МК Freescale семейства S08JM (см. рис. 2) с полноскоростным USB содержат до 51 вывода общего назначения, 12-разрядный АЦП и 8 таймеров. С их помощью можно генерировать или считывать 4 сигнала ШИМ и одновременно считывать до 12 аналоговых каналов. После предварительной обработки результаты отсылаются в процессор по шине USB. С помощью свободного загрузочного модуля JM Freescale можно программировать МК с прикладного процессора. МК JM с USB можно рассматривать как расширение семейства прикладных процессоров i.MX. В пакет бесплатного ПО для S08JM входят программа самозагрузки, USB HID-стек, оконечный USB-стек, USB CDC-стек для поддержки виртуальных последовательных устройств (см. рис. 3). С помощью LibUSB можно разрабатывать интерфейсы HID и интерфейсы широкого применения на Linux или Android, чтобы обмениваться данными с JM из пользовательского пространства приложения. Через стек CDC ядро Linux обменивается данными с JM по виртуальному последовательному каналу.

 

Рис. 2. Архитектура 8-разрядных МК Freescale S08JM

Рис. 3. Стек USB


Литература
1. AN3751-Frequency analysis in the industrial market//www.freescale.com.
2. Gregori Е. It takes two to tango: simplifying Linux/WinCE real-time applications development using 8- and 32-bit low-cost microcontrollers//www.eetimes.com.

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *