TI Z-Stack быстрый старт

Продолжаем рассмотрение документации на SDK и вот следующая тема. Данный раздел документации освещает тему использования TI Z-Stack в приложениях пользователя.

Все демо проекты в SDK содержат README.html файл, в котором дана детальная информация о самом проекте, из чего он состоит и как работает. Самый простой способ начать разбираться в данной теме это импортировать уже готовый пример из SDK, именно таким является zc_light, его и откроем. Есть два способа это сделать первый через Resource Explorer и второй через Import Wizard.

Импорт проекта в ccstudio с помощью Resource Explorer

  1. Открываем ccstudio.
  2. Открываем Resource Explorer через меню View > Resource Explorer → Software → SimpleLink CC13x2 / 26×2 SDK → Examples → Development Tools → CC13x2 or CC26x2 LaunchPad → Z-Stack → zc_light → TI-RTOS → CCS Compiler → zc_light
  3. Выбираем кнопку с логотипом CCS для импорта проекта в Project Explorer. Если все прошло корректно, то вы увидите импортированный проект в дереве проектов ccstudio.

Несложно, но мне больше нравится второй вариант, к тому же он более универсальный, т.к. чаще вам придется открывать собственные проекты, а их в Resource Explorer конечно же нет.

Импорт проекта в ccstudio с помощью Import Wizard

  1. Открываем ccstudio.
  2. Выбираем меню Project > Import из главного меню.
  3. Жмем кнопку Browse и ищем нужный нам проект в <SDK_INSTALL_DIR>/examples. Для это выбираем примеры с TI Z-Stack и ищем в директории zc_light.
  4. Жмем Finish и заканчиваем импорт.

Сборка и загрузка проекта

  1. Чтобы собрать проект достаточно выбрать в меню Project > Build all, перед этим удостоверившись, что выбрана конфигурация Debug для активного проекта.
  2. Далее в меню Project > Properties > Debug > Flash Settings устанавливаем чекбокс All Unprotected Sectors в Erase Settings during Program Load как показано на скриншоте ниже. Это обеспечит сброс памяти от предыдущих сборок проекта.
ccstudio flash settings настройки flash памяти
  1. Для загрузки билда в отладочную плату используем меню Run > Debug. После запуска сессии отладки просто жмем красный квадрат.

Перед тем как рассматривать демо проект, немного о полезных настройках ccstudio.

Полезные настройки ccstudio

В ccstudio имеется большое количество настроек, которые могут быть весьма полезными для разработчика. К примеру ccstudio может уменьшить время компиляции за счет использования нескольких ядер компьютера.

Для использования данной функции необходимо выбрать чекбокс Enable Parallel Build в меню Project > Properties > Build > Builder как показано ниже.

ccstudio enable parallel build

Уменьшение уровня оптимизации в меню Build > ARM Compiler > Optimization также может уменьшить время компиляции за счет увеличения размера исполняемого кода. Пользователям ccstudio предоставляется возможность контролировать общее количество информации в окне Console в процессе компиляции и линковки от Verbose (Полный вывод всех сообщений) до Super quiet (Вывод только важной информации). Чтобы изменить данные настройки достаточно выбрать соответствующий пункт из выпадающего списка в меню Window > Preferences > Code Composer Studio > Build.

code composer studio вывод сообщений

Доступ к Preprocessor Symbols

В процессе разработки необходимо бывает изменить или добавить определенные макроопределения (Preprocessor Symbols или Predefined Symbols), которые используется в процессе компиляции для сборки проекта.

Доступ к ним можно получить в меню Project > Properties > Build > ARM Compiler > Predefined Symbols. Для добавления, удаления и редактирования макроопределений препроцессора можно использовать кнопки, выделенные на скриншоте.

code composer studio символы препроцессора

Другие параметры проекта, которые берутся из include файлов проекта, можно отредактировать в настройках проекта. Для этого в Project Explorer жмем правой кнопкой на имени проекта и выбираем пункт Properties контекстного меню и далее заходим в меню Build > ARM Compiler > Include Options. Здесь все редактируется аналогичным способом.

На рисунке ниже представлена последовательность действий в изучении TI Z-Stack:

ti zigbee stack

Разберем же каждый шаг подробнее.

Запуск демо проектов

Пример Light & Switch это тот первый демо проект, который нужен разработчику, начинающему знакомство с Zigbee и стеком TI Z-Stack, так называемый Project Zero для TI Z-Stack. Данный пример поможет быстро ознакомиться со стеком и разработкой в ccstudio.

Пример может быть изменен по желанию разработчика и, имея две разные платы LaunchPad-CC26x2R1, можно быстро создать Zigbee сеть. Одна плата должна работать как Light Coordinator, а вторая как Switch End Device. В данной конфигурации Switch будет управлять светом.

Light Coordinator

Данный проект мы уже запустили немного ранее в этой статье на одной из имеющихся у меня плат LAUNCHXL-CC26x2R1. Данный проект позволяет:

  • Настроить конфигурацию базового поведения устройства.
  • Осуществляет светодиодную индикацию при поиске и связывании других устройств в сети.

Файлы приложения:

  • zcl_samplelight.c / .h содержат цикл событий, вызовы функций иницилизации устройства (для таймеров, периферии, Nvm, светодиодов, кнопок, последовательного порта), уведомления стека Zigbee и всю логику управления светом.
  • zcl_samplelight_data.c содержит атрибуты, кластеры и endpoint’ы данного примера.
  • main.c определяет задачи и размер стека приложения.
  • bdb_interface.h параметры запуска приложения (см. zclSampleLight_initParameters()).

Кроме всего прочего есть также графическая утилита настройки. SysConfig это GUI утилита конфигурации, которая позволяет настроить драйвера и TI Stack. Чтобы запустить ее, достаточно дважды щелкнуть на файле *.syscfg в Project Explorer ccstudio, где * имя нашего проекта, т.е. zc_light.syscfg. Откроется окно SysConfig GUI, в котором можно произвести настройки и все изменения будут отражены в сгенерированных файлах.

Данная утилита очень похоже на CubeMX для STM32.

Данный пример уже поставляется с готовыми настройками SysConfig и менять настройки драйверов для работоспособности примера не рекомендуется. Но можно изменить настройки Zigbee стека для вашего применения.

Обратите внимание, что некоторые настройки стека Zigbee сохраняются в энергонезависимой памяти и Z-Stack считает их более приоритетными нежели настройки SysConfig. К таким настройкам относится в частности информация о подключаемых к координатору End-Device устройствах. Поэтому, чтобы гарантировать применение настроек SysConfig необходимо выполнить сброс к заводским настройкам, для очистки энергонезависимой памяти контроллера. Чтобы выполнить сброс сетевых настроек необходимо записать 0x2 (или 0x3) в ZCD_NV_STARTUP_OPTION, делать это можно по нажатию на кнопку. Но более подробно об этом в других статьях, где я уже буду лезть в настройки стека более глубоко.

Теперь немного о том как использовать проект.

Кнопка BTN-1 начинает процесс сопряжения (более полный обзор данного процесса).

Кнопка BTN-2, если зажать перед сбросом осуществляет сброс к заводским настройкам (стирает данные сети и приложения).

Светодиод DIO6 включен, если включен «Свет», в противном случае выключен.

Светодиод DIO7 включен всегда, в процессе связывания начинает быстро мигать.

При подключении отладочной платы создается последовательное соединение, которое можно найти в Linux /dev/tty*, для подключения я обычно использую CuteCom, можно также использовать Putty, если вы пользуетесь Windows. Но в данном случае пришлось запустить консольный screen, который работает адекватно с меню Launchpad.

Параметры соединения следующие:

Baud-rate:     115200
Data bits:          8
Stop bits:          1
Parity:          None
Flow Control:    None

