Java

Прогрессивные GSM-модули на J2ME

№ 2’2010
PDF версия
Технология Java играет ключевую роль в разработке успешных технических решений для межмашинного взаимодействия, являясь одной из наиболее широко применяемых в мире платформ для программирования. Java — это миллиарды устройств, находящихся в эксплуатации, а также обширное и преданное сообщество разработчиков. Вдобавок Java является одним из наиболее популярных языков программирования, используемых при обучении в университетах всего мира.

Java ME (J2ME) — это мощная встраиваемая платформа, предназначенная для мобильных устройств. Она помогает клиентам, работающим в сфере межмашинного взаимодействия (M2M), в максимальной степени расширить функциональные возможности своих разработок. Почти на каждом вертикальном рынке M2M, включая считывание показаний интеллектуальных счетчиков, управление парком воздушных судов, промышленную автоматизацию и многое другое, были успешно внедрены системы на базе J2ME.

Компания Cinterion Wireless Modules, известный производитель беспроводных M2M-модулей стандарта GSM, продолжает с успехом применять технологию Java в своей продукции. Очередной вехой на этом пути стали два новых продукта компании на проверенной временем платформе Java ME — TC65i и EGS5.

Первый GSM-модуль Cinterion на встраиваемой платформе Java — TC45 — увидел свет около 7 лет тому назад. С тех пор компания реализовала миллионы Java-модулей (500 000 шт. в одном только 2009 г.), которые теперь работают в сложных M2M-системах, требующих надежной долгосрочной поддержки. С новым четырехдиапазонным GSM-модулем TC65i и его модификацией в корпусе LGA для поверхностного монтажа, EGS5, включающими в себя последние новинки платформы Java ME, компания Cinterion развивает свой успех в применении этой важной технологии.

 

Java и Cinterion: преимущества для клиента

Поддержка Java в совокупности с фирменными M2M-функциями Cinterion закладывает мощную базу для проектирования и разработки, обеспечивая клиентам и системным интеграторам многочисленные преимущества, в числе которых:

  • высокий уровень безопасности и защищенности системы в соответствии с сертификатами X.509;
  • встроенные средства отладки;
  • высокая стабильность, отсутствие перезагрузок системы, полная вытесняющая многопоточность с квантованием времени;
  • мощный набор фирменных прикладных программных интерфейсов (API) для M2M;
  • постоянно совершенствуемый набор средств CMTK (Cinterion Mobility Toolkit);
  • загрузка Java-приложений по эфирным каналам (over-the-air provisioning, OTAP);
  • инкрементные обновления платформы Java;
  • обновление микропрограммы по эфирным каналам (firmware update over the air, FOTA);
  • бесплатный компилятор;
  • встроенная память в Java-модуле (1,7 Мбайт);
  • средство затруднения восприятия кода, MES.

Кроме того, для Java имеются высококачественные бесплатные интегрированные среды разработки — NetBeans (Oracle/SUN) или Eclipse (IBM).

В совокупности все это обеспечивает очень высокую скорость разработки и позволяет существенно снизить затраты на этом этапе. Разработчики могут легко встраивать свои приложения в GSM-модуль на платформе Java с несколькими периферийными интерфейсами (рис. 1).

Интеграция приложения клиента в GSM-модуле (источник: Cinterion)

Рис. 1. Интеграция приложения клиента в GSM-модуле (источник: Cinterion)

 

Общая программная архитектура

Платформа Java ME представляет собой набор технологий и спецификаций, которые в совокупности обеспечивают Java-устройствам и приложениям клиентов максимально дружественный к пользователю интерфейс. Это особенно актуально на высококонкурентном рынке, таком как M2M, где множество поставщиков стремится предложить своей целевой аудитории нечто уникальное.

