Skip to content

Flashing

Alex Egony edited this page Jun 10, 2021 · 22 revisions

Прошивка стиков/шилдов v4 (cc2652/cc1352) c помощью питоновского прошивальщика.

Проверено на Windows 7 x64 + python 3.8.6. На линуксе все аналогично.


Внимание!

Данный способ работает, только если в чипе есть прошивка с поддержкой BSL!

Внимание!

Залив прошивку не от того устройства, или прошивку без BSL, или прошивку, в которой BSL активируется НЕ через пин DIO_15 - есть шанс получить кирпич, кторый можно поднять только программатором!

Внимание!

Если планируете прошить прошивку от Koenkk, сверьтесь с типом своего стика в табличке.


Подготовка

Вариант 1

Качаем и устанавливаем python 3.8.6.

Устанавливаем необходимые дополнения:

pip3 install pyserial
pip3 install intelhex

Распаковываем прошивальщик (файл cc2538-bsl.py). Это дважды модифицированный прошивальщик от JelmerT (в нем модификации от jethome и мои). Оригинальный прошивальщик шьет не все ревизии стиков, его не следует использовать.

Вариант 2

Используем exe-файл cc2538-bsl_x64.exe (питон и его модули ставить не нужно).


Прошивка

Процесс прошивки для стиков разных ревизий выглядит по-разному из-за разных методов активации бутлоадера - кнопками или автоматически (Auto BSL).

Внимание!!! Все нижесказанное справедливо ТОЛЬКО для стиков, которые собирал я лично.

Внимание!!! На стиках с возможностью прошивки без использования кнопок (Auto BSL) - работоспособность кнопок не гарантируется.

Ревизию стика можно посмотреть на плате стика.

Прошивка стиков c 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.