Cc debugger своими руками

Знакомство с ZigBee.

Пришла пора, для меня, знакомится с ZigBee. Это то чего я боялся больше всего. Ибо придется выучить и прочитать ну очень очень много. Говорю сразу ZigBee это очень сложно.

Все картинки взяты с официального сайта Ti.

Что есть ZigBee я думаю всем и так понятно.

После поверхностного чтения документации становиться ясно, что ZigBee сеть может состоять из трех видов ролей (это терминология Ti, роль — это тип ZigBee устройства).

Сoordinator — это тот кто управляет сетью. Именно это устройство самое главное. Но его наличие в ZigBee сети необязательно.
Router — именно роутеры и организуют ZigBee сеть. Они берут на себя самую сложную часть работы. Вот они и являются самой сложной частью в разработке. Наличие их в сети обязательно. Собственно вся сеть может состоять только из одних роутеров.
End point — Это конечное устройство. То чем и предполагается управлять или получать данные. Наличие их не обязательно. Т.к. с этой ролью запросто справиться любой роутер.

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

Итак уже понятно, что через Сoordinator данные поступаю на сервер. А также сервер может отправлять данные через роль Сoordinator. Router это рабочие пчелки которые строят и поддерживают работу сети. Router могут быть и рабочими как End point. Также Router может превратиться в роль Сoordinator. Одним словом Router — это как стволовая клетка и может быть чем угодно.

ЗАМЕЧАНИЕ: Роутером может быть только и только CC2530F256. Т.к. либа для роутера в Z-Stack весит

160 Кбайт. У CC2530 есть версии 32/64/128/256 Кбайт.

Для начала работы нам потребуется:
— CC-DEBUGGER. Стоит 49$.

— CC2530ZNP Mini Kit или, что нить по круче. Стоит 99$. Кстати при покупке мы в придачу получаем мини программатор/дебаггер для микроконтроллеров MSP430.

Состоит из одного такого модуля.

А по факту мы получаем три идентичных ZigBee модуля (очень маленьких, они действительно очень маленькие), два батарейных отсека и миниатюрный USB программатор.

Этот модуль довольно крохотный. К тому-же у него на задней стороне еще один микроконтроллер MSP430F2274!

ЗАМЕЧАНИЕ : Ti очень часто упоминает, что эти модули можно использовать только для обучения и в ознакомительных целях. В законченных устройствах использовать нельзя. Основной причиной запрета прямых продаж в СНГ стало то, что у нас их использовали не по прямому назначению (это сказала ихняя служба поддержки). Кто-то знает почему они так переживают по этому поводу?

— CC2531EMK это сниффер. Ti настоятельно рекомендует его купить. Заверяют, что он сильно поможет. Стоит 49$.

Это вообще миниатюрный свисток. Можно использовать в роли дополнительного модуля.

Итого для старта нужно 197$.

Из софта нам понадобиться:
— IAR MCS51;
— IAR MSP430;
— Z-Stack;
— SmartRF Studio;
— SmartRF Flash Programmer;
— SmartRF Protocol Packet Sniffer;
— ZigBee Sensor Monitor (скачиваем из раздела CC2530ZNP). Это пример высокоуровневого ПО.
— Setup_CC2530ZNP_Mini_Kit_SW_1.0.1 (скачиваем из раздела CC2530ZNP). Это примеры прошивок для сетевого процессора.
— Setup CC2530ZNP MK Sensor Monitor Network Application (скачиваем из раздела CC2530ZNP). Это пример прошивки для демо проекта.

Со снифером я пока-что еще не разобрался. У него много всевозможных крутилок. Отловленные пакеты показаны довольно красиво и удобно. Понятно, что он предоставляет полезную информацию, но еще предстоит много прочесть много апнотов чтоб понять, что именно полезного он показывает и как выставить нужные фильтры.
Работает прямо со старта. Вставил, винда нашла дрова и готово.

CC2530ZNP Mini Kit довольно крутой и продуманный набор. Но недостатков у него куча. Во первых мы получаем сразу три модуля которые можно юзать как:
— SoC CC2530;
— SoC CC2530 и дополнительный внешний микроконтроллер;
— сетевой процессор под управлением MSP430.

Используя всего один набор можно опробовать сразу все режимы. Функциональность и продуманность довольно высокая. Также есть токовый шунт для оценки энергопотребления.

Но:
— все датчики, светодиоды и кнопка подключены к MPS430. Небольшое неудобство.
— MPS430 нужно программировать через USB свисток. Тоже немного не удобно.
— модули не отшлифованы. Надфилек все исправит.
— по дефолту стоит довольно нудный проект. Который только и делает, что в COM-порт шлет фигню. Проект Sensor Monitor намного веселее. Но для него нужно переставлять прошивки.

Режим сетевого процессора — это когда Ti нам предоставляет готовую прошивку для CC2530 и SoC CC2530 превращается в трансивер с высокоуровневыми API. Мы можем также дописать свои API.
Управление таким процессором осуществляется через UART/SPI/USB. При этом мы не теряем функциональность и не нужно лезть в дебри ZigBee. Так можно очень быстро организовать сеть любой сложности выучив всего лишь небольшой апнотик с описанием API функций. Но это не наш метод =) Да и в этом случае нужно использовать внешний микроконтроллер.

Читайте также:  Дезинфицирующее средство для уборки квартиры своими руками

Решил я минуя апноты открыть пример роли Router. Открываю проект в IAR ииии первая же мысль «Твою ж мать!!» и закрыл. Перед глазами сразу возникает огромный проект с кучей непонятных файлов и очень много исходного кода. И это всего лишь простенькое дэмо =) Решил я закрыть это грешное дело и преступить к чтению апнотов. Это сейчас я и делаю.

Чую голос темной стороны я. Велит он открыть апнот по сетевому процессору.

Немного критики

Ti — это не корпорация добра, а скорее наоборот. Она по круче чем Microsoft стремиться подсадить на свою иглу. И это хорошо у нее получается.

SoC CC2530 — оптимизирован для работы с ZigBee в нем есть специальные мнемоники ускоряющие работу трансивера. Описание содержится в «CC253x System-on-Chip Solution for 2.4-GHz IEEE 802.15.4 and ZigBee® Applications». Это основной апнот который нужно зачитать до дыр. Но ZigBee трансивер описан не полностью. Важные моменты скрыты. Поэтому даже не надейтесь увидеть когданить опенсорс стэк. (Кстати BLE трансивер и вовсе фактически нигде не описан).

Z-Stack является одним из самых лучших. Предоставляется в виде бинарной либы и хеадеров. Это дает нам:
— часть ОС OSAL находиться в этой библиотеке. OSAL — это кооперативка от Ti. Поэтому мы обречены использовать OSAL всегда. В ролях End Point это даже хорошо. Но в роли Router это много неготива. Для больших проектов намного лучше подходить RTOS. Масштабировать проект имея на руках только простершую кооперативку это сущий ад.
— некоторые прерывания находятся в либе. Их даже не смеем трогать!
— некоторые библиотечные функции могут требовать очень много процессорного времени. Так, что в проектах где важна скорость реакции в качестве основы не используем CC2530!
— благодаря либе предсказать размер прошивки почти невозможно. Допустим у нас размер прошивки 50 Кбайт. Добавили использование еще одной функции и размер уже вырос до 100 Кбайт. Во всех новых проектах используем CC2530F256 а уже потом меняем на нужную версию. Они все pin2pin совместимы.

В генераторе случайных чисел нашли закономерность. Если взломщик знает, что AES ключ сгенерен им, то он с легкостью составит список наиболее вероятных ключей. А дальше взломает шифр брутфорсом. Если требуется действительно защищенный канал, то нужно подмешивать дополнительные переменные.

PS: Буду выкладывать только куски кода. Проект коммерческий.

Источник

Топ-10 лучших программаторов и дебаггеров с Алиэкспресс

В жизни любого радиолюбителя наступает момент, когда собранный своими руками программатор хочется заменить на что-то купленное и с бОльшими возможностями. Или расширить номенклатуру совместимых кристаллов. На Алиэкспресс можно найти огромный ассортимент универсальных программаторов и готовые адаптеры для установки микросхем памяти и контроллеров. В подборке будут интересные модели для AVR (ATMega/ATTiny), для PIC, STM8/STM32, для EEPROM, для Zigbee контроллеров и адаптеры.

Все больше становится доступного программного обеспечения, с помощью которого можно настраивать по себя различные модули и устройства. А конкретно, CC-Debugger может использоваться для программирования и отладки систем на базе 8051, например, модулей CC2531, на базе которых производятся гаджеты для умного дома и «интернета вещей». Работает с программным обеспечением IAR и SmartRF Studio.

Хороший пример использования предыдущего отладчика CC-Debugger — это заливка адаптированной прошивки в компактный USB донгл для сети Zigbee. С помощью модифицированного Zigbee трансмиттера можно привязывать устройства в свою сеть, создавать собственные Zigbee-мосты, анализировать протоколы датчиков и так далее.

Один из лучших программаторов для AVR — это классический USBASP, компактный и универсальный программатор, для загрузки программного обеспечения через интерфейс ISP. В комплекте есть кабель для загрузки через ISP на 10 контактов. Подходит не только для семейства ATMEGA8, но и для новых ATMEGA128. Работает в Win7.

А это еще один вариант USB ISP программатора для AVR (семейства ATMega и ATTiny). В отличие от предыдущего имеет выбор питания кристалла (5V или 3.3V джампером), а также в два раза меньшую стоимость. Интерфейс для программирования ISP, но есть смысл воспользоваться отдельным адаптером с ISP10 на ISP6 для удобства работы с компактными отладочными платами Arduino.

Устройство представляет собой полноценный uart-мост и эмулятор последовательного порта. Предназначен для прошивки микросхем памяти (24 EEPROM и 25 SPI flash 8pin/16pin) и микроконтроллеров по spi (AVR, PIC, Singlechip STC). Подходит для восстановления флэш-памяти BIOS USB. Для работы с контроллерами Атмел используется программное обеспечение AVR CH341A или AVRDUDE

Читайте также:  Идей полок своими руками

Для работы с устройствами от STMicroelectronics рекомендую использовать программатор ST LINK. По ссылке версия ST-Link V2, который подходит для чипов семейств STM8 и STM32. Удобен для загрузки встроенного программного обеспечения на контроллер прямо в составе схемы, а также для отладки работы и поиска ошибок. В комплекте есть 4-pin кабель. Цена смешная — полтора бакса.

А вот если нужен адаптер посерьезнее, то есть смысл посмотреть недорогой программатор SWD, который совместим со всеми функциями J-Link. В данной модели интерфейс упрощен до четырех линий: VCC, SWDIO, SWCLK, GND. Но, по сравнению с обычными, этот вариант быстрый и эффективный. Подключается через MicroUSB, корпуса, увы, не предусмотрено. Цена всего 2 бакса.

Один из лучших USB программаторов для PICmicro контроллеров и ключей KeeLOQ производства компании Microchip Technology. В лоте на выбор есть модели: PICKIT3, PICKIT2 или PICKIT 3,5. Лучше брать последние версии устройства. В комплекте идет плата расширения с ZIF-сокетом (PIC ICD2). Полный схемотехнический аналог фирменного программатора PICKIT 3 компании Microchip.

Новейшая версия универсального USB программатора EZP2019 с высокоскоростным интерфейсом SPI с большим набором адаптеров для EEPROM, клипсами и диском с программным обеспечением. Этот вариант несколько лучше дешевого программатора CH341A. Является усовершенствованной версией программаторов EZPO2010/EZP2013. В комплекте есть все необходимое для работы.

Есть еще один хороший вариант — универсальный программатор TL866II, но он не поместился в текст статьи, о нем будет позже.

Рекомендую ознакомиться с другими подборками по другим темам:

Источник

BLE стек от TI. Разработка пользовательских приложений

После написания предыдущего материала про BLE розетку я познакомился со многими
людьми, которыми интересна тема использования BLE в собственных разработках, но есть определенные
сложности в использовании С-программирования с BLE стеком для СС2541. Использование
внутреннего контроллера дает много преимуществ, в частности: прошивка по воздуху, экономия
на внешнем контроллере, сокращение числа точек пайки…
Я решил разбить материал на две части. Первая – это подготовка к работе, программирование и
отладка. Вторая – создание собственного BLE профиля.

