- PVSM.RU - https://www.pvsm.ru -
Последнее время тематика интернета вещей становится все более и более горячей — однако в большинстве случаев, если речь заходит о работе с какими-то базовыми аппаратными решениями, то беседа сводится либо к готовым модулям, либо, реже, к чипам выпуска прошлых лет. Тем временем, в 2015 году компания Texas Instruments выпустила очередную линейку систему на кристале CC13xx-CC26xx — крайне интересных с точки зрения соотношения производительности, энергопотребления и возможностей. Эти випы имеют на борту основное ядро ARM Cortex-M3, второе ядро Cortex-M0, эксклюзивно обслуживающее радиочасть, и… да, ещё и третье ядро — собственное 16-битное ядро TI для работы с периферией, так называемый Sensor Controller. При этом и по энергопотреблению комбайн получился крайне скромным — даже радиочасть значительно убавила по сравнению с чипами предыдущего поколения, CC2538.
Мы уже писали обзор существующих стандартов связи, в котором остановились на наиболее современном стандарте 6loWPAN. Данный стандарт описывает сетевой и транспортный уровни модели OSI, а физический и канальный уровни стандартизованы IEEE 802.15.4. Texas Instruments позаботились о нас, и отдали обработку MAC-уровня отдельному ядру Cortex-M0. Остальные уровни нужно обрабатывать на Cortex-M3. И тут нам на помощь приходит операционная система реального времени Contiki, в которой реализована поддержка стека 6loWPAN.
Однако традиционная проблема с новыми чипами — нехватка «коллективного опыта», то есть подробных описаний работы с ними, обхода багов и тому подобных вещей.
Что ж, будем его восполнять. Начнём с базового — сборка и отладка операционной системы Contiki для чипов CC2650. Допустим, мы еще любим красивые графические среды и отладку в них. Поэтому мы будем собирать Contiki под TI Code Composer Studio 6. Я пользуюсь Ubuntu 14.04 X86_64 для разработки, шаги под Windows будут очень похожи, за исключением установки тулчейна. В конце есть немного вкусностей...
Для начала нужно собрать голый репозиторий Contiki [1]. Выкачиваем:
git clone --recursive https://github.com/contiki-os/contiki.git
Собирать будем с помощью родной для проекта системой сборки GNU Make + GCC. Предполагается, что Make у вас уже стоит, виндоюзеры могут поставить его в составе CygWin. Скачиваем gcc-arm-none-eabi [2] для соответствующей операционной системы и распаковываем куда удобно. Не забываем прописать в PATH!
wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2
tar xz gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2
cd gcc-arm-none-eabi-4_9-2015q3
export PATH=$PATH:`pwd`/bin
arm-none-eabi-gcc –v
Устанавливаем утилиту для склеивания прошивок SRecord [3], необходимую для сборки.
sudo add-apt-repository ppa:pmiller-opensource/ppa
sudo apt-get update
sudo apt-get install srecord
Теперь попробуем собрать код. Заходим в сорцы и пробуем собрать. $CONTIKI_DIR
заменяем на свой путь. Собираю я обычно в 4 потока, количество регулируется параметром -jN
cd $CONTIKI_DIR/examples/cc26xx
make -j4 TARGET=srf06-cc26xx BOARD=srf06/cc26xx cc26xx-demo
ls cc26xx-demo.srf06-cc26xx
Собралось, отлично, идем дальше.
Один из путей залить прошивку на сам чип это пользоваться отдельными флешерами. Техас предлагает под линух софтину Uniflash [4], скачиваем и устанавливаем. Процесс установки хорошо описан в этом документе [5], раздел 4.9.
Для отладки я пользовался комплектом TI SRF06EB + CC2650, так что на его примере и буду показывать.Создаем новую таргет конфигурацию. Програматор с чипом должен быть уже подключен.
Заходим в Programs, открываем файл прошивки Add и жмакаем Program.
Все, можно было бы на этом закончить, но иногда в разработке нужно воспользоваться отладкой, поэтому идем дальше.
Скачиваем TI Code composer Studio for Wireless Connectivity [6] для своей платформы. Для установки настоятельно рекомендую воспользоваться installation guide [7] с сайта TI.
make -j4 TARGET=srf06-cc26xx BOARD=srf06/cc26xx
и путь до директории, нажав кнопку Workspace...vim /etc/profile.d/env_vars.sh
export ARM_TOOLCHAIN_HOME=/home/$USER/soft/gcc-arm-none-eabi/gcc-arm-none-eabi-4_9-2015q3
export PATH=$PATH:$ARM_TOOLCHAIN_HOME/bin
CFLAGS += -g
-O2
и -Os
на -O0
Описанная последовательность действий является чуть ли не единственно рабочей. На пути к этому было потрачено много времени и нервов, вплоть до обращения в тех-поддержку TI. Есть еще возможность использовать голый Eclipse в качестве среды, но мои изыскания показали, что это условно рабочее решение. Мне так и не удалось запустить отладку в Eclipse, проблема заключалась в GDB-сервере, который никак не хочет подгружать возможность использования hardware-breakpoints. Если кто хочет попробовать, путь описан в документе TI SWRA446 [5].
27 февраля будет проходить офлайн встреча [8] блога Catethysis.ru, на которой буду в этот раз рассказывать и показывать как програмировать MESH-сети. Всех, кто дочитал до конца, милости просим!
Автор: Unwired Devices LLC
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/texas-instruments/112811
Ссылки в тексте:
[1] Contiki: https://github.com/contiki-os/contiki.git
[2] gcc-arm-none-eabi: https://launchpad.net/gcc-arm-embedded/+download
[3] SRecord: http://srecord.sourceforge.net/download.html
[4] Uniflash: http://www.ti.com/tool/uniflash
[5] этом документе: http://www.ti.com.cn/cn/lit/an/swra446/swra446.pdf
[6] TI Code composer Studio for Wireless Connectivity: http://www.ti.com/tool/ccstudio-wcs
[7] installation guide: http://processors.wiki.ti.com/index.php/Linux_Host_Support_CCSv6
[8] встреча: https://vk.com/catethysis_ru_meeting
[9] Источник: https://geektimes.ru/post/271360/
Нажмите здесь для печати.