OpenOCDをビルドする(再び)w/ MSYS2
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の書き込みには使えないみたいだ。ワイヤをつないで、入力と出力が別のピンになっていて、あれ?となって、コマンドを打ってみたら見事にエラーが出た。