Originally published at
Шалаш инженера. You can comment here or
there.
Во-первых, понадобится собрать последнюю версию openocd из исходников:
git clone
https://github.com/ntfreak/openocd.git
cd openocd
./bootstrap
./configure
make
По умолчанию configure включит поддержку некоторых программаторов, в том числе st-link. Если этого не произошло, значит не хватает каких-то зависимостей.
Далее, пишем скрипт:
#!/bin/sh
OPENOCD=/path/to/openocd
SOFTDEVICE=/path/to/nRF5_SDK_14.2.0_17b948a/components/softdevice/s132/hex/s132_nrf52_5.0.0_softdevice.hex
FW=$1
[ -z "$FW" ] && (echo "No fw given!" ; exit 1)
${OPENOCD}/src/openocd \
-s ${OPENOCD}/tcl \
-f interface/stlink.cfg \
-f target/nrf52.cfg \
-c init \
-c "reset init" \
-c halt \
-c "nrf5 mass_erase" \
-c "flash write_image ${SOFTDEVICE}" \
-c "flash write_image ${FW}" \
-c reset \
-c exit
Цель для Makefile для Nordic SDK может выглядеть так:
OPENOCD := /path/to/openocd
SOFTDEVICE := /path/to/nRF5_SDK_14.2.0_17b948a/components/softdevice/s132/hex/s132_nrf52_5.0.0_softdevice.hex
flashst: $(OUTPUT_DIRECTORY)/nrf52832_xxaa.hex
@echo Flashing: $<
$(OPENOCD)/src/openocd -s $(OPENOCD)/tcl -f interface/stlink.cfg -f target/nrf52.cfg \
-c init \
-c "reset init" \
-c halt \
-c "nrf5 mass_erase" \
-c "flash write_image $(SOFTDEVICE)" \
-c "flash write_image $<" \
-c reset \
-c exit