Журнал "Новости Электроники", номер 19, 2007 год.

Журнал "Новости Электроники", номер 19, 2007 год.Программная реализация C-GPS Open AT-приложенияВсеволод Нестеров (КОМПЭЛ) Итак, бортовой мобильный навигационный контроллер на базе беспроводного процессора Wavecom и C-GPS-чипсета eRide собран. Время запускать программные приложения, разработанные Wavecom на базе открытого программного комплекса Open AT.

 

В предыдущей статье были рассмотрены некоторые аппаратные аспекты интеграции C-GPS-плагина компании Wavecom в бортовое навигационное оборудование систем слежения за подвижными объектами. Теперь мы поговорим о программных средствах.

Как уже говорилось, компания Wavecom предоставляет отладочные комплекты для реализации C-GPS. Они состоят из дочерней платы C-GPS и набора разработчика для беспроводных процессоров Q2686/87 или WMP50/100/150.

Помимо аппаратных средств, для начала разработки приложения разработчику потребуется программный комплекс Open AT нужной версии, который бесплатно предоставляется компанией Wavecom. Его можно скачать с FTP-сайта компании КОМПЭЛ. Чтобы получить логин и пароль для скачивания, достаточно прислать запрос. Каждой версии внутренней операционной системы беспроводного процессора соответствует своя версия Open AT, но поддерживается и обратная совместимость со старыми версиями. Другими словами, приложения, скомпилированные в ранних версиях, будут прекрасно работать на новых операционных системах беспроводных процессоров, работающих с новыми Open AT. Приложения в Open AT пишутся на языке С. В состав Open AT входят: GCC-компилятор, среда разработки Eclipse, Java-машина для работы с Eclipse; набор Development Toolkit, в состав которого входят программы Terminal Emulator, Serial Link Manager и Target Monitoring Tool; документация; бинарные файлы с операционной системой, соответствующей этой Open AT; примеры программ, библиотеки с плагинами.

Во время установки Open AT необходимо убедиться, что выставлены галочки, соответствующие нужным плагинам (в нашем случае C-GPS).

После установки Open AT можно запустить программу Project Wizard, которая формирует проект: новый или на базе имеющихся примеров. Для загрузки примера C-GPS надо в правом окне подключить библиотеку C-GPS, а в левом - сам пример (рис. 1).

 

Рис. 1. Программа Project Wizard

Через некоторое время после того, как вы выберете в поле Associated IDE Eclipse и нажмете ОК, загрузится среда Eclipse с вашим проектом (рис. 2), после чего с ним можно начинать работать.

 

Рис. 2. Среда разработки Eclipse

Компания Wavecom предоставляет четыре приложения для работы c C-GPS: QueryApplication, IntervalUpdate, TCPInternetConnection и RTCTimeAiding.

Приложение QueryApplication использует дочернюю плату C-GPS и принимает GPS-данные от нее. Пользователь может послать конфигурационное SMS-сообщение на беспроводной процессор. Приложение определит координаты, время и скорость и вышлет эти данные пользователю через SMS-канал. У пользователя есть возможность установить пароль для получения этих данных. Также можно задать номер телефона для их отсылки. Приложение может выдавать координаты в формате протокола NMEA на порт UART.

Приложение TCPInternetConnection также использует дочернюю плату C-GPS и принимает GPS-данные от нее. Пользователь может послать конфигурационное SMS-сообщение на беспроводной процессор. Приложение может быть сконфигурировано таким образом, что начнет периодически отсылать координаты через установленный промежуток времени, используя TCP IP-сокет. Как и в предыдущем случае, есть возможность задать пароль. Приложение может выдавать координаты в формате протокола NMEA на порт UART.

Функции приложения IntervalUpdate те же, что и у приложений QueryApplication и TCPInternetConnection, но передавать координаты оно может двумя способами: или через SMS-канал, или через TCP IP-сокет. Координаты также выдаются в виде NMEA-сообщения на UART.

Приложение RTCTimeAiding похоже на QueryApplication, но оно способно получать данные с часов реального времени, которые есть в беспроводном процессоре, и передавать их дочерней плате C-GPS. Это сокращает время TTFF (Time To First Fix) с 40 секунд до 5...10 секунд при использовании внешней выносной GPS-антенны. Необходимым условием работы этого приложения является наличие источника питания для часов реального времени.

Приложение Open AT может быть скомпилировано в двух режимах: в режиме Target и в режиме RTE.

Режим Target - это режим построения конечного бинарного файла. При этом генерируется файл с расширением .dwl, который с помощью стандартной программы Hyperterminal можно «залить» в беспроводной процессор, используя протокол X-Modem. Процедура следующая: если в результате проверки, не запущено ли в данный момент Open AT-приложение командой AT+WOPEN, получен ответ 1, то приложение запущено и его надо остановить командой AT+WOPEN=0, если ответ 0, то приложение не запущено. Команда AT+WDWL начинает процесс «заливки» приложения: беспроводной процессор выдает значки §§§§§§, говорящие о том, что он готов к приему файла; после этого надо выбрать файл и отправить его в процессор, используя протокол X-modem. По окончании загрузки необходимо осуществить сброс командой AT+CFUN=1, а затем запустить приложение AT+WOPEN=1. С этого момента оно будет работать даже после перезапуска питания.

В режиме RTE приложение генерирует исполняемую программу, которая может быть запущена на компьютере. Эта программа эмулирует работу ядра беспроводного процессора, управляя процессором с помощью собственного протокола через последовательный порт (рис. 3).

 

Рис. 3. Режим работы RTE

В окне этой программы можно установить ряд параметров запуска, а также выставить галочки уровней трасс. С помощью этих уровней можно отладить программу, вставив в нужные места кода определенный макрос, например, вида TRACE (( 1, "Embedded: Hello World" ));. Сообщения этих макросов будут видны в окне специальной программы Target Monitoring Tool (TMT), которая идет в комплекте с Open AT. Например, приведенный макрос выводит в окне TMT сообщение "Embedded: Hello World" на первом уровне трасс. Чтобы настроить TMT, необходимо выставить нужные уровни трасс, нажать кнопку Auto Detect, чтобы TMT увидел беспроводной процессор, и инициализировать этот процессор, нажав Commands, Init Target. Вид окна TMT при этом показан на рисунке 4.

 

Рис. 4. Вид окна программы TMT

Уровни трасс можно увидеть и при работе в режиме Target. В этом режиме беспроводной процессор выдает трассы на последовательный порт, и они могут быть просмотрены программой TMT. В этом случае процессор также надо инициализировать, нажав Commands, Init Target.

Некоторые замечания по работе с приложением C-GPS в режиме RTE:

режим RTE доступен с некоторыми ограничениями,скорость соединения с компьютером должна быть 460800,в файл проекта gpioconfig.h нужно добавить код. Если используется процессор Q2686, код будет следующий:

#if defined (_REMOTETASKS_)

/*Define the product type only for RTE mode*/

/*ADL_IO_PRODUCT_TYPE_Q2686 or ADL_IO_PRODUCT_TYPE_Q2687*/

#define RTE_PRODUCT_TYPE ADL_IO_PRODUCT_TYPE_Q2686

#endif

Если используется процессор Q2687, то код:

#if defined (_REMOTETASKS_)

/* Define the product type only for RTE mode */

/* ADL_IO_PRODUCT_TYPE_Q2686 or ADL_IO_PRODUCT_TYPE_Q2687*/

#define RTE_PRODUCT_TYPE ADL_IO_PRODUCT_TYPE_Q2687

#endif

Есть еще одна программа, которую следует рассмотреть - Terminal Emulator (TE). С помощью этой терминальной программы можно во время отладки подавать АТ-команды, а также просматривать получаемые и передаваемые данные. Во время запуска программ TMT или TE, автоматически запускается еще одна полезная программа, Serial Link Manager (Selima), которая распределяет поток данных с процессора: трэйсы передаются в TMT, а AT-команды и данные - в TE.

Рассмотрим основные моменты программной реализации C-GPS. Структурная схема программной платформы C-GPS-решения представлена на рисунке 5.

 

Рис. 5. Структурная схема программной платформы C-GPS

Данные GPS в программной платформе C-GPS передаются в виде структур. Все эти структуры описаны в документации:

erCallbackStruct - обратные аппаратные вызовы, которые приложение передает ядру GPS-библиотеки.erNvDataStruct - RAM-копия навигационных данных. Приложение выделяет под них память.erTcoConstantsStruct, erTcoTableStruct - используется для передачи GPS-ядру информации о термокомпенсированном генераторе.erTimeInputStruct - показание часов реального времени, которое передается GPS-ядру.

Информационные GPS структуры:

erPvtStruct - главная структура с навигационными данными. erSvStatusStruct - содержит информацию о спутниках: отношение сигнал/шум, азимут, возвышение.erFixSetStruct - спутники, используемые для текущего определения навигационных данных.erTimeStruct - время, полученное от спутников.erUtcStruct - спутниковые константы UTC.erGpsMeasStruct - служебная информация, используемая в тестах при производстве.

В программной платформе C-GPS используются API-функции четырех основных типов:

Функции управления GPS-ядром, используемые для запуска, работы и останова ядра;Функции обратных вызовов, используемые для регистрации аппаратных средств на ядре;Функции инициализации GPS-ядра, используемые для конфигурации его работы;Функции получения навигационных данных, статусов.

Ядро должно запускаться и выполняться из пользовательского приложения.

Функции управления ядром:

void erGpsStart(void) - запускается после окончания инициализации. Инициализирует ядро.void erGpsStop(void) - используется для останова ядра и перевода C-GPS-чипсета в состояние OFF.void erGpsStandby(void) - используется для останова ядра и перевода C-GPS-чипсета в состояние STANDBY.int erGetGpsState(void) - возвращает GPS-ядро в текущее состояние. Возможны три состояния: ER_GPS_STATE_OFF, ER_GPS_STATE_ON и ER_GPS_STATE_STANDBY.