Запуск осуществляется командой screen /dev/ttyACM0 115200

Через последовательный порт можно контролировать процесс сопряжения (реализован в zcl_sampleapps_ui.c / .h.) и поведение приложения.

Zigbee координатор может только создавать сеть, а другие устройства должны подключаться к ней.

На второй плате будет запущен проект Switch End Device.

Switch End Device

Файлы приложения:

  • zcl_samplesw.c/.h содержат цикл событий, вызовы функций инициализации устройства (для таймеров, периферии, Nvm, светодиодов, кнопок, последовательного порта), уведомления стека Zigbee и всю логику выключателя.
  • zcl_samplesw_data.c содержит атрибуты, кластеры и endpoint’ы данного примера.
  • main.c определяет задачи и размер стека приложения.
  • bdb_interface.h параметры запуска приложения (см. zclSampleSw_initParameters()).

Настройки проекта аналогичны и можно сразу переходить к рассмотрению того, как использовать пример.

Кнопка BTN-1 начинает процесс связывания с координатором сети.

Кнопка BTN-2 при длительном нажатии перед сбросом осуществляет сброс к заводским настройкам (стирает данные сети и приложения).

Кнопка BTN-2 при нажатии осуществляет включение / выключение устройства управления светом, в нашем случае светодиодом DIO6 на первой плате Light Zigbee координатора.

Интерфейс последовательного порта аналогичен координатору.

Соединение Light Coordinator и End Device Switch

Статья получается довольно затянутой, а информации еще много, так что продолжение в следующей статье, которая будет скоро.

Обновление. Статья уже в блоге, ознакомиться можно по ссылке.

Дальнейшее изучение TI Z-Stack

SimpleLink Academy ресурс, который создан для помощи в освоении фундаментальных знаний в Zigbee и TI Z-Stack, а также в освоении микроконтроллерных платформ беспроводной передачи данных.

TI-RTOS Kernel Workshop помогает в изучении TI-RTOS и операционных систем реального времени в целом. Узнать больше об оптимальном энергопотреблении и управлении им можно из обзора.

Разработка нового приложения на базе TI Z-Stack

Для тех, кто готов начать разрабатывать собственное приложение на стеке TI Z-Stack, TI предлагает следующую последовательность действий:

  1. Скачайте и установите SDK, который уже включает ядро TI-RTOS, драйвера периферии и стеки.
  2. Начните работать в IDE, как начать работать в ccstudio, а также процесс установки я описал в предыдущей статье.
  3. Разберите пример проекта Project Zero, данный проект призван ввести разработчика в нюансы работы с SDK и основы Zigbee, дает инструкции по программированию LaunchPad отладочных плат, установке сети Zigbee и перехвату OTA сообщений.
  4. Ознакомьтесь с руководством пользователя Z-Stack. Для этого есть руководство Z-Stack User’s Guide, которое содержит документацию по архитектуре стека, API и предложения по разработке приложений.
  5. Выберите пример проекта. TI Z-Stack содержит большое количество демо приложений, которые могут стать отправной точкой в разработке собственного приложения, примеры и их импорт были рассмотрены мной чуть выше.
  6. Изыскивайте решение проблем. В процессе разработки нередко бывает нужна отладка и сниффер пакетов. Глава об отладке Z-Stack User’s Guide поможет сконфигурировать отладчик правильно. Глава Packet Sniffer даст понимание как правильно работать со сниффером пакетов.

Обновление. Я написал небольшой туториал, который поможет вам начать работать со сниффером пакетов Zigbee на базе CC2531 USB стика.

Усовершенствуйте свой проект

Конкретных рекомендаций в данном пункте TI не дает, изучайте Zigbee, изучайте TI Designs и на этом все.

Получение поддержки

E2E сообщество TI может помочь в поиске ответа на практически любой вопрос, касательно Zigbee и CC26x2. Также вы можете писать в наш чат и я постараюсь найти ответ на ваш вопрос.