Алтайский государственный университет
Опубликован: 05.06.2014 | Доступ: свободный | Студентов: 1627 / 778 | Длительность: 08:16:00
Лекция 4:

Примеры аппаратных решений решения для беспроводных сетей различных технологий

NanoStack 2.0 lite

Решения Texas Instruments для 6LoWPAN основываются на собственных аппаратных и программном обеспечении фирмы-партнера Sensinode Ltd - одного из лидеров в области программных продуктов для 6LoWPAN. Компанией Sensinode разработан стек протоколов NanoStack lite 2.0 для организации сетей 6LoWPAN.

6LoWPAN является более простым по структуре, чем стек ZigBee, более прозрачным с точки зрения прикладного программного обеспечения. Следствием этого является меньший объем бинарного кода, так для стека Sensinode NanoStack составляет примерно 20 КБ, что в среднем в 4-6 раз меньше размера стека ZigBee.

По сути, NanoStack 2.0 lite является операционной системой ориентированной на обработку событий. Периферийные устройства, такие как таймеры, АЦП, интерфейсы ввода-вывода обрабатываются в основной программе. Обработка прерываний осуществляется драйверами устройств.

Также как и стек протоколов ZigBee, NanoStack lite 2.0 использует физический и канальный уровни стандарта 802.15.4.

Стек протоколов NanoStack может применяться как на однокристальных системах - системы-на-кристалле серий CC430, так и в связке сетевой процессор СС1180 плюс микроконтроллер. Для поддержки этого в состав стека входят два различных набора API-функций: NAPSocket API и NanoSocket API. Программный интерфейс предоставляет возможности для работы приложения в сети, такие как опрос узлов, конфигурирование беспроводных сетевых интерфейсов.

Для построения маршрутов стек NanoStack от Sensinode использует протокол RPL 0.13 (draft-ietf-roll-rpl-13 от IETF). Гибкий механизм определения метрик позволяют настроить протокол на определение путей в соответствии с требованиями конкретного приложения. При этом в NanoStack протокол RPL входит как модуль, что позволяет Sensinode производить его независимую модернизацию и оптимизацию. NanoStack позволяет формировать при наличии соответствующей вычислительной мощности у граничного маршрутизатора формировать достаточно большую и разветвленную сеть 6LoWPAN - максимальное количество переходов в маршруте (хопов) 254. Единственным ограничением является то, что от данные от узла к узлу всегда проходят через граничный маршрутизатор.

Структура стека NanoStack lite 2.0 представлена на Рис. 4.4. Каждому узлу ставится в соответствие ранг, таким образом, что он возрастает по мере удаления узла от граничного маршрутизатора. В протоколе RPL это называется ориентированным направленным графом расстояний (Destination Oriented Directed Acyclic Graph - DODAG). Пересылка пакета граничному роутеру состоит в пересылке его соседнему узлу с наименьшим рангом. Узлы, на которых запущен RPL обмениваются сигнальной информацией (т.н. информационные объекты графа расстояний - объекты DAG или DIO) для поддержания графа DODAG в актуальном состоянии. Все узлы в сети периодически генерируют DIO пакеты для оповещения соседей о своем ранге. Каждый узел кроме информации о ближайшем маршрутизаторе, хранит информацию о нескольких альтернативных с большими рангами (от 0 до 3 альтернативных узлов), и при выходе из строя маршрутизатора или нарушении связи с ним, передача пакетов будет идти через один из резервных узлов. Это позволяет обеспечить сети отказоустойчивость. Все беспроводные узлы, работающие под управление NanoStack lite способны выполнять роль маршрутизаторов.

Структура стека протоколов NanoStack lite 2.0

увеличить изображение
Рис. 4.4. Структура стека протоколов NanoStack lite 2.0
NanoSocket API

Для систем-на-кристалле (для случая выполнения стека протоколов и прикладной задачи на одном контроллере) используется библиотека NanoSocket API [34, 35] (Рис. 4.5), предоставляющая интерфейс для задания настроек беспроводного приемопередатчика, стека протоколов и работы с самим стеком. Библиотека подключается на этапе компиляции проекта в среде IAR и представляет собой файл библиотеки .lib с несколькими заголовочными файлами.

Взаимодействие стека протоколов NanoStack с прикладным приложением

