Help us understand the problem. What is going on with this article?

OSX上のopenocdから FM3スティックに繋がらない時の対処法

More than 5 years have passed since last update.

Spansion社が販売している SK-FM3-48PMC-USBSTICK (以下 FM3スティックと略記)は,値段も手頃で入手性も悪くない評価ボードです.

しかし,どんな評価ボードにも難点はあるもので,このFM3スティックの場合は,オンボードのJTAGアダプタが鬼門です.

問題の背景

FM3スティックのオンボードJTAGアダプタは,FTDI社のFT2232という,廉価帯のJTAGアダプタではお馴染みのチップが使われています.
このチップは多機能で,シリアルポートにもなりますし,パラレルポートにもなりますし,JTAGアダプタとしても使えます.

FT2232はは,USB の個体識別に必要な VID/PID を,外部の SPIフラッシュメモリに保存します.フラッシュメモリが実装されていなければ,FTDI社が所有している VID/PID (0403:6010) が割り振られます.

OSX 側は,FM3スティックが挿さったとき,VID/PID (0403:6010) を認識して,デバイスドライバをロードします.このとき,OSXは VID/PID が 0404:6010 のデバイスをシリアルポートとして認識し,シリアルポート用のドライバを選択します.

そのため,openocd では JTAG デバイスとして認識できなくなります.例えば下記のようなメッセージが出ます.

$ openocd 
Open On-Chip Debugger 0.8.0 (2014-05-08-01:30)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
jtag_ntrst_delay: 500
trst_only separate trst_push_pull
adapter speed: 500 kHz
   TapName             Enabled  IdCode     Expected   IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
 0 mb9bfxx2.cpu           Y     0x00000000 0x4ba00477     4 0x01  0x0f
#0 : mb9bfxx2.flash (fm3) at 0x00000000, size 0x00000000, buswidth 0, chipwidth 0
cortex_m reset_config sysresetreq
Error: libusb_claim_interface() failed with -3
Error: unable to open ftdi device with vid 0403, pid 6010, description 'Dual RS232' and serial '*'
in procedure 'init'
$

上のログで, $ は,コマンドプロンプトです.(下記も同様)

解決

最もシンプルな方法は,デバイスをアンロードする解決法です.
まず,FTDI 関連のドライバで,ロードされているものを探します.

$ kextstat|grep FTDI
  227    0 0xffffff7f82650000 0x8000     0x8000     com.FTDI.driver.FTDIUSBSerialDriver (2.2.17) <105 37 5 4 3 1>

私の手元では,com.FTDI.driver.FTDIUSBSerialDriver しか出てきませんが,環境によっては,いくつかのドライバが出てきます.

それらをアンロードします.管理者権限が必要です.

$ sudo kextunload -bundle com.FTDI.driver.FTDIUSBSerialDriver
Password:

そののち,openocd を起動します.openocd.cfg は,bitbucket にあるリポジトリが参考になります.

$ openocd 
Open On-Chip Debugger 0.8.0 (2014-05-08-01:30)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
jtag_ntrst_delay: 500
trst_only separate trst_push_pull
adapter speed: 500 kHz
   TapName             Enabled  IdCode     Expected   IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
 0 mb9bfxx2.cpu           Y     0x00000000 0x4ba00477     4 0x01  0x0f
#0 : mb9bfxx2.flash (fm3) at 0x00000000, size 0x00000000, buswidth 0, chipwidth 0
cortex_m reset_config sysresetreq
Info : clock speed 500 kHz
Info : JTAG tap: mb9bfxx2.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Info : mb9bfxx2.cpu: hardware has 6 breakpoints, 4 watchpoints

繋がりました.

参考資料

OSX と FTDI ドライバの関係については,Oversea Publishing のサイトで詳しく紹介されています.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした