Тимур Ташпулатов (Лаборатория СМАРТ)
Статья ведущего инженера лаборатории СМАРТ представляет собой инструкцию по использованию программного комплекса Open AT и ряд полезных замечаний для разработчика, впервые применяющего GSM-модули и беспроводные процессоры Sierra Wireless из линейки Wavecom. Лаборатория СМАРТ – петербургский инженерный центр по применению беспроводных технологий и официальный партнер компании КОМПЭЛ по инженерным решениям на базе модулей Sierra Wireless/Wavecom.
Модули Sierra Wireless/Wavecom прекрасно работают в качестве обычных GSM/GPRS-модемов, но только с использованием технологии Open AT их потенциал раскрывается полностью. Open AT - мощный инструмент, позволяющий пользователю создать приложение, которое будет выполняться в модуле, не требуя никаких дополнительных внешних элементов (микроконтроллера или процессора с обвязкой). Функционал такого приложения может быть практически неограниченным - от приема-передачи SMS и данных по GSM/GPRS до организации обмена через интерфейсы RS-232, по шинам I2C и SPI, а также ввода-вывода через линии GPIO и ADC.
Инструменты для разработки приложений Open AT (рис. 1) свободно доступны после несложной процедуры регистрации на сайте http://www.sierrawireless.com.
Рис. 1. Среда разработки
В комплекте поставляются примеры программ и необходимая документация. Большинство примеров написано с использованием библиотеки ADL, дающей пользователю возможность высокоуровневого доступа ко всем необходимым ресурсам модема - памяти, портам ввода-вывода и даже управлению вычислительной мощностью/потреблением процессорного ядра. Большое количество примеров применения можно найти на сайте Sierra Wireless (табл. 1). Примеры применения (application Notes) поясняют различные аппаратные и программные аспекты и рассчитаны на разработчиков разной степени подготовки. Примеры сопровождаются исходными текстами кода и принципиальными схемами.
Таблица 1. Список примеров применения Wavecom
Наименование |
Уровень |
Снижение эффекта эха для серии Q26 и WMP Acoustic Echo Cancellation for Q26_WMP Series |
Средний |
Добавление контрольной суммы к бинарному файлу при работк с Linux Adding Checksum to a binary file using Linux |
Повышенный |
Диагностирование антенны Antenna Diagnosis |
Средний |
Антенный ключ Antenna Switch |
Средний |
Конструкция аудиофильтра для серии Q26 Audio Filter Design for Q26_WMP Series APN and tool |
Повышенный |
Автоматическое соединение посредством TCP-сокета Auto TCP Socket Data connection |
Средний |
Интерфейс Bluetooth, версия 3 Bluetooth Interface v3 |
Средний |
Возможности CMUX, версия 3 CMUX Feature v3 |
Повышенный |
Управление вызовом с помощью клавиатуры Call Management with Keypad |
Начальный |
Блокировка Ячейки Cell Lock |
Начальный |
Вычисление контрольной суммы для ОС Х4х Checksum calculation algorithm for OS X4x series |
Повышенный* |
Среда разработки Open AT® 3: создание новой мелодии Open AT® 3: Creation of new Melody |
Начальный |
Функционал DOTA_Open AT® v2.1x DOTA_Open AT® v2.1x |
Начальный |
Функционал DOTA_Open AT® v3.0x DOTA_Open AT® v3.0x |
Начальный |
Организация питания от двух источников энергии Dual Power Supply |
Средний |
Пример подключения двух СИМ-карт Dual SIM Application Note |
Средний |
Вариант зарядки внешней батареи External Battery Charging Solution |
Средний |
Библиотека математики с плавающей точкой Floating Point Arithmetic Library |
Начальный |
Графическое ядро и драйвер ЖКИ Graphical Engine & LCD Driver |
Средний |
Организация режима «Громкой связи» Hands Free Speaker Phone |
Средний |
Включение питания на модулях новой серии Q24 New Q24 Series Power On |
Начальный |
Среда разработки Open AT® 3: усовершенствованные методы компиляции Open AT® 3: Advanced Compilation |
Повышенный |
Советы по компиляции приложения Open AT Open AT® Application Compilation Tips |
Средний |
Среда разработки Open AT® 3: распределение памяти Open AT® 3: Memory Mapping |
Начальный |
Библиотека генерации периодических импульсов Open AT® 3: Periodic Pulse Generation Library |
Повышенный |
Среда разработки Open AT® 3: управление исполнением программы Open AT® 3: Using Flow Control Manager |
Повышенный |
Пример применения решения C-GPS Opus I Opus I C-GPS Application Note |
Начальный |
Пример применения решения Opus III C-GPS Opus III C-GPS |
Начальный |
Пример приема и отправки MMS MMS Sample Application |
Средний |
Использование PPP в среде Linux PPP using Linux |
Начальный |
Различные режимы потребления энергии Power Consumption Modes |
Повышенный |
Включение режима пониженного энергопотребления с помощью Open AT Power Down Mode Activation Using Open AT® |
Начальный |
Пример использования Q52 в режиме слежения с помощью API Open AT Q52 Omni Tracking Application Note |
Средний |
Пример использования RTC RTC Open AT® API usage |
Начальный |
Загрузка данных с помощью SMS SMS Data download |
Начальный |
Прием и отправка факсов, версия 2 Sending Receiving Faxes v2 |
Начальный |
Использование COM PC-карт для скоростного обмена данными Serial Cards for High Speed Transfer |
Начальный |
Временная синхронизация NTP – SNTP Time Synchronisation (NTP – SNTP) |
Начальный |
Настраиваемая антенна диапазона 900/1800 МГц в виде проводников печатной платы Tunable PCB Antenna 900/1800 |
Повышенный* |
Настраиваемая антенна диапазона 850/1900 МГц в виде проводников печатной платы Tunable PCB Antenna 850/1900 |
Повышенный* |
Исподьзование FCM flow в приложении Open AT Using FCM flow in an Open AT® Application |
Повышенный |
Использование TCP и UDP в среде разработки Open AT® Using TCP and UDP in OpenAT® |
Повышенный |
Управление дежурным таймером сброса Watchdog timer reset |
Средний |
Отладка беспроводных процессоров WMP с помощью JTAG WMP Family JTAG Debug Application Note 001-002 |
Средний |
Общие документы по применению (старый формат представления) |
|
Создание библиотеки в среде разработки Open AT® 2.x Creating an Open AT 2.x Library |
Начальный |
Модифицированные AT-команды и API-интерфейс для UART2 Modified AT commands and API Interfaces for UART2 |
Начальный |
Организация режима «Громкой связи» в среде OS 6.43 OS 6.43 Hands Free Audio |
Средний |
Среда разработки Open AT® 3: компиляция Open AT® 3: Compilation |
Начальный |
Конфигурация TCP/IP параметров в среде разработки Open AT® Open AT® TCP/IP Parameter Configuration |
Начальный |
Портирование задачи Open AT из библиотеки WM в библиотеку ADL Porting Open AT application from WM library to ADL library |
Средний |
Режим «Dead Reckoning» в Q2501 Q25 Dead Reckoning |
Начальный |
Пошаговая инструкция для создания DWL-файла для Open AT ADL задачи Steps to create a DWL file for Open AT ADL application |
Начальный |
Приостановка и возобновление задачи Open AT с помощью режима прерываний Suspending & resuming Open AT applications with interrupt mode |
Начальный |
Интерфейс USB 1.1 USB 1.1 Interface |
Средний |
Интерфейс USB 2.0 USB 2.0 Interface |
Средний |
Использование AT-команд для GPRS, PLMN, AEC, Battery & USSD AT implementation of GPRS, PLMN, AEC, Battery & USSD |
Начальный |
* Предоставляется на условиях подписания соглашения о нераспространении. |
Начинающему разработчику приложения Open AT потребуется некоторое усилие, чтобы привыкнуть к особенностям новой для него архитектуры. Прежде всего, приложение Open AT выполняется процессорным ядром модуля в режиме кооперативной многозадачности. Это накладывает определенные ограничения на структуру разрабатываемого приложения. Так как монопольный захват процессора на длительное время может привести к срабатыванию сторожевого таймера и перезагрузке всего модуля, требуется более творческий подход в организации длительных циклов ожидания какого-либо события, или инициализации больших массивов и структур данных.
Например, часто встречающаяся ошибка - попытка инициализации в цикле относительно небольшого количества (нескольких десятков) ячеек flash-памяти. Казалось бы, общее время выполнения цикла невелико, но почему-то удается проинициализировать только первый десяток-другой ячеек, а на обращение к остальным ячейкам выдается код ошибки. Причина в том, что доступ к flash-памяти недостаточно быстрый, и требуется разнесение обращений к каждой последующей ячейке как раз на время, требуемое для завершения операций над предыдущей. Вставлять циклы ожидания, как отмечалось выше, небезопасно. Правильней будет завести в приложении циклический таймер с периодом срабатывания в несколько десятков или сотен миллисекунд и выполнять инициализацию очередной ячейки в его обработчике.
Прежде чем использовать в своем приложении доступ к линиям GPIO, следует убедиться в том, что они вообще могут быть доступны программным способом.
Некоторые линии GPIO могут выполнять различные функции (мультиплексироваться) в зависимости от конкретного типа модуля и его настроек - например, в модуле Q2686 линии GPIO14 и GPIO15 задействуются как сигналы CT103/TXD2 и CT104/RXD2 при работе с UART2, и использовать их под свои нужды без отключения UART2 невозможно. Разумеется, также невозможно использовать линии GPI для вывода, а линии GPO - для ввода.
Если линия GPIO доступна для работы и на ввод, и на вывод, убедитесь, что правильно сконфигурировали направление (ввод либо вывод) перед обращением к ней.
При работе с UART (RS-232) следует помнить, что принимаемые данные будут поступать в обработчик не байт за байтом, а различного размера порциями, но не более 120 байт за раз. Происходит это вследствие внутренней буферизации входного потока в ОС модуля, и логику обработки поступаемых в приложение данных следует строить с учетом этой особенности.
Большим подспорьем при отладке приложения Open AT являются так называемые трейсы (traces) - отладочные сообщения (рис. 2), выводимые при помощи специальных макросов TRACE и DEBUG с уровнем 1 в программе TMT (Target Monitoring Tool).
Рис. 2. Программа TMT
Можно включить другие уровни, получив, таким образом, возможность наблюдать за богатым внутренним миром модуля - процессами запуска и остановки таймеров, ввода-вывода, выделения и освобождения памяти и так далее. Помимо группы CUS4, куда относится вывод TRACE и DEBUG, есть и другие группы, которые могут оказаться полезными при поиске проблем в приложении. Программа TMT позволяет снимать и записывать в файл отладочные сообщения, которые могут впоследствии анализироваться специалистами Wavecom при разборе особенно сложных случаев. Для снятия трейсов может использоваться USB-интерфейс (для Q268x) или второй последовательный порт беспроводного процессора.
О «железе»
При использовании готовых (корпусированных) модемов или модулей Sierra Wireless/Wavecom следует соблюдать рекомендованные условия применения - температурный диапазон, требования к источнику питания. Если вы собираетесь использовать модуль в своем изделии, внимательно изучите документацию на конкретную модель, в частности, документ под названием CDG (Customer Design Guidelines). Этот документ дает рекомендации и общие соображения по применению модулей Sierra/Wavecom, включая конкретные примеры решений и типовые схемы узлов, в частности:
- по построению радиочастотной части,
- по разводке печатной платы,
- по подключению аналоговых (микрофон, динамик) и цифровых (UART, GPIO, клавиатура и т.д.) цепей,
- по чертежам и посадочным габаритам модуля,
- по тестированию и загрузке (обновлению) программного обеспечения.
Очень важно соблюсти все требования к источнику питания (минимальное и максимальное напряжение, возможность выдерживать значительные по силе кратковременные выбросы потребляемого тока, допустимый уровень пульсаций), так как это впоследствии избавит разработчика от плохо обнаруживаемых и на первый взгляд бессистемных сбоев в работе спроектированного устройства.
Дополнительный способ проверки правильности схемотехники - это заказ бесплатной услуги анализа схемы на Sierra Wireless. Результатом анализа является документ, в котором по пунктам перечисляются найденные ошибки, отклонения от допустимых режимов, «опасные» места с точки зрения потенциальных проблем по ЭМС. Имея огромный опыт работы с GSM-продуктами, инженеры Sierra Wireless помогут найти оптимальное решение и избежать лишних шагов при производстве прототипов изделия. Информация может быть предоставлена в виде электрических принципиальных схем и топологии печатной платы в каких-либо широко распространенных форматах: например, можно просто конвертировать чертежи в файлы PDF. Экспертный анализ выполняется в срок от нескольких дней до двух недель.
О прошивке
Время от времени Sierra Wireless выпускает обновления прошивок для своих модемов.
Как правило, это обусловлено накопившейся критической массой исправлений и полезных дополнений, достаточно большой, чтобы выпустить очередное обновление.
Не стоит гнаться за модой и ставить себе самую последнюю вышедшую прошивку. Сперва изучите список того, что было исправлено в новой версии, обычно список таких исправлений есть в прилагающемся к обновлению документе Release Notes. Если в этом списке есть и ваша проблема (или похожая на нее) - обновляйтесь. Если нет - подумайте еще раз. Вполне возможно, что вместе с исправлениями прошлых ошибок в новом обновлении могли затесаться какие-либо новые. И хотя вероятность этого крайне мала, все же оцените - стоит ли игра свеч?
Обновить прошивку в модеме очень просто - в любой программе-эмуляторе терминала с помощью команды AT+WDWL по протоколу XMODEM. Процедура обновления может занять несколько минут, при этом прерывание процесса крайне нежелательно. Впрочем, если это все же произошло, и модем перестал подавать признаки жизни, ничего страшного - модем всегда можно восстановить с помощью утилиты DwlWin.
Общие соображения
АТ-команды - это первое, с чем сталкивается любой разработчик, который ранее никогда не работал с GSM-технологиями. Несмотря на то, что полное описание AT-команд занимает сотни страниц, для начала практической работы необходимо изучить и понять, как работают два-три десятка ключевых команд. Для тех, кто только начинает знакомиться с азами передачи информации c помощью GSM, большим подспорьем может оказаться программа Expresso. Expresso автоматически обнаруживает подключенный к ПК GSM-модуль (рис. 3), позволяет «в один клик» прочитать основные параметры устройства, отправить СМС или совершить голосовой звонок.
Рис. 3. Программа Expresso
В специальном окне можно видеть все отправляемые на модуль AT-команды, связанные с тем или иным действием пользователя. Имеется также возможность набора AT-команд в обычном текстовом виде. Доступная бесплатная версия программы позволяет работать с модемами Fastrack Go и Fastrack Supreme, модулями серии Q26 и WMP100.
Если вы столкнулись с проблемой - нештатным поведением модема или модуля, либо реакцией, отличающейся от описанной в документации, то, прежде всего, попробуйте ее решить, исходя из здравого смысла и житейского опыта:
- проверьте питание, при возможности- замените источник питания на более мощный;
- проверьте антенну. Если с антенной все в порядке, убедитесь в наличии хорошего покрытия оператора сотовой связи. Можно для этой цели использовать команду AT+CSQ, или ее вариант в циклическом режиме AT+CCED=1,8. Может оказаться, что слабого сигнала базовой станции AT+ хватает на прием SMS или голосовой звонок, но для надежной работы GPRS его недостаточно- убедитесь, что SIM-карта вставлена и не требует PIN-кода (или же он введен правильно), что на счете достаточно средств и включена услуга передачи данных. Если есть возможность, попробуйте поставить другую SIM-карту, а еще лучше- SIM-карту другого оператора.
Если вы разрабатываете приложение Open AT, то:
- внимательно читайте документацию;
- изучайте примеры, входящие в пакет Open AT ;
- неплохой способ создания своего приложения- взять подходящий пример и его творчески переработать;
- ответственно относитесь к результатам, возвращаемым вызовами API Open AT (ADL и WIP);
- если вы еще не зарегистрировались на сайте http://www.sierrawireless.com, сделайте это. Форум разработчиков- неоценимый источник информации практически по всем аспектам применения продукции Sierra Wireless/Wavecom;
- еще раз проштудируйте документацию.
Если проблему устранить не удается, тогда смело обращайтесь в службу поддержки. Максимально подробно опишите, в чем именно состоит проблема, присовокупив как можно более детальное описание модема (модуля) с указанием версии прошивки, настроек и условий, при которых проблема возникла, а также действий, которые предпринимались для ее решения.
Неплохо также приложить исходный текст приложения или его проблемной части. Хорошо, если проблема будет воспроизводима, но это необязательно.
Будьте уверены, вам ответят.