увеличить изображение
Рис. 4.5. Взаимодействие стека протоколов NanoStack с прикладным приложением

Командный интерфейс отвечает за обработку всех запросов и ответов на них, связанных с конфигурацией узла, стека протоколов или сети. Сокетный интерфейс используется при обмене данными 6LoWPAN. События генерируются при приходе пакетов данных, ответов на запросы или других событий стека NanoStack 2.0.

Для обработки событий стека протоколов пользователь переопределяет функцию tasklet_main(). Данная функция вызывается каждый раз при приходе данных в буфер сокетов или при генерации событий стека.

Основные типы обрабатываемых событий, кроме событий, связанных с приемом или передачей данных являются:

  • инициализация библиотеки;
  • прием данных через UART;
  • события таймера;
  • ряд служебных событий стека.
Сетевой процессор CC1180

Сетевой процессор CC1180 является системой-на-кристалле CC1110F32 поставляющейся с прошитым стеком протоколов NanoStack 2.0 Lite компании Sensinode для сетей 6LoWPAN [30, 13]. CC1180 выполняет все критически важные и ресурсоемкие процессы, связанные с работой сетевых протоколов, экономя ресурсы внешнего микроконтроллера для решения прикладных задач. Взаимодействие с внешним контроллером (часто называемого прикладным контроллером или контроллером приложений) осуществляется по интерфейсу UART с протоколом обмена NAP. Например, возможно использование микроконтроллеров серии MSP430 или любых других. Сетевой процессор позволяет легко расширить функциональность создаваемой или существующей системы за счет подключения к 6LoWPAN сети.

Версия прошивки стека может быть обновлена при помощи т.н. загрузчика NanoBoot, позволяющего загрузить образ стека в микроконтроллер.

Протокол NAP содержит небольшое количество достаточно простых функций, позволяющих настраивать параметры беспроводного узла, принимать и передавать данные. Программный интерфейс близок к сокетам, знакомым по TCP/IP сетям, что отчасти упрощает жизнь прикладному программисту.

Ключевые особенности:

  • простая интеграция в сеть 6LoWPAN;
  • распространенный UART интерфейс;
  • простой и функциональный протокол взаимодействия;
  • обновление прошивки через радио (при условии, что у узла достаточно памяти для временного хранения образа);
  • большой выбор возможных диапазонов частот - 315/433/868/915 МГц;
  • выходная мощность радиосигнала от -30 до +10 дБм;
  • скорости передачи данных: 50, 100, 150, 200 Кбит/с;
  • AES шифрование в пределах подсети;
  • диапазон напряжений питания от 2 до 3.6 В;
  • компактные размеры - корпус QFN36 - 6x6 мм.
NAPSocket API

При работе с сетевым процессором CC1180 приложение на хост-контроллер компилируется совместно с библиотекой NAPSocket API, аналогично содержащей скомпилированную библиотеку и набор заголовочных файлов [33-35]. Функции, предоставляемые NAPSocket API аналогичны функциям NanoSocket API с тем отличием, что библиотека выполняется на отдельном микроконтроллере и обмен сообщениями и данными с частью стека, выполняемой на сетевом процессоре, происходит по последовательному интерфейсу (UART или SPI) при помощи протокола NAP [8] (Рис. 4.6). В случае с процессором CC1180 используется UART интерфейс. Также как и в предыдущем случае, прикладной программист должен определить функцию, ответственную за обработку событий. Обработчик событий прописывается при вызове функции инициализации библиотеки - library_init() [33, 35].

Взаимодействие внешнего контроллера с сетевым процессором

увеличить изображение
Рис. 4.6. Взаимодействие внешнего контроллера с сетевым процессором

В принципе, разработчик может взаимодействовать с СС1180, не используя NanoSocket API, самостоятельно формируя и обрабатывая сообщения NAP протокола.

Обе библиотеки для передачи данных между узлами предоставляют привычный интерфейс сокетов с поддержкой основных операций: socket, bind, send, read, close и ряда других. Также выделены API для настроек беспроводного приемопередатчика: выходная мощность, скорость передачи данных, режим перестройки частот, разнесение каналов, и функции конфигурации сети: старт сети, остановка сети, задание AES ключа и т.д.