« コメントの設定変更 | Main | Windows8.1の8インチタブレットのMiix 2 8を買った »

February 24, 2014

トラ技ARMライタをUbuntuのOpenOCDで使う(プラス パッチ)

E292トランジスタ技術2014年3月号に付いている『トラ技ARMライタ(写真左)』を Ubuntu の OpenOCD で使い、自作のSTM32F4基板(写真右)に接続する事に成功した。
この時、僅かではあるが、OpenOCD のバグを見つけたので、その報告も行う。

私の Ubuntu は、12.04 で、この上で OpenOCD を CMSIS-DAP 対応にビルドする。

$ sudo apt-get install libtool libudev-dev autoconf libusb-dev libusb-1.0-0-dev
$ git clone http://github.com/signal11/hidapi.git
$ cd hidapi/
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ln -s /usr/local/lib/libhidapi-hidraw.so.0 /usr/lib/libhidapi-hidraw.so.0
$ sudo vim.tiny /etc/udev/rules.d/99-hidraw-permissions.rules
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"
を追加。
$ cd ..
$ git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
$ cd openocd/
ハッシュは『6c74255ee2569bf2748ecbbd252e2a91bbce6644』だった。
$ ./bootstrap
$ ./configure --enable-maintainer-mode --enable-cmsis-dap --enable-hidapi-libusb
$ make
$ sudo make install

トラ技ARMライタとSTM32F4とは SWDIO、SWCLK、NRESET、GNDを接続。

/usr/local/share/openocd/scripts/target/stm32f4x.cfgの 38行目の「 jtag_ntrst_delay 100」をコメントアウトし、STM32F4の電源を入れた状態で、下記コマンドで、OpenOCDが起動する。

$ openocd -c "interface cmsis-dap" -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg
Open On-Chip Debugger 0.8.0-dev-00350-g6c74255 (2014-02-19-22:34)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'cmsis-dap'
Info : CMSIS-DAP: SWD Supported
Info : CMSIS-DAP: JTAG Supported
Info : CMSIS-DAP: Interface Initialised (SWD)
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
cortex_m reset_config sysresetreq
Info : CMSIS-DAP: FW Version = 1.0
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 1 nTRST = 0 nRESET = 1
Info : DAP_SWJ Sequence (reset: 50+ '1' followed by 0)
Info : CMSIS-DAP: Interface ready
Info : clock speed 1000 kHz
Info : IDCODE 0x2ba01477
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints

これで、6割方は上手く行く。と言うのも、私が持つ3台の Ubuntu 12.04マシンのうち、1台が下記の様にコアダンプして異常終了するのだ。

$ src/openocd -c "interface cmsis-dap" -f /usr/local/share/openocd/scripts/target/kl25.cfg
Open On-Chip Debugger 0.8.0-dev-00350-g6c74255 (2014-02-24-20:34)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'cmsis-dap'
Segmentation fault (コアダンプ)

このマシンは、、CPUがAMD Athlon64X2 4200+ 2.2GHz、マザーボードがMSI K9N6PGM2-V と言う古い古い構成。ハードウエアの内どの部分が悪いかは不明だが、OpenOCDのソースコードの「openocd/src/jtag/drivers/cmsis_dap_usb.c」の176行目を
if ((0 == cmsis_dap_vid[0]) && wcsstr(cur_dev->product_string, L"CMSIS-DAP")) {
から
if ((0 == cmsis_dap_vid[0]) && (NULL != cur_dev->product_string) && wcsstr(cur_dev->product_string, L"CMSIS-DAP")) {
に変更して、ビルドし直すと、問題が解決する。
上記の行、たぶん、バグだと思うので、正式のOpenOCDに反映してもらうように働きかけようかな・・・とも考えている。

|

« コメントの設定変更 | Main | Windows8.1の8インチタブレットのMiix 2 8を買った »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/94422/59192722

Listed below are links to weblogs that reference トラ技ARMライタをUbuntuのOpenOCDで使う(プラス パッチ):

« コメントの設定変更 | Main | Windows8.1の8インチタブレットのMiix 2 8を買った »