1. Подготовка к работе.

Для разработки приложений для СС2541 маст-хэв-набор это:
— CC-debugger – внутрисхемный отладчик для 8051 чипов TI;
— CC2450 USB dongle — для того чтобы быстро и просто проверять характеристики BLE профилей на
экране компьютера;
— ну и собственно какая-нибудь плата с чипом СС2541.
Идеально эти вещи сочетаются в отладочном наборе от TI – CC2541 mini DK. Рекомендую к приобретению.

Из софта нам понадобится:

Без лишних описаний, пройдемся по папкам стека, которые так или иначе потребуются для
работы.
— accessorize – содержит отладочную утилиту BTool, драйверы USB донгла и откомпилированные
образы готовых устройств;
— components – библиотеки (ОС, периферия и BLE);
— documents – папка создает видимость документации на все компоненты и модули;
— projects – примеры проектов.

2. IAR IDE, отладка программ.

Откроем к примеру проект SimpleBLEPerepherial. Пробуем скомпилировать… И я даю 7 из 10, что
проект не соберется. Ошибка происходит из-за того, что линковщик не может уместить в памяти
заданное количество виртуальных регистров. Вариантов решения проблемы два:

— просто уменьшить количество виртуальных регистров с 16 до 8, и делать это для каждого
проекта, надеясь, что он соберется;
— исправить файл конфигурации линковщика (в простом случае это ti_51ew_cc2540b.xcl). В нем
нужно:
1) открыть этот файл (он лежит в папке \Projects\ble\common\cc2540\) в текстовом редакторе;
2) найти строку -Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F;
3) заменить ее на -Z(DATA)VREG=08-7F;
4) наслаждаться проектами, которые начнут собираться.

Подключив отладочную плату к CC-debugger, запустим приложение на ней (Project- Download and
Debug, Debug — Go).

Теперь при нажатии на правую кнопку брелок переходит в режим Advertising, то есть к нему
можно подключиться. Воткнем в USB донгл на базе СС2540. У нас есть два монитора для работы
с этим донглом: удобный BLE device monitor и хардкорный BTool (установочник последнего – в
комплекте со стеком). Воспользуемся BLE Device monitor.

Наиболее важные поля в данном окне:
• поле Handle – порядковый номер записи в таблице сервисов BLE устройства,
• поле Type – указывает тип записи (определяет запись сервиса, характеристику сервиса,
конфигурацию характеристики или же саму характеристику (ее UUID)),
• ну и третье важное поле – поле Value. В случае записи определения
сервиса данное поле собственно говорит UUID сервиса.
Документированные сервисы приведены здесь. Нам же, при условии что мы не являемся членами Bluetooth SIG, 16-
битные адреса сервисов использовать нельзя. Нужно использовать 128-битные UUID. Но об этом
позже.
Поле Value в записи декларации характеристики содержит:
-UUID характеристики (например,
0xFFF3 в примере),
-номер записи в таблице устройства (иначе говоря, handle – 0x002B в нашем
случае)
-порядок доступа к характеристике, определяемый битовой маской (в простейшем
случае – 0x02 – разрешение чтения, 0x08- разрешение записи, 0x10 – разрешение оповещения).

Читайте также:  Арт декоры своими руками

Кроме того, из этого скрина важно почерпнуть, что пользовательская переменная для чтения
или записи определяется тремя записями в таблице устройства (определение характеристики,
значение характеристики, описание характеристики – первое и второе поля обязательны, объявление третьего- правило хорошего тона), а
переменная, которая, изменяясь, уведомляет приложение, помимо этого должна иметь
дополнительную характеристику-конфигуратор, включающую или отключающую уведомление.

Для отладки крайне полезна также утилита Packet Sniffer. Не буду рассказывать подробно,
только скажу, что для работы со снифером пакетов потребуется перепрошить USB донгл прошивкой
sniffer_fw_cc2540_usb.hex, лежащей где-то в недрах папки установки снифера (кстати, я искренне надеюсь, что вам не придется отлаживать приложения на столь низком уровне).

