« Artix-7ボードの新リビジョンを製造します | トップページ | 18bit A/D変換ボードの設計完了 »

2014.02.22

トラ技ARMライタのCMSIS-DAP&USB-CDCファームウェア

トラ技ARMライタ用のCMSIS-DAP&USB-CDCファームウェアを開発しています。

ついにCMSIS-DAPとUSB-CDC(仮想COMポート)が共存したマルチファンクションデバイスができるようになりました。

LPC11U35に書き込むファームウェアとデバイスドライバのINFファイルを以下においておきます。

「TrgArmWr_beta1.zip」をダウンロード

ただし、現在はまだ作りかけなので、

  • ボーレートの変更ができない
  • USB→UART方向の転送しかできない

という制約があります。

UART→USB方向の転送はまだできません。

Trgarmwr_2

あまり実用的ではないので、急いでアップデートする必要はないと思います。ドライバのインストールは難しいかもしれません。失敗すると元のファームウェアに戻してもドライバを認識させるのが難しいので、本当に急いでアップデートする必要はありません。


いままでも、CMSIS-DAPとUSB-CDCを共存させようとしていたのですが、うまく動かずに悩んでいましたが、ようやく原因がわかってきました。

  1. HIDはふつうはデバイスドライバが不要なのですが、USB-CDCとのマルチファンクションデバイスにした場合は、CDC側のデバイスドライバがないと、HID側も認識してくれなくなります。
  2. 現在はインタフェース0がCDCコントロール、インタフェース1がCDCデータ、インタフェース2がHIDです。マルチファンクションデバイスでCDCのように複数のインタフェースを使うデバイスを作る場合、どこが区切りかわかりません。そこで、IAD(インタフェースアソシエーションディスクリプタ)というのを用意して、2個のインタフェースは同一グループだ、と知らせてやります。
    Iad
  3. CDC側のドライバで、INFファイルには、
    %TrgArmWrDesc% = DriverInstall, USB\VID_0D28&PID_0019&MI_00
    というふうに&MI_00をつけます。マルチファンクションデバイスの最初のものという意味なのでしょう。
  4. デバイス全体のストリングディスクリプタだけではなく、Interface2のHIDのインタフェースディスクリプタのiInterfaceが挿すストリングディスクリプタを「Toragi-LPC Writer CMSIS-DAP」に変えておかないと、MDK-ARM等がCMSIS-DAPとして探してくれなくなるようです。
    Hid_if_desc
  5. PCに挿すと、Device Qualifierディスクリプタを探しに来てSTALLを返していますが、これは異常ではなく正常な動作でした。STALLで問題ありません。このSTALLを返さないように・・という努力は無駄です。
    Devqualif_stall

そのような改良を行ったところ、マルチファンクションデバイスとして認識してくれるようになりました。

Trgarmwr_1 Trgarmwr_3

|

« Artix-7ボードの新リビジョンを製造します | トップページ | 18bit A/D変換ボードの設計完了 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Artix-7ボードの新リビジョンを製造します | トップページ | 18bit A/D変換ボードの設計完了 »