ebay で売っていたもの。 J-Link OB と書いてあってかなり怪しい製品。STM32 に J-Link として動くファームが書いてあるっぽいがよくわからない。試した感じは使えることは使えそう。

接続までの基本

ケーブルが色分けされているが赤がGNDで白がVCC(3.3V)だったりするので気をつける。逆挿しされてんのか? と思ったけど、逆挿しできないコネクタだったので、ケーブルの配線が適当なんじゃないか。

試しに BLE Nano と接続してみた。nRF51 なので

openocd -f interface/jlink.cfg -c "transport select swd" -f target/nrf51.cfg

で繋げることができる。

ただし、NRF_POWER->RESET = 1; していると SWD の信号でリセットがかかりまくるっぽいので外しておくこと。

書きこむには

#!/bin/sh

set -x

# SoftDevice を .bin 形式にしておく
arm-none-eabi-objcopy -I ihex -O binary mbed-dev/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s130_nrf51822_1_0_0/s130_nrf51_1.0.0_softdevice.hex .build/softdevice.bin

# Softdevice S130 でのアプリケーションスタート位置 リンカの FLASH ORIGIN
STARTADDRESS=0x0001C000

# write softdevice
openocd -f interface/jlink.cfg -c "transport select swd" -c "set WORKAREASIZE 0" -f target/nrf51.cfg -c "init; reset halt; nrf51 mass_erase; sleep 500; flash write_image .build/softdevice.bin 0x0; verify_image .build/softdevice.bin 0x0; mww 0x4001e504 1 ; mww 0x10001000 $STARTADDRESS; mww 0x4001e504 0; reset run; shutdown"

# write application
openocd -f interface/jlink.cfg -c "transport select swd" -c "set WORKAREASIZE 0" -f target/nrf51.cfg -c "program .build/keyboard.bin $STARTADDRESS verify reset exit"

SoftDevice は一回書きこんだら基本的に変えないのでコメントアウトしても良い。

書きこみに時間がかかる。アプリケーション 45KB で 14秒ぐらいかかった。

gdb 使うのはまた今度 (ほんとは gdb したくて ebay で買ってみたんだけど、届くのに時間がかかってる間に熱がさめてしまった)

ref.

↓ の Makefile 使うと簡単に書けそう。結局ここから最低限抜き出した感じになった。program で .elf 書けば一発だろと思ったけど、そんなことはなくてダメだった (たぶん余計な情報があるから?)。

  1. トップ
  2. tech
  3. 中華製の J-Link OB を使い OpenOCD で nRF51 に書きこむ
▲ この日のエントリ