Так выглядят посылки iBeacon в снифере эфира:

3. Механизм функционирования периферийного BLE устройства

Для начала разберемся, как работает периферийное устройство в примере SimpleBlePerepherial.
Основная логика работы программы сосредоточена в файле SimpleBLEPerepherial.c, при этом
функция main расположена в файле SimpleBLEPerepherial_Main.c, но его править, как правило,
смысла нет, поскольку в нем инициализируется периферия и OSAL (некоторое подобие
операционной системы). Используя BLE стек, мы получаем доступ только к части процессорного
времени (с наименьшим приоритетом). Это определяет, в частности, стиль программирования:
большое количество функций обратного вызова, отсутствие бесконечных циклов в теле
программы, максимальное использование прерываний…

Первая пользовательская функция, вызываемая OSAL – функция SimpleBLEPeripheral_Init. В ней:
-определяются параметры будущего соединения;-определяются параметры и состав данных для адвертайзинга;
-регистрируются профили, поддерживаемые устройством, регистрируются кэлбэки этих
профилей;
-в OSAL выдается сообщение, что устройство готово к работе.

Дальше важно обратить внимание на кэлбэк, вызываемый стеком, определяющий параметры
соединения, – peripheralStateNotificationCB. Функция всегда позволяет понимать, установлено ли
соединение с центральным устройством или же нет.

Любые действия (управление выводами, чтение показателей датчиков, и т.д.) настоятельно
рекомендую выполнять в периодической задаче. Для этого понадобится функция из библиотеки
OSAL — osal_start_timerEx(), которой помимо идентификатора пользовательской задачи нужно
передать время, через которое произойдет системное прерывание, и битовую маску события,
которое при возникновении обрабатывается в кэлбэке SimpleBLEPeripheral_ProcessEvent().

4. Поддержка OAD

Теперь рассмотрим функцию OAD – обновление прошивки по воздуху. Сразу отмечу, что
такая функция доступна только в чипах с памятью 256 кБ. Максимально подробно механизм
создания приложений для OAD описан в документе, однако пару моментов прояснить стоит. Во-первых, память на чипе
выделяется для двух образов программы: текущей (исполняемой) и области для программы,
принимаемой по воздуху. Во-вторых, на чип должен быть установлен бутлоадер – загрузчик,
который при старте устройства будет выбирать, какой из образов нужно запустить.
Попробуем создать приложение с возможностью обновления прошивки по воздуху. Первым
делом прошьем чип прошивкой бутлоадера. Для этого скомпилируем проект BIM, находящийся
в папке \Projects\ble\util\BIM, и загрузим в контроллер получившийся образ посредством
Smart RF Flash Programmer (действие Erase, Programm and Verify). Дальше соберем образ, с
которым наше устройство будет стартовать: соберем проект SimpleBLEPerepherial в конфигурации
СС2541-OAD-ImgA (кстати, файл разметки памяти, который мы поправили в самом начале,
в этой сборке изменен, так что придется внести аналогичные изменения еще и в файл
cc254x_f256_imgA.xcl). Дошьем этот образ через Smart RF Flash Programmer (действие Append and
Verify), на этом шаге самое важное – не стереть предпрошитый бутлоадер. Теперь, перезагрузив
чип и подключившись к нему через BLE device monitor, увидим поддержку OAD.

Теперь скомпилируем образ для загрузки по воздуху и загрузим его на чип. Для начала
скомпилируем конфигурацию СС2541-OAD-ImgB. Далее в BLE Device Monitor перейдем во
вкладку File-programm. Убедимся, что чип работает на образе «А», выберем .bin файл в папке
выходных файлов конфигурации «ImgB» и обновим прошивку.

Презагрузим чип, переподключимся и убедимся, что чип работает с образом «B».

Стало быть, прошивка была обновлена и запущена новая версия. Теперь можно выделить для одного из секторов больший объем памяти, но это уже совершенно другая история…

На этом про стек все. В следующей части создадим свой пользовательский BLE профиль. Надеюсь, что для старта работы с СС2541 статья будет полезна.

Источник

Оцените статью