Прошивки

Прошивки для шлюзов, стиков, а также конечных устройств. Как прошивать и как создавать свои

Прошиваем СС2538 с помощью J-Link

Вариант 1

После появления координатора Zigbee на чипе СС2538, начали поступать вопросы как загрузить прошивку в этот модуль. Постараюсь описать один из вариантов.

Как мне видится самый простой способ, это использовать программатор от Segger. Можно приобрести оригинальный или клон, тут каждый сам решает для себя. Производим соединения согласно схемы В клоне на выходе VTref присутствуют необходимые нам 3,3 вольта (внутри программатора установлен джампер) используем этот пин для питания модуля. Соответственно нужно убедится  в наличии 3,3 вольт. Решив железную сторону вопроса можно заняться программной частью. Для начала идем на сайт производителя и скачиваем нужное нам ПО После установки видим массу приложений на все случаи жизниПервым делом запускаем J-Link Configuratorубеждаемся что система видит программатор, при необходимости обновляем ПО. Запускаем J-Link RDI Config, открываются 2 окна. Выбираем J-Link DLL ConfigОткрывается еще одно окно. На данном этапе теоретически должен определиться подключенный чип,но как видно на моем скриншоте этого не произошлопоэтому выберем его принудительно. Выбрав пункт AUTO и согласившись с предупреждениями выбираем в открывшемся меню производителя Ti и модель СС2538SF53В результате должно получиться такУбедившись что все соответствует скриншотам, запускаем J-Link Flash создаем новый проект и выбираем чип Выбираем файл прошивкии  записываем  в чипНа этом все. Инструкция не претендует на полноту освещения вопроса, это всего лишь мой опыт.

Вариант 2

Прошиваем стик-cc2538 без усилителя. Это относительно редкий вариант и встречается пока у одного продавца на Aliexpress.

Можно использовать и J-Link V8, который внешне выглядит примерно также, но чуть дешевле чем версия V9 из Варианта 1. Сперва конфигурируем J-Link как в Варианте 1.

jlink1.PNG

Распиновку интерфейса JTag смотрим у производителя. А соответствующие контакты - на стике.

181129_JTAG.svg

Соединяем и подключаем к J-Link.

Для прошивки можно использовать утилиту J-Flash Lite из того же набора утилит SEGGER.

Выбираем производителя и чип нашего устройства СС2538SF53, указываем интерфейс JTAG и скорость 1000 kHz.

Можно первым действием очистить чип, вызвав Erase Chip. Затем выбираем файл прошивки и нажимаем Program Device.

(между очисткой чипа и прошивкой понадобиться выдернуть и воткнуть usb-разъем от JLink, иначе чип не находится)

Снимок.PNG

Прошивка cc2531/cc2530

Прошить модули и устройства на чипах cc2531/cc2530 можно несколькими способами.

Прошивки для координатора можно найти в проекте zigbee2mqtt https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator.

Прошивки для роутера можно найти тамже в соседнем каталоге https://github.com/Koenkk/Z-Stack-firmware/tree/master/router.

Прошивка через CCDebugger

Приобрести CCDebugger можно например тут, либо чуть иной блок или даже вот такой.

Нужен прошивальщик SmartRF Flash programmer v1.

Процесс прошивки очень быстрый https://www.youtube.com/watch?v=4L7s2lP5SUw

Описание этого процесса есть в проекте zigbee2mqtt или тут 

Прошивка используя Arduino/ESP/Raspberry

Прошивать можно напрямую с raspberry pi без дополнительных контроллеров - хорошо описано тут https://kvvhost.ru/2019/05/29/zigbee2mqtt-cc2531-raspberry-pi/

Остальные методы можно найти в проекте zigbee2mqtt https://www.zigbee2mqtt.io/information/alternative_flashing_methods.html

Еще один вариант - использовать VLK_DIY_Multi_Flasher от телеграм-пользователя @DJONvl. Перед прошивкой, настоятельно рекомендуется, выполнять команду "Chip Erase".

Обновление прошивки используя SerialBootLoader

Спасибо за информацию https://github.com/itsmepetrov

Прошивки ZNP для cc253* имеют встроенный бутлоадер, который можно использовать для заливки обновленной прошивки в стик cc2531 или просто чип cc2530 без использования CCDebugger или Arduino, а через USB/UART.

Но для этого потребуется не обычная hex-прошивка, а специальная sbl-прошивка (Serial Boot Loader). Для координатора их можно найти в архивах по адресу https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator (файлы с расширением .bin).

Под Windows sbl-прошивку надо прошивать через SerialBootTool. Она идет в комплекте с IAR, либо можно скачать отдельно тут http://processors.wiki.ti.com/index.php/File:SerialBootTool_1_3_2.zip

При старте SerialBootTool надо выбрать Zigbee. Затем выбрать SBL-прошивку (bin-файл). Выбрать и указать параметры порта, где подключен cc253*.

После этого, надо заново вставить стик cc2531 или отключить и заново подключить плату с чипом cc2530 и нажать Load Image. Именно в первую минуту после подключения доступен режим бутлоадера!!!

Выполнится прошивка и чипом снова можно пользоваться.

Под Linux тоже есть такая утилита, работа с ней описана тут, а сам прошивальщик можно скачать тут https://github.com/kirovilya/files/blob/master/sbl_tool.bin

VLK DIY Multi Flasher

Общаясь на разных ресурсах заметил что у новичков возникает много вопросов при попытке что либо повторить. Особенно когда доходит дело до прошивки своих устройств, иногда и вовсе пропадает желание сталкиваясь с проблемами. Читая кучу разрозненной информации в интернете, бывает сложно применить это на практике, поэтому решил собрать все в одном месте. Это конечно не "однокнопочное" решение, но тем не менее позволяет уйти от командных строк и тп.

Интерфейс постарался сделать максимально простым, поэтому пройдемся по порядку что для чего

Для прошивки Zigbee модулей с чипом СС2530/СС2531, а так же BLE CC2540/CC2541 существуют родные для них программаторы и софт от ТИ  (но мы же забЫли или забИли их заказать вместе с модулями) поэтому будем использовать arduino.

Нужна любая плата на чипе atmega328 16Мгц (под 8Мгц тайминги не подходят,  позже сделаю и под них), а раз у нас arduino то и шить будем через COM порт. Для этого вверху в выпадающем списке выбираем номер COM порта на котором у нас прописалась плата в системе, рядом кнопка [Update] -служит для обновления списка портов( если вдруг программу запустили, а плату не подключили).

Плата подключена, чип модуль распаян в соответствии с таблицей можно шить.

[Make flasher] для прошивки нам потребуется агент - эмуляция родного флешера, этой кнопкой он и загрузится в arduino, жмем и выбираем скорость UART бутлоадера на вашу плату и жмем [Ok]

если точно не знаете можно экспериментально попробовать на разных скоростях

После прошивки имеем эмулятор оригинального флешера-смело жмем кнопку [Connect ]

Если ничего не произошло и видим такой статус, проверяем правильность распайки и если все верно пробуем еще раз, но сначала кнопка [Reset] она шлет посылку на вход DTR на оригинальных платах он используется для сброса процессора, по приходу этого сигнала, но для уверенности лучше сброс продублировать  кнопкой на плате или выдергиванием шнурка и обратным подключением.

Если все прошло удачно, должны увидеть такую картинку, target чип откликнулся отдал свой ChipID  и  готов к прошивке. Очень часто бывает новые чип модули идут уже прошитые и на них стоит Lock Bit, поэтому жмем кнопку [Chip Erase] что приводит к полной очистке памяти нашего чипа.

[...] кнопкой выбираем наш файл для прошивки с локального жесткого диска или выбрав  пункт [Online] появится список проектов доступных для скачивания и прошивки. (опция временно не работает).

Для старта непосредственно процесса прошивки жмем кнопку [Write].  Время прошивки в среднем 50-70сек.

Так же в качестве агента эмулятора можно использовать платки с чипом ESP32 для этого необходимо прошить сам чип на вкладке ZESP а потом вернуться на первую вкладку для прошивки зигби модуля

Скачать

 

Собираем прошивку zigbee из исходников

Оригинальная статья от sigma7i

Собираем прошивку zigbee из исходников.

В этой статье я постараюсь описать процесс сборки прошивки под zigbee c использованием среды IAR Embedded Workbench® for 8051.

Предисловие:

Сразу надо ответить на вопрос: а почему бы сразу не дать прошивку? На это есть множество причин:

  1. Это противоречит философии опенсорс: если Вы захотите что-то подправить то у вас это не получится.
  2. Если вы найдете ошибку/доработку/оптимизацию но автор уже давно закинул проект, то не имея исходного кода проект просто напросто “умрет”.
  3. Если Вам понадобится поменять, что то очень простое, под себя, даже не умея программировать всегда можно разобраться, какие цифры за что отвечают.
  4. Когда есть открытый код, и информация как все собрать вместе, написанная доступным языком, есть всегда возможность поэкспериментировать с настройками, разобраться что и как работает.

И много других плюсов.

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

Установка среды разработки

В качестве среды разработки будет использоваться IAR Embedded Workbench, где цифра 8051 это архитектура чипа, а не версия системы, как можно подумать. Для начала необходимо ее скачать по ссылке

Запускаем, необходимо выбрать пункт "Install IAR Embedded Workbench® for 8051"

При установке iar надо выбрать режим custom:

и убрать галочку с установки Dongle drivers

При попытки запуска проекта может быть такая ошибка:

Поэтому перед запуском проекта необходимо убедиться что python установлен. Проверить это можно в командной строке:

python –-version

Если все хорошо, то покажет текущую установленную версию python, как на примере: 

Если же нет, то идем устанавливать python  Устанавливаем его. Обязательно необходимо проставить галочку "add python **** to path"

Устанавливаем git и простой клиент для него.

заходим и скачиваем git Устанавливаем, все галочки можно оставить по умолчанию.

заходим на сайт https://tortoisegit.org/ Скачиваем программу в зависимости от разрядности системы(ну или просто выбирайте 32 bit, никакой существенной роли не играет) По необходимости можно скачать русификацию. В этой инструкции делать это не буду.

Устанавливаем tortoisegit, после установки ставим галочку "Run first start wizard"(обычно она по умолчанию стоит) По умолчанию пропишется путь к git.exe, либо нужно самому указать путь.

Сразу можно сгенерировать ssh ключи "Generate PuTTy key pair":

Нажимаем generate, активно двигаем мышкой/нажимаем на клавиши(человек выступает в роли ГСЧ) После генерации сохраняем приватный ключ "Save private key", публичный ключ(на рисунке он начинается "ssh-rsa AA..."), копируем в буфер обмена (можно так же сохранить его сохранить по необходимости "Save public key")

Заходим в свой аккаунт git в раздел SSH keys

Нажимаем "Add new" вставляем скопированный ранее публичный ключ. 

Устанавливаем прошивку Z-Stack 3.0.2 — это SDK для разработки прошивок.

Отвечаем на каверзные вопросы, скачиваем.

Устанавливаем, можно немного уменьшить путь до zstack: C:\Z-Stack 3.0.2. Здесь вопросов быть не должно.

 
Патч SDK 

После установки IAR вы должны применить патч для правильной компиляции исходников.

Вы можете найти патч здесь

Как установить:

  1. Сохраните 0001-Fixes.patch в рабочем каталоге Z-Stack (C:\Z-Stack 3.0.2\)
  2. Откройте консоль в рабочем каталоге Z-Stack
  3. Выполните git apply 0001-Fixes.patch
 
Скачиваем исходный код из репозитория Примером будет служить Датчик CO2 Zigbee

и выбираем Code, SSH и нажимаем на значок копировать в буфер обмена:

Заходим на компьютере в zstack: C:\Z-Stack 3.0.2\Projects\zstack\HomeAutomation (если вы не меняли путь то вначеле будет папка "Texas Instruments")

правая кнопка мыши, "Git clone..."

Адрес URL проставиться из буфера обмена, директория текущая, обязательно галочка recursive эта поможет стянуть зависимости BME280_driver и zstack-lib

Экран успеха:

Теперь можно запускать IAR Embedded Workbench. Открываем проект пунктом меню Open workspace 

Находим нашу папку со скаченным проектом, далее в папке CC2530DB находим файл проекта

Выбираем конфигурацию RouterEB и выполняем Rebuild All.

Собрать свою прошивку без знаний программирования

Для создания HEX файла прошивки для Zigbee-чипов CC2530, CC2531, CC2652, СС1352 и их модификаций можно воспользоваться проектом PTVO  CC1352. Большинство функций бесплатны.

Домашняя страница

Скачать (есть поддержка русского языка и набор шаблонов).

Телеграм-канал