http://www.playembedded.org/blog/en/2015/10/11/building-openocd-under-windows-using-msys2/

上記ページを参考に進めている。

ハマったところがあったら書いていく。

Bash on Ubuntu on Windowsでビルドすることもできる。昨日書いた情報が参考になればと思う。

ソースを落とせない

git cloneでタイムアウトしたみたい。PKGBUILDを編集して、
source=("${_realname}::git+https://git.code.sf.net/p/openocd/code")のURLをhttp://repo.or.cz/openocd.gitにした。sourceforgeは終わっている…。ミラーの方が速い。

ビルドした

https://github.com/Alexpux/MINGW-packages/を適当な場所に落として、mingw-w64-openocd-gitに移動した。前の項にあるように、ソースが落とせなかったらミラーを変えると良い。あとは MINGW_INSTALLS=mingw64 makepkg-mingw -sLで自動的に依存するパッケージが入って、ビルドが走る。

パッケージファイルが吐き出された。正常かどうかはまだ試していない。

少し試した(1/11更新)

とりあえず、ドライバを入れて認識させるところまで進んだ。

Zadigを入れて、libusbKのドライバを入れると良い。最初は、Alteraのドライバを入れてみたが、意味がなかった。次に、libusb-win32でやってみたが、うまくいかなかった。

libusb-win32だと、以下のような出力が出ていた。

$ openocd -f interface/altera-usb-blaster.cfg

Open On-Chip Debugger 0.10.0+dev-00230-g81a33244d (2018-01-08-18:01)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
Warn : Adapter driver 'usb_blaster' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
Info : No lowlevel driver configured, will try them all
Info : usb blaster interface using libftdi
Error: unable to open ftdi device: ftdi_usb_reset failed

libusbKだと次のような感じだ

Open On-Chip Debugger 0.10.0+dev-00230-g81a33244d (2018-01-08-18:01)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
Warn : Adapter driver 'usb_blaster' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
Info : No lowlevel driver configured, will try them all
Info : usb blaster interface using libftdi
Error: unable to get latency timer
Info : This adapter doesn't support configurable speed
Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!!
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Warn : Bypassing JTAG setup events due to errors
Warn : gdb services need one or more targets defined

これの方がうまくいっている気がする。

自分の環境では意味なかった

TL;DR

nrf51822の書き込みはできない。

結局、USB Blasterは認識されたみたいだが、JTAGにしか対応していないらしく、SWDが必要なnrf51822の書き込みはできないみたいだった。

$ openocd -f interface/altera-usb-blaster.cfg -f target/nrf51.cfg -c 'transport select swd'
Open On-Chip Debugger 0.10.0+dev-00230-g81a33244d (2018-01-08-18:01)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
Warn : Adapter driver 'usb_blaster' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
embedded:startup.tcl:21: Error: newtap: nrf51.cpu missing IR length
in procedure 'script'
at file "embedded:startup.tcl", line 60
in procedure 'swj_newdap' called at file "C:/tools/msys64/mingw64/bin/../share/openocd/scripts/target/nrf51.cfg", line 33
in procedure 'jtag' called at file "C:/tools/msys64/mingw64/bin/../share/openocd/scripts/target/swj-dp.tcl", line 30
in procedure 'ocd_bouncer'
at file "embedded:startup.tcl", line 21
$ openocd -f interface/altera-usb-blaster.cfg -c 'transport select swd' -f target/nrf51.cfg
Open On-Chip Debugger 0.10.0+dev-00230-g81a33244d (2018-01-08-18:01)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
Warn : Adapter driver 'usb_blaster' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
Error: Can't change session's transport after the initial selection was made
embedded:startup.tcl:21: Error:
in procedure 'transport'
in procedure 'ocd_bouncer'
at file "embedded:startup.tcl", line 21

どうやらAltera USB Blaster(によく似た何か)はJTAGにしか対応していないらしく、nrf51822の書き込みには使えないみたいだ。ワイヤをつないで、入力と出力が別のピンになっていて、あれ?となって、コマンドを打ってみたら見事にエラーが出た。