Главная функция управления ядром

Главной функцией управления ядром является int erGpsCoreTask(unsigned char *buf, unsigned short length) - она передает данные с последовательного порта GPS в буфер.

Значения, возвращаемые этой функции, представлены в таблице 1.

Таблица 1. Значения, возвращаемые функцией erGpsCoreTask

Тип Возвращаемое значение Функция Скорость, Гц ER_PVT_AVAIL erPvtStruct erGetPvt 1 ER_TIME_AVAIL erTimeStruct erGetTime 1 ER_SVSTAT_AVAIL erSvStatusStruct erGetSvStatus 1 ER_FIXSET_AVAIL erFixSetStruct erGetFixSet 1 ER_TCO_AVAIL unsigned int int erGetTcoFrequency erGetTemperature 1 ER_LCTIME_AVAIL erTimeStruct erGetTime 1 ER_NVDATA_AVAIL erNvDataStruct App-specific   ER_TESTDATA_AVAIL erGpsMeasStruct erGetTestData 1 Состояние ядра в момент выполнения этой функции должно быть ER_GPS_STATE_ON. Возвращаемое значение - бит, который указывает, что новые данные доступны. Данные принимаются со скоростью около 800 байт в секунду. Ядро должно вызываться каждые 100 мс.

Функции обратных вызовов

Функции обратных вызовов обеспечивают интерфейс между «железом» и ядром. Не все из этих функций востребованы. Они должны вызываться перед erGpsStart.

Функция void erRegisterCallbacks(erCallbackStruct *cb) регистрирует функции обратных вызовов, необходимые приложению.

Функции инициализации ядра

Эти функции конфигурируют работу GPS-ядра и вызываются перед erGpsStart:

void erSetNvData(erNvDataStruct *nvdata) - запись и сохранение данных в энергонезависимой памяти;void erSetMxMode(int mode) - разрешение режима отладки;void erSetTcoData (erTcoConstantsStruct *tc, erTcoTableStruct *tt) - отправка GPS-ядру информации о термокомпенсированном генераторе;void erGpsSetTime(erTimeInputStruct *time) - получение информации о системном времени;void erGpsSetChipsetMode(int mode) - обеспечение совместимости с предыдущими дизайнами;erEnablePositionOutageProgatation(int sec) - установление максимального количество секунд, в течении которых происходит передача навигационныx данныx после потери сигнала от спутников;erEnableLatencyPositionPropagation(int msecs) - установление системной задержки.

Функции получения навигационных данных и статусов

Эти функции базируются на возвращаемых параметрах функции erGpsCoreTask (кроме функций const char *erGetVersion(void) - получение версии GPS-ядра и erUtcStruct *erGetUtc(void) - получение спутниковых UTC-параметров).

 

Рис. 6. Структурная схема управления GPS-ядром

Параметр ER_PVT_AVAIL:

erPvtStruct *erGetPvt(void) - главный интерфейс GPS-ядра, возвращает указатель на структуру, содержащую навигационную информацию: местоположение, скорость, PDOP;int erPvtIsFix(erPvtStruct *pvt) - использует структуру PvtStruct для индикации надежности последней полученной навигационной информации;int erPvtIsFixPropagated(erPvtStruct *pvt) - использует структуру PvtStruct для индикации ненадежности последней полученной навигационной информации.

Параметр ER_TIME_AVAIL:

erTimeStruct *erGetTime(void) - возвращает указатель на структуру, содержащую текущее GPS- и UTC-время;

Параметр ER_SVSTAT_AVAIL:

erSvStatusStruct *erGetSvStatus(void) - возвращает указатель на структуру, содержащую статус найденных спутников, отношение сигнал/шум, возвышение и азимут;

Параметр ER_FIXSET_AVAIL:

erFixSetStruct *erGetFixSet(void) - возвращает указатель на структуру, содержащую список спутников, участвующих в текущем решении;

Параметр ER_TCO_AVAIL:

int erGetTemperature(void) - возвращает текущую температуру в градусах Цельсия;unsigned long erGetTcoFrequency(void) - возвращает частоту термокомпенсированного генератора в Гц;

Параметр ER_NVDATA_AVAIL:

Флаг указывает, что данные были изменены ядром;

Параметр ER_TESTDATA_AVAIL:

erGpsMeasStruct *erGetTestData(void) - используется для производственных тестов.

Минимально необходимый набор функций для работы с C-GPS:

Запуск GPS ядра

Необходимо несколько раз вызвать функцию erGpsCoreTask для обработки входящих данных. Получение навигационных данных производится через функцию erGetPvt. Опционально можно сохранять данные в энергонезависимой памяти.

Останов системы

erGpsOff, erGpsStandby.

Рассмотренные библиотеки функций eRide в полном объеме позволят добавить GPS-функциональность беспроводному процессору на базе Q2686/87, WMP50/100/150.

Ответственный за направление в КОМПЭЛе - Олег Пушкарев

Получение технической информации, заказ образцов, поставка -
e-mail: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript

Вернуться к содержанию номера







Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.