Если инфорация оказалась интересна и/или полезна, не побрезгуйте, оставьте комментарий ;)

четверг, 6 января 2022 г.

Чем прошить Zigbee-контроллер на Mac OS

Решил поэкспериментировать с "умным домом". Начать надо с контроллера. Много описаний, как использовать в качестве приемника для контроллера свистки cc2531/cc2530 (ссылка чисто для понимания, что искать, это не рекомендация конкретного продавца). Рекуомедуется брать с внешней антенной. Проблема в том, что такой свисток надо прошить. Для этого нужен аппаратный программатор (ссылка только для справки) и программа на компе. Все найденные мною инструкции для Windows или Linux.

Но всё-таки есть программа cc-tools, которую можно собрать пол Mac OS. Нашел я информацию о ее существовании тут. Но инстукция слишком краткая. И так просто не пакет не соберется, так как вместо g++ должен использоваться clang++

checking for Boost headers version >= 1.39.0... yes
checking for Boost's header version... 1_76
checking for the toolset name used by Boost for g++... xgcc42 -xgcc
checking for boost/program_options.hpp... yes
checking for the Boost program_options library... yes
checking for boost/system/error_code.hpp... yes
checking for the Boost system library... (cached) yes
checking for boost/regex.hpp... yes
checking for the Boost regex library... no
configure: error: cannot find the flags to link with Boost regex

Ответ найден здесь. Там же есть ссылка на полную инструкцию. Ниже краткий пересказ на русском.

  1. Через Brew ставим необходимые пакеты (как ставить сам Brew тут не пишу):
    brew install autoconf automake libusb boost pkgconfig libtool
  2. Скачиваем исходники с GitHub'a и переходим в созданную директорию
    MacBook-Pro:~ user$ git clone https://github.com/dashesy/cc-tool.git
    MacBook-Pro:~ user$ cd cc-tool
  3. Теперь создаем configure:
    CC=/opt/local/bin/clang \ CXX=/opt/local/bin/clang++ \
    LDFLAGS=-I/usr/local/include \
    CPPFLAGS=-I/usr/local/include \
    ./bootstrap

    CC=/opt/local/bin/clang \
    CXX=/opt/local/bin/clang++ \
    LDFLAGS=-I/usr/local/include \
    CPPFLAGS=-I/usr/local/include \
    ./configure

    make
    Теперь соберется без ошибок.
  4. Проверим, что программа собралась. Выделил ключи, которые нам понадобятся для прошивки:
    MacBook-Pro:cc-tool user$ ./cc-tool --help
    Texas Instruments 8051-based System-On-Chip device programmer
     Version: 0.26
    
     Command line options:
      -h [ --help ]                  produce help message
      --log arg                      create log of all operations
      -d [ --device ] arg            set programmer device usb address 'bus:device'
      -f [ --fast ]                  set fast debug interface speed (by default: 
                                     slow)
      -n [ --name ] arg              specify target name e.g. CC2530 etc.
      --allow-overlapping-records    allow overlapping records in hex files, the 
                                     last one wins (by default: they are 
                                     disallowed)
      -i [ --read-info-page ] arg    read info pages
      -a [ --read-mac-address ]      read mac address(es)
      -b [ --write-mac-address ] arg write (secondary) mac address
      -p [ --preserve-mac-address ]  preserve (secondary) mac address across 
                                     writing
      -r [ --read ] arg              read flash memory
      -e [ --erase ]                 erase flash memory
      -w [ --write ] arg             write flash memory.
      -v [ --verify ] arg            verify flash after write, method '(r)ead' or 
                                     '(c)cr' (used by default)
      --reset                        perform target reset
      -t [ --test ]                  search for programmer and target
      -l [ --lock ] arg              specify lock data in hex numbers or by string:
                                     debug[;pages:xx]
      -s [ --flash-size ] arg        specify target flash size in KB
    
     Supported targets:
       CC2530 CC2531 CC2533 CC2540 CC2541 CC2543 CC2544 CC2545 CC2510 CC2511 CC1111 CC1110 CC2430 CC2431 
    
     Supported programmers:
      VID: 0x0451 PID: 0x16a2 Description: CC Debugger
      VID: 0x11a0 PID: 0xdb20 Description: SmartRF04 Evaluation Board
      VID: 0x11a0 PID: 0xeb20 Description: SmartRF04 Evaluation Board (Chinese)
      VID: 0x0451 PID: 0x16a0 Description: SmartRF05 Evaluation Board
    Если подключить свисток и программатор:
    MacBook-Pro:cc-tool user$ ./cc-tool -t
      Programmer: CC Debugger
      Target: CC2531
      Device info: 
       Name: CC Debugger
       Debugger ID: 5307
       Version: 0x05CC
       Revision: 0x0044
    
      Target info: 
       Name: CC2531
       Revision: 0x24
       Internal ID: 0xB5
       ID: 0x2531
       Flash size: 256 KB
       Flash page size: 2
       RAM size: 8 KB
       Lock data size: 16 B

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

Теперь шьем... Нет, вначале качаем прошивку. Я чаще в руководствах встречал ссылку на прошивку Koenkk/Z-Stack-firmware, поэтому пока взял ее. Не погружался в отличия от других. Как минимум она поддерживается Zigbee 3.0. Сам автор не рекомендует использовать Zigbee 3.0 на CC2531, так как работает не быстро и поддерживает до 20 устройств. Но я пока не планирую выходить за это количество. Поэтому взял прошивку с поддержкой Zigbee 3.0. Прошивку надо скачать и разархивировать. В архиве 2 файла. Нужен CC2531ZNP-with-SBL.hex. Эта прошивка поддерживает serial boot loader (SBL). Что это, написано тут. Если кратко, то возможность обновить в будущем прошивку без потери настроек (карты устройств).

Копируем файл прошивки в каталог со скомпилированным cc-tool. Убеждаемся, что в консоли вы в директории с cc-tool, и шьем новый микрокод:

MacBook-Pro:cc-tool user$ ./cc-tool -v -f -e -w ./CC2531ZNP-with-SBL.hex
  Programmer: CC Debugger
  Target: CC2531
  Erasing flash...
  Completed       
  Writing flash (241 KB)...
  Completed (2.55 s.)
  Verifying flash...
  Completed (1.10 s.)

После окончания прошивки надо отключить программатор от свистка, сам свисток вынуть из USB и вставить обратно. В выводе команды ls /dev появятся два новых устройства: cu.usbmodemFA141 и tty.usbmodemFA141

В качестве памятки самому себе оставлю ссылки на найденные полезные ресурсы

Комментариев нет: