Передовые JAVA-модули Cinterion.
Особенности программирования
Java занимает первое место в ежемесячном рейтинге популярности средств программирования Tiobe Programming Community Index. В компании Tiobe считают, что популярность Java растет, скорее всего, благодаря успеху Android-устройств. По данным за август 2013 г. у Java рейтинг популярности 15,978%, а у С — 15,974% (рис. 1).
Использование Java отделяет процесс разработки программного обеспечения от циклов разработки аппаратного обеспечения, что обеспечивает высокую гибкость стратегий разработки продуктов и выхода на рынок. Java может быть внедрена в различные М2М-системы в самых разных отраслях. Кроме того, язык является кроссплатформным, что является значительным плюсом для программистов.
Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Java-приложения обычно компилируются в специальный байт-код и работают на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры.
Java ME разработана для встраиваемых систем и применяется в промышленных компьютерах, контроллерах в конфигурации CDC (Connected Device Configuration). Для устройств с ограниченными ресурсами, такими как беспроводные модули, разработана аппаратная конфигурация CLDC (Connected Limited Device Configuration). Минимальные требования CLDC 1.1:
- процессор 16,32-бит с частотой от 16 МГц;
- ПЗУ 160 кбайт;
- ОЗУ 192 кбайт;
- низкое энергопотребление;
- подключение к любому виду сети.
В отличие от мобильных телефонов, устройства без экранов должны соответствовать профилю IMP, который содержит в себе аналогичный набор библиотек за исключением графических. Аппаратная часть GSM-модулей Cinterion с Java соответствует CLDC 1.1 HI. Connected Limited Device Configuration HotSpot Implementation Virtual Machine — высокопроизводительная виртуальная Java-машина для устройств, ограниченных в ресурсах, разработанная компанией Oracle. Программная часть всех выпускаемых сегодня GSM-модулей Cinterion с Java соответствует профилю IMP-NG (NEXT Generation) c поддержкой I2C, SPI, эмуляторов АТ-команд, безопасных соединений и протоколов (HTTP) и др.
Cinterion — первый разработчик Java-продуктов
Первыми в мире, кто применил Java ME в GSM-модуле, была компания Siemens (сегодня Gemalto). Более 10 лет назад Siemens представила свой первый GSM-модуль TC45 со встроенной Java-машиной; прогресс не стоит на месте — GSM-модули совершенствуются, выпускаются новые, более производительные, функциональные и современные. В свою очередь развивается линейка Java-модулей Cinterion М2М Evolution (рис. 2). И, что характерно, Java появляется в большем количестве в новых продуктах Cinterion, включая 3G-модули. Обновляется в модулях и Java. В 2010 г. в связи с приобретением Sun Microsystems корпорацией Oracle Java получила новый импульс для развития и была версия 7.
Новые GSM модули BGS5 и EHS5
Новые компактные модули Cinterion серии М2М Evolution BGS5 и EHS5 созданы в едином форм-факторе и на одной платформе. Платформа включает в себя новую Java-концепцию — мультимидлетность, то есть возможность одновременного запуска и работы нескольких мидлетов (Java-приложений). Модули устанавливают надежные TCP/IP-соединения благодаря обновленной политике безопасности (TLS/SSL-шифрование) и могут безопасно обновляться по беспроводным GSM-каналам (встроенное программное обеспечение — FOTA, Java-приложения — OTAP, теперь и по HTTPS). Использование стандартных методов разработки отделяет процессы получения разрешений на использование решения от процесса разработки программного обеспечения, что позволяет распараллелить процессы и сокращает время вывода изделия на рынок.
Модули выполнены на базе процессоров ARM11 (520 MГц), имеют встроенный расширенный TCP/IP-стек и оснащены интерфейсами: USB 2.0; два UART; 16 GPIO; ADC; I²C; один цифровой (аудио).
3G-модуль EHS5, в отличие от 2G-модуля BGS5, функционирует на базе HSPA + Intel-чипсета и относится к новейшему поколению модулей серии Evolution, которое характеризуется высокой скоростью передачи данных: до 7,2 Мбит/с (UL) и до 5,76 Мбит/с (DL). Если сравнивать с ранее упомянутым модулем TC65i:
- на 68% выше производительность;
- на 58% быстрее TCP/IP время обращения;
- на 66% быстрее время передачи данных (открытие TCP/IP-сессии).
Компоненты Java-среды на GSM-модулях Cinterion
Java ME делится на наборы прикладных программных интерфейсов (API), конфигурации, профили и дополнительные пакеты, например CLDC и MIDP (Mobile Information Device Profile — профиль для мобильных информационных устройств). Конфигурация для мобильных устройств называется CLDC (Connected Limited Device Configuration) и является фундаментальной составной частью архитектуры платформы Java ME.
На рис. 3 схематично представлены Java-компоненты новых модулей BGS5 и EHS5. Приведем некоторые пояснения:
- JVM (Java Virtual Machine) — виртуальная Java-машина для запуска мидлетов. Мидлетами называются приложения Java ME.
- JSR 139 (Java Specification Request) CLDC 1.1 — конфигурация CLDC и профиль MIDP1.
- JSR 228 IMP-NG — API профиля информационного модуля нового поколения (TCP/IP и ASC0/1).
- JSR 75 FileConnection — работа с файловой системой модуля.
- ATCommand— API-интерфейс Java к синтаксическому AT-анализатору. Поддерживает выполнение АТ-команд аналогично управлению модулем через последовательный интерфейс.
Разработчики ПО могут использовать только те API, которые аппаратно поддерживаются модулем (по шине I2C/SPI, контактам GPIO и др.):
- I2C/SPI API.
- GPIO API.
- ADC/DAC API — считывание значений сигнала со входов АЦП и управление широтно-импульсной модуляцией (ШИМ) выходов ЦАП.
Это позволяет более эффективно использовать JVM, так как сокращает размер библиотек и не вводит в заблуждение программистов.
Программистами Cinterion написаны следующие собственные библиотеки:
- cinterion.io — классы доступа к функционалу модуля.
- c.c.location — классы для работы с GPS-навигацией/тригонометрическими вычислениями.
- c.misc — другие классы, например Watchdog.
К новым Java API в модулях BGS5 и EHS5 можно отнести следующие:
- JSR177 Security&Trust — поддержка криптографических сервисов.
- JSR280 XML — «парсинг» и создание XML.
- Передача данных между мидлетами (PipeConnections, AT^SJAM) и «внутри» мидлетов; двунаправленные потоки; принцип «клиент–сервер».
JSR177 Security & Trust относится к стандартным API J2ME. В принципе модель безопасности в GSM-модулях Cinterion с Java охватывает две основные области. Одна из них — это обеспечение безопасных соединений для передачи данных мидлетов (HTTPS, защищенное соединение). Вторая — это выполнение подписанных/неподписанных мидлетов. Некоторым приложениям (мидлетам) требуется доступ к файловой системе для своей работы. Однако модель безопасности MIDP требует, чтобы приложение было подписано, ибо в противном случае мидлет не сможет получить доступ к закрытым функциям и не будет работать. Сертификаты копируются через последовательный интерфейс во flash-память модуля.
Средства разработки
Cinterion выпускает программный инструментарий CMTK (Cinterion Mobility Toolkit), интегрируемый в свободно распространяемую среду разработки Java IDE Netbeans (Oracle) или Eclipse (IBM). Откомпилированные Java-приложения сохраняются в виде файлов *.jar. С помощью пакета Module Exchange Suite (MES) или по радиоканалу производится копирование файла *.jar во flash-память модуля. Наличие файла *.jad также является обязательным. В нем содержится информация о фактическом содержимом соответствующего файла *.jar (включая имя файла, размер, версию и т.д.). В программе Cinterion MES при отключении функции доступа к модулю с помощью команды AT^SJSEC доступ к файловой системе модуля блокируется.
- Свободно распространяемый (бесплатный) компилятор.
- Встроенная flash-память (8 Мбайт в модуле EHS5, 4 Мбайт — в BGS5).
- Собственные библиотеки (API). В новых модулях Cinterion все интерфейсы, в том числе USB, стали доступны через Java API.
- Постоянно совершенствуемый программный инструментарий CMTK.
- Многозадачность и мультиапплетность играет немаловажную роль в современных программных мобильных решениях. В модулях последнего поколения одновременно можно запускать несколько многопотоковых мидлетов.
- Возможность передачи данных между мидлетами.
- Высокий уровень безопасности Java-приложений обеспечивается защитой от несанкционированного запуска и копирования, от запуска нескольких приложений и защитой передачи данных по беспроводным каналам связи благодаря протоколам шифрования TLS/SSL (HTTPS, защищенные соединения), сертификату X.509 и др.
- Возможность удаленной установки, обновления или удаления мидлетов — OTAP (Over The Air Provisioning — «по воздуху») по беспроводным GPRS/3G/CSD-каналам. Запуск производится с помощью AT-команды или SMS с парольной защитой. Имеются возможность отслеживания процесса по последовательному интерфейсу, передача на сервер «кода», операция удаления с перезапуском модуля и пошаговое обновление малых фрагментов кода.
- Возможность отлаживать мидлеты в интегрированной среде разработки (NetBeans/Eclipse) на ПК. Для этого модуль подключается к ПК по USB-интерфейсу (или RS-232). Мидлеты можно редактировать, компилировать, отлаживать и запускать с ПК.
Пример использования Java
Ниже приведен пример кода по управлению GPIO-контактами Java-модуля Cinterion в качестве выходов.
//Импортируем стандартные библиотеки и библиотеку Cinterion для работы с GPIO import java.io.IOException; import javax.microedition.midlet.*; import com.cinterion.io.OutPort; import java.util.Vector; public class IMlet extends MIDlet { public void startApp() { //инициализируем экземпляр класса и вспомогательные данные OutPort oport = null; Vector pins = new Vector (2); Vector values = new Vector (2); pins.addElement("GPIO6"); values.addElement(Integer.valueOf("1")); pins.addElement("GPIO7"); values.addElement(Integer.valueOf("1")); //пробуем создать экземпляр и прочитать состояние портов try { oport = new OutPort(pins, values); System.out.println(oport.getValue()); } catch (IOException ex) { ex.printStackTrace(); } //останавливаем выполнение на 10 с try { Thread.sleep(10000); } catch (InterruptedException ex) { ex.printStackTrace(); } //пробуем установить GPIO6 выкл., GPIO7 вкл. try { oport.setValue(2); System.out.println(oport.getValue()); } catch (IOException ex) { ex.printStackTrace(); } //останавливаем выполнение на 10 с try { Thread.sleep(10000); } catch (InterruptedException ex) { ex.printStackTrace(); } // освобождаем GPIO от работы с JAVA (теперь они доступны через АТ-команды) try { oport.release(); } catch (IOException ex) { ex.printStackTrace(); } destroyApp(true); } public void pauseApp() { } public void destroyApp(boolean unconditional) { notifyDestroyed(); } }
Заключение
Новые ультракомпактные модули EHS5 (3G) и BGS5 (2G) сочетают в себе весь накопленный опыт Gemalto по созданию М2М-продуктов и решений на базе JAVA. По сравнению с младшим в серии Evolution модулями разработчикам удалось весьма значительно повысить их производительность. Java ME позволяет клиентам, работающим в сфере M2M, в максимальной степени расширить функциональные возможности своих разработок. Все возможности и преимущества — «в руках» Java-программистов. Благодаря наличию огромного числа разработчиков во всем мире, Java позволяет легко находить специалистов для создания приложений. Наличие JAVA сокращает затраты на дополнительные внешние процессоры и карты памяти. Плюс к этому с BGS5 разработчики могут быстрее перейти от 2G- к 3G-диапазонам передачи данных (в ближайшем будущем и к 4G(LTE)), т.к. модули EHS5 Rel. 2 и BGS5 выполнены в едином форм-факторе.
- http://euromobile.ru/produkciya/gsm-moduli/ehs5-rel-2
- http://euromobile.ru/produkciya/gsm-moduli/bgs5-lga-java
- http://m2m.gemalto.com/products.html
- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
- Рональдо Робль, Зелько Марич. Прогрессивные GSM-модули на J2ME // Беспроводные технологии. 2010. № 2.
- Java User Guide. EHS5/BGS5. Gemalto, Германия.
- Маркус Энк. EHS5/6 – A new generation of embedded Java. Gemalto, июнь 2013.