Конфигурация для небольших устройств называется CLDC (Connected Limited Device Configuration) и является фундаментальной составной частью архитектуры платформы Java 2 Micro Edition (JME, J2ME). Технология JME делится на наборы прикладных программных интерфейсов (API), называемые конфигурациями, профилями и дополнительными пакетами, например, CLDC и Mobile Information Device Profile (MIDP, предназначенный для мобильных информационных устройств). Дополнительные пакеты обеспечивают бонусную функциональность, такую как обмен сообщениями по беспроводным каналам связи или запись и воспроизведение мультимедиа.

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

Профиль — это набор стандартных API, поддерживающих узкую категорию устройств в рамках выбранной конфигурации. Конкретный профиль, например MIDP, предназначенный для мобильных информационных устройств, в сочетании с конфигурацией, такой как CLDC, образует законченную и функционально богатую прикладную Java-среду для целевого класса устройств.

Дополнительный пакет — это набор ориентированных на конкретную технологию API, расширяющих функциональность прикладной Java-среды. Разработчики ПО могут использовать API, предоставляющие легкий доступ к аппаратным компонентам конкретного устройства, не получая в нагрузку API, ориентированные на функциональность, которая не поддерживается данным устройством. CLDC поддерживает ряд дополнительных пакетов, позволяющих проектировщикам выдерживать баланс между функциональными требованиями конструкции и ресурсными ограничениями (рис. 2). Беспроводные модули Cinterion поддерживают конфигурацию CLDC HI 1.1 и пакет IMP-NG, являющийся подмножеством профиля MIDP.

Конфигурация интерфейсов Java M

Рис. 2. Конфигурация интерфейсов Java M

 

Пакеты и классы Java

Базовые пакеты, наследуемые из Java Standard Edition:

  • java.lang — фундаментальные классы;
  • java.util — классы коллекций, даты и времени;
  • java.io — классы для ввода/вывода через потоки данных.

Пакеты MIDP packages — базовые пакеты JME:

  • javax.microedition.midlet — базовые классы MIDlet (мидлеты);
  • javax.microedition.io — общая инфраструктура ввода/вывода;
  • javax.microedition.rms — классы для постоянного хранения данных;
  • javax.microedition.pki — сертификаты для безопасных соединений;
  • javax.microedition.media — мультимедийный API для мобильных устройств;
  • javax.microedition.media.control — типы элементов управления для мультимедийных классов.

Прочие пакеты:

  • com.siemens.icm.io — классы для доступа к функциональности беспроводного модуля;
  • com.siemens.icm.io.file — классы для доступа к файлам и каталогам (устарели);
  • com.siemens.icm.misc — прочие классы (например, Watchdog);
  • javax.microedition.location — инфраструктура GPS.

Вот некоторые из важнейших классов, разработанных Cinterion:

  • ATCommand, поддерживающий выполнение AT-команд аналогично тому, как это делается через последовательный интерфейс.
  • BearerControl, позволяющий читать события состояния однонаправленного канала и отсоединять однонаправленный канал.
  • ADC для считывания значений сигнала со входов аналого-цифрового преобразователя (АЦП).
  • DAC, дающий возможность управлять широтно-импульсной модуляцией (ШИМ, PWM) выходов цифро-аналогового преобразователя (ЦАП).
  • InPort, поддерживающий доступ к порту входных контактов драйвера ввода/вывода общего назначения (GPIO) и его настройку.
  • OutPort, поддерживающий доступ к порту выходных контактов драйвера ввода/вывода общего назначения (GPIO) и его настройку.
  • Watchdog, обеспечивающий управление аппаратной схемой наблюдения центрального процессора на уровне приложения.
  • I2cBusConnection — интерфейс, определяющий логическое подключение к шине I2C.
  • SpiConnection — интерфейс, определяющий логическое подключение к устройству SPI.

 

Ресурсы и интерфейсы

Встраиваемые Java-модули Cinterion, такие как TC65i и EGS5, имеют процессор ARM 9 с тактовой частотой 52 МГц, расширенную память и ОЗУ, а также специализированные Java-классы для M2M (например, класс ATCommand) (рис. 3).

Обзор ресурсов памяти

Рис. 3. Обзор ресурсов памяти

Объем памяти для Java-приложений:

  • файловая система флэш-памяти — 1700 кбайт;
  • ОЗУ — 400 кбайт.

Дополнительная периферия:

  • 10 контактов GPIO;
  • 1 интерфейс I2C/SPI;
  • 1 ЦАП и 2 АЦП;
  • 2 последовательных интерфейса (API RS-232).

Ранее управление всеми аппаратными интерфейсами осуществлялось посредством AT-команд, но теперь компания Cinterion добавила прикладные программные интерфейсы для каждого из перечисленных выше периферийных устройств (рис. 4). Это означает, что каждым интерфейсом можно управлять с помощью набора Java-методов. Это обеспечивает Java-программистам большую гибкость, повышает быстродействие и эффективность работы приложений.

Обзор API и аппаратных интерфейсов

Рис. 4. Обзор API и аппаратных интерфейсов

 

Безопасные и защищенные M2M-решения

Концепция безопасности J2ME

Рис. 5. Концепция безопасности Java

Встраиваемые Java-модули Cinterion предоставляют безопасную и защищенную вычислительную среду для M2M-приложений, в основе которой лежит проверенная концепция безопасности платформы Java (рис. 5). Мобильные Java-приложения выполняются безопасным образом в изолированной Java-среде, называемой иногда «песочницей» (sandbox). Эта изолированная среда реализуется за счет устранения создающих потенциальную угрозу безопасности атрибутов Java:

  • интерфейс прямого доступа из Java Native Interface (JNI);
  • определяемые пользователем загрузчики классов (classloaders);
  • поддержка рефлексии (сериализация RMI и объектов);
  • группы потоков (thread-groups) и потокидемоны (daemon-threads).

Виртуальная машина Java (JVM) не имеет доступа к базовой функциональности GSM, поэтому повреждение модуля приложением исключается.

Другие составляющие концепции безопасности Java:

  • Java-приложение (jar-файл), хранящееся во флэш-памяти (FFS), нельзя скопировать, что делает его абсолютно защищенным. Такой режим включен по умолчанию.
  • При встраивании в модуль сертификатов X.509 возможна реализация следующих функций безопасности:
    1. Защищенные каналы связи на базе MIDlet-классов (HTTPS, безопасное подключение). Эта функция позволяет подключаться к защищенным серверам и обмениваться данными по безопасным протоколам — TLS 1.0, SSL V3, WAP(TM) TLS, WTLS.
    2. Выполнение подписанных и неподписанных MIDlet-классов (мидлетов).

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

    1. Пакет для включения и отключения возможностей обмена с модулем (Switch ON/ OFF Module Exchange Suite). Позволяет разрешать и запрещать доступ к файловой системе флэш-памяти модуля.

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

Режим 1

При настройке соединения сертификат сервера не анализируется. Подлинность сертификата сервера не проверяется (рис. 6).

Режим 1 – корневого сертификата клиента не существует

Рис. 6. Режим 1 – корневого сертификата клиента не существует

Режим 2

Корневой сертификат клиента находится внутри модуля.

Режим 2: сертификат сервера и сертификат модуля идентичны

Рис. 7. Режим 2: сертификат сервера и сертификат модуля идентичны

Передана команда включения проверки сертификатов для HTPPS-соединений. Сертификат сервера анализируется при создании соединения. Допустимы две конфигурации: сертификат сервера идентичен сертификату, хранящемуся в модуле (оба они представляют собой самоподписные корневые сертификаты), или сертификат сервера образует цепочку с сертификатом модуля. Проверить подлинность сертификата сервера можно с помощью сертификата модуля (рис. 7 и 8).

Режим 2: сертификат сервера и самоподписный корневой сертификат образуют цепочку

Рис. 8. Режим 2: сертификат сервера и самоподписный корневой сертификат образуют цепочку

 

Основополагающие M2M-функции

Встраиваемые Java-модули Cinterion предоставляют функционал для дистанционных вычислений, необходимый при создании эффективных M2M-приложений.

Загрузка Java-приложений по эфирным каналам (over-the-air provisioning, OTAP). Это распространенная практика в мире Java. OTAP предусматривает механизмы для установки, обновления и удаления Java-приложений по каналам мобильной связи (рис. 9). Поскольку никакого физического взаимодействия с пользователем не требуется, данная функция подходит для M2M-устройств, установленных в труднодоступных местах.

Блок-схема OTAP

Рис. 9. Блок-схема OTAP

Основные характеристики OTAP:

  • возможность работы по каналам GPRS и коммутируемым каналам связи (CSD);
  • запуск AT-командой или SMS;
  • парольная защита;
  • возможность отслеживания хода процедуры по последовательному интерфейсу;
  • возможность передачи на сервер «кода результата» по итогам OTAP;
  • операция удаления с возможностью перезапуска модуля;
  • инкрементальная OTAP для обновления малых фрагментов кода — либлетов (liblet).

Функция firmware update over the air (FOTA) позволяет обновлять микропрограмму модуля по эфирным каналам — например, путем подключения по сети с коммутацией каналов или пакетов к серверу, на котором хранится обновленная микропрограмма.

Обновление микропрограммы выполняется в три этапа:

  1. Модуль подключается к внешнему серверу (FTP/HTTP) и загружает новую микропрограмму сначала во временный кэш, а затем в локальную память.
  2. После загрузки новой микропрограммы в локальную память модуль сбрасывается, а затем дается команда на перезапись микропрограммы во внутреннюю флэш-память.
  3. Когда новая микропрограмма будет установлена, модуль автоматически перезагружается, после чего он готов к работе.

Процедурой FOTA можно управлять из среды Java (на компакт-диске Cinterion имеется демонстрационный сценарий) или с внешнего микропроцессора. Микропрограмма для процедур FOTA и OTAP поставляется в формате *.USF. Файл с этим расширением содержит новую микропрограмму в зашифрованном формате, защищен контрольной суммой и должен записываться во флэш-память поблочно. Размер USF-файла в зависимости от типа модуля может составлять от 3 до ~4 Мбайт.

Если во время установки микропрограммы происходит ошибка (например, просадка напряжения, обрыв SPI-соединения), процесс обновления можно возобновить в любой момент, перезагрузив модуль.

 

Бесперебойная работа приложений

Встроенный функционал Java-модулей Cinterion обеспечивает бесперебойную работу M2M-приложений. Например, в отладочной среде модуль Java ME подключается к ПК по интерфейсу USB или RS232. После этого приложение можно редактировать, собирать, отлаживать и выполнять в интегрированной среде разработки на ПК. В отладочном режиме выполнением мидлета можно управлять из интегрированной среды (выполнение непосредственно в модуле); в обычном режиме мидлет копируется в модуль и запускается как обычно (рис. 10).

Поток данных Java-приложения в отладочной среде

Рис. 10. Поток данных Java-приложения в отладочной среде

Поддерживаются интегрированные среды разработки Eclipse, NetBeans и Borland JBuilder X.

 

Инженерная поддержка

Разработчики компании Cinterion предлагают клиентам содействие в разработке M2M-решений и Java-приложений в следующих форматах:

  • Семинары:
    • Базовый: обучение навыкам создания, сбор ки, развертывания и запуска простого Java-приложения неопытных или не знакомых с языком Java программистов.
    • Продвинутый: специализированные тренинги, ориентированные на конкретные требования заказчика к разрабатываемому приложению.
  • Экспертная оценка программ:
    • Оптимизация Java-кода для повышения скорости и надежности работы.
    • Диагностика и устранение проблем.
  • Поддержка по телефону и электронной почте:
    • ответы на конкретные вопросы;
    • общие советы по проектированию;
    • обучение мониторингу, оценке производительности и тестированию приложения.

Добавить комментарий

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