いつか書こうと思っていた。。。 STM32 Discoveryボード群を使う時の、 OpenOCD用のドライバとSTMicro純正ドライバの「切り換え方法」と「確認方法」のまとめです。 STM32でSTLink/v1/v2を使う時に、よくハマってしまって、 もう我慢できません。(爆(爆 * 前提条件 (1)Windows7(32bit)環境。 (2) ARMマイコン用のCコンパイラはLaunchpadのarm-none-eabi-gcc。 https://launchpad.net/gcc-arm-embedded (3) STM32 Discoveryボード搭載のSTLink/v1/v2をそのままボード上のマイコンに対して使う場合です。 (4) OpenOCDバイナリは、ねむいさん(http://nemuisan.blog.bai.ne.jp)のバージョンv08を 使用させていただいております。(注1) * STLink/v1 : STM32VL-Discovery (1) STM32VL-Discoveryボードで STLink Utilityを使いたい ** ST original driver : USBSTOPR (v6.1.7601.17577)(zadigで見た時) 確認方法: (a) ボードをUSB接続ケーブルにつないだ時に、 Windowsの「リームーバル・ディスク」として見えていればOK。 (USB接続時にドライブ認識のメッセージが出る) (b) zadigで確認すると「USBSTOPR」ドライバと出るはず。 状態: STLink Utility OK OpenOCD NG: 補足: STM32VL-Discoveryボードを購入してSTMico純正ドライバのみをインストール した直後なら、この状態(USBSTOPRドライバ(zadigで確認すると))になっている。 OpenOCDは使えません。 (2) STM32VL-Discoveryボードで OpenOCDデバッグしたい ** OpenOCD driver : WinUSB (v6.1.7600.16385) 設定方法: (a) STM32ーDiscoveryボードをPCにUSB接続しておく。 (b) 「zadig」を起動して、 「Options」-「List All Devices」して、リストから「STM32 STLink」を選択。 「Replace Driver」ボタンを押す。 確認方法: 「デバイスマネージャ」−「Universal Serial Bus devices」で、 「STM32 STLink」と表示さていればOK。 状態: STLink Utility NG OpenOCD OK 補足: OpenOCDデバッグ/書込み専用状態です。 STLink Utilityを使いたい時は、下記(3)を実施する必要があります。 (3) STM32VL-Discoveryボードで OpenOCDデバッグしてたけど、STMicro純正ドライバに戻したい (a) 「デバイスマネージャ」−「Universal Serial Bus devices」で、 「STM32 STLink」を右クリック−「削除」で 「このデバイスのドライバーソフトウエアを削除する」にチェックしてOK。 (b) USBケーブルを挿し直す。 上記(1)の状態が確認できればOK。 STLink Utilityが使える様になります。 * STLink/v2 : STM32F0/F3/F4-Discovery の場合 これらのボードは、 STMicro純正のWinUSBドライバでOpenOCD/STLink Utility双方の利用が可能です。 STLink Utilityをインストールする時に、専用ドライバがインストールされるので、それ以外 なにもしなくてよいです。 特に、STLink Utilityを使いたい時は、zadigは、いじっちゃいけません。:D ** STMicro Original driver : WinUSB 確認方法: (a) ボードをPCにつないでおく。 (b)「デバイスマネージャ」 −「ユニバーサル・シリアルバスコントローラ」で、 「STMicroelectronics STLink dongle」と表示されていばOK。 状態: STLink Utility OK OpenOCD OK (1) zadigで「WinUSB(vXXX.XXX)」をインストールしちゃったみたい まず、zadigでインストールする「WinUSB(vXXX.XXX)」というドライバは、STMicro純正の 「WinUSB」(バージョンなし)ドライバとは別物の様です。 表記が微妙なので混乱しますが、そういう事の様です。 この場合、OpenOCDは使えますがSTLink Utilityが使えなくなります。 確認方法(1): (a) STM32ーDiscoveryボードをPCにUSB接続しておく。 (b) 「zadig」を起動して、 「Options」-「List All Devices」して、リストから「STM32 STLink」を選択。 「Driver」が「WinUSB(vXXX.XXX)」になっているならSTLink Utilityは使えません。 確認方法(2): 「デバイスマネージャ」−「Universal Serial Bus devices」で、 「STM32 STLink」と表示さているならSTLink Utilityは使えません。 状態: STLink Utility NG OpenOCD OK (2) なんか、おかしくなっちゃったっ!!(爆(爆 STLink/v2使用時にzadigをいじる必要はないものの、 思わず別のドライバに変更してしまった可能性があります。 orz orz (TT) (爆 例えば上で書いた、 「WinUSB(vXXX.XXX)」や「LibUsb-win32」等々。 修復方法: (a) ボードをPCにつないでおく。 (b)「デバイスマネージャ」で、 「Universal Serial Bus devices」の 「STM32 STLink」を右クリック、 「ドライバソフトウェアの更新」、 「コンピュータを参照して。。。」、 「コンピュータ上のデバイスドライバーの一覧から選択」、 「STMicroelectronics STLink dongle」を選択すると 直ります。 修復後のzadig上の表示: Driver: 「WinUSB」->「WinUSB(vXXX.XXX)」 修復後の状態: STLink Utility OK OpenOCD OK 補足: zadigで他の正しくないドライバをインストールしてしまった場合でも、 「デバイスマネージャ」中で「STM32 STLink」というUSBドライバを捜しだして 上記の方法で修復することができます。 (3) まとめ STM32F0/F3/F4-Discoveryボード上のSTLink/v2を使って、OpenOCDデバッグのみをするなら、 「WinUSB(vXXX.XXX)」ドライバになっていたとしても大丈夫ですが、 STLink Utilityを使う時は、上記(2)を実施してドライバを入れ替えます。 * STLink Utilityを使う理由 (1)GUIソフトでサクッとHEXファイルが書き込める。 (2)コマンドライン書込み用のソフトも使える。 (3)マイコンとデバッガ部分の最低限の生存確認ができる。 (4)ボード上のSTLink用マイコンのファームアップデートができる。 等々。 特に(3)は精神衛生上できた方が良いかな。 (注1)成り行き上、ボード用のCFGスクリプトは付属の「stm32f0discovery.cfg」、「stm32vldiscovery.cfg」。。。(以下同じ、) をocd起動時に指定して使っていますが、ねむいさんの「xxxx_flash.cfg」系を使った方が 良いと思います。:D
2014年01月24日
STLink/v1/v2ドライバとOpenOCD/STLink Utilityの使い方まとめ
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0)
| TrackBack(0)
| OpenOCD
|
|


この記事へのコメント
コメントを書く
この記事へのトラックバック