-
Notifications
You must be signed in to change notification settings - Fork 44
Flashing
Проверено на Windows 7 x64 + python 3.8.6. На линуксе все аналогично.
Данный способ работает, только если в чипе есть прошивка с поддержкой BSL!
Залив прошивку не от того устройства, или прошивку без BSL, или прошивку, в которой BSL активируется НЕ через пин DIO_15 - есть шанс получить кирпич, кторый можно поднять только программатором!
Если планируете прошить прошивку от Koenkk, сверьтесь с типом своего стика в табличке.
Качаем и устанавливаем python 3.8.6.
Устанавливаем необходимые дополнения:
pip3 install pyserial
pip3 install intelhex
Распаковываем прошивальщик (файл cc2538-bsl.py). Это дважды модифицированный прошивальщик от JelmerT (в нем модификации от jethome и мои). Оригинальный прошивальщик шьет не все ревизии стиков, его не следует использовать.
Используем exe-файл cc2538-bsl_x64.exe (питон и его модули ставить не нужно).
Процесс прошивки для стиков разных ревизий выглядит по-разному из-за разных методов активации бутлоадера - кнопками или автоматически (Auto BSL).
Внимание!!! Все нижесказанное справедливо ТОЛЬКО для стиков, которые собирал я лично.
Внимание!!! На стиках с возможностью прошивки без использования кнопок (Auto BSL) - работоспособность кнопок не гарантируется.
Ревизию стика можно посмотреть на плате стика.
Нажатие кнопок не требуется.
rev.2.0E и rev.1.0R
python.exe cc2538-bsl.py -p COM3 --invoke-bootloader 3 -ewv znp_CC2652P.hex
rev.2.1E и rev.2.3E
python.exe cc2538-bsl.py -p COM3 --bootloader-invert-lines -ewv znp_CC2652P.hex
rev.2.5E, rev.3.xX
python.exe cc2538-bsl.py -p COM3 -ewv znp_CC2652P.hex
Зажать кнопки RESET (RST) и FLASH (BSL), отпускаете RESET, затем отпускаете FLASH.
или
Зажать кнопку FLASH (BSL), вставить стик в USB, отпустить FLASH.
python.exe cc2538-bsl.py -p COM3 -ewv znp_CC2652P.hex
Процесс выглядит примерно так:
Opening port COM3, baud 500000
Reading data from CC1352P2_CC2652P_other_20201113.hex
Your firmware looks like an Intel Hex file
Connecting to target...
CC1350 PG2.0 (7x7mm): 352KB Flash, 20KB SRAM, CCFG.BL_CONFIG at 0x00057FD8
Primary IEEE Address: 00:12:4B:00:21:B4:94:C2
Performing mass erase
Erasing all main bank flash sectors
Erase done
Writing 360448 bytes starting at address 0x00000000
Write 104 bytes at 0x00057F980
Write done
Verifying by comparing CRC32 calculations.
Verified (match: 0x55e2e461)
По окончании прошивки, возможно, потребуется переткнуть стик в USB или нажать RESET.
После прошивки настоятельно рекомендуется очистить память стика (только для прошивок координатора, роутеры не нужно чистить).
В процессе прошивки в памяти координатора (NVMEM) могут оказаться произвольные данные, что может в некоторых случаях помешать восстановлению NVMEM из бэкапа zigbee2mqtt.
Очистка памяти координатора производится скриптом zStackEraseAllNvMem.js, который обычно находится в директории /opt/zigbee2mqtt/scripts
Командная строка будет выглядеть примерно так:
node zStackEraseAllNvMem.js /dev/ttyUSB0
По окончании очистки, возможно, потребуется переткнуть стик в USB или нажать RESET.