2014年01月24日

STLink/v1/v2ドライバとOpenOCD/STLink Utilityの使い方まとめ

STLink/v1/v2ドライバとOpenOCD/STLink Utilityの使い方まとめ
いつか書こうと思っていた。。。
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
      



posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | TrackBack(0) | OpenOCD | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック