[lang:ja] CMSIS-DAP

こちらのページのテキトウ訳です。

背景

CMSIS (Cortex Microcontroller Software Interface Standard)は、プロセッサとペリフェラルの一貫したシンプルなソフトウェア インタフェースを実現するための規格です。mbed SDKはCMSISレイヤによって、複数の異なるプロセッサをサポートしつつ、共通のAPIを提供しています。

CMSISレイヤは次の様なコンポーネントを提供しています。

  • CMSIS-CORE: Cortex-Mプロセッサへの一貫したインターフェースを提供
  • CMSIS-DSP: Cortex-Mプロセッサ上での共通した信号処理機能パッケージ
  • CMSIS-RTOS: 規格化されたRTOS (Real-Time Operating System)向けのAPI

CMSIS-DAP

最近、ARMはCMSISレイヤに新しいコンポーネントを追加しました。 CMSIS-DAPです。

これはターゲットのデバッグアクセスポート(DAP)への標準化されたアクセス方法を提供するものです。CMSIS-DAPは、インターフェースチップに実装されます。インターフェースチップはUSBを通じてデバッガを走らせているホストコンピュータに接続され、JTAG (Joint Test Action Group)かSWD (Serial Wire Debug)を通じてターゲットデバイスに接続されます。JTAGとSWDはターゲットをデバッグするために用いられる一般的な方法です。

詳細なドキュメントはARMのWebサイトにあります。このドキュメントにアクセスするには、ARM silver accountに登録する必要があります。

CMSIS-DAPがなぜ必要なのか

CMSIS-DAPを紹介するには理由があります。

  • CMSIS-DAP標準が登場するまで、多くの異なるプロトコルがUSBアダプタに実装されてきました。このような状態では、ホストデバッガはこれらの異なるプロトコルを把握し、実装する必要があります。この結果、多くの断片化が起こっています。CMSIS-DAPはデバッガーのための標準化されたインターフェースを提供します。
  • 新しいCMSIS-DAPレイヤによって、ホストデバッガーはSWDやJTAGを用いて、この2つのプロトコルを実装することなく、ターゲットをデバッグすることが可能です。
  • USBコネクションはHIDドライバクラスを用います。HIDドライバは全てのOSに組み込まれていますので、ホストコンピュータにドライバをインストールする必要がありません。

CMSIS-DAPの仕組み

先述の通り、CMSIS-DAPはインターフェースチップに実装されている必要があります。このチップはホストコンピュータとデバッグしたいターゲットを接続します。 mbedのハードウェア上では、CMSIS-DAPファームウェアはmbedインターフェースに実装されています。マスストレージと仮想シリアルポートに加えて、HIDエンドポイントがデバッガとのCMSIS-DAPコミュニケーションに用いられます。

405

CMSIS-DAP標準の概要

ホストデバッガーとインターフェースチップ間でパケットが交換されます。基本的に、ホストがコマンドを送信し、デバッグユニットがコマンドへの応答を送信します。

異なるタイプのコマンドがホストから発行されます。

  • 一般コマンド: 情報をリクエストしたり、デバッグユニットをコントロールします。多くの場合、デバッグユニットに接続したり、接続を解除するために用いられます。
  • SWD/JTAG共通コマンド: 例えばクロックスピードの設定などに用いられます。
  • SWD関連コマンド: SWDモードのパラメータを設定します。
  • JTAG関連コマンド: JTAGデバイスチェーンの設定をします。
  • 転送コマンド: CoreSightレジスタの読み書きを行います。これらのコマンドはSWDやJTAGといったトランスポートから独立しています。

例: CMSIS-DAPを用いたメモリの読み出し

デバッガーにメモリの特定番地にある値を読み出したいと言わせてみましょう。次のコマンドが ホストから送信される必要があります:

  • 転送コマンド: CSWレジスタ (Control/Status Word Register)に書き込みます。これは転送(32bit/16bit/8bit)を設定します。
  • 転送コマンド: TARレジスタ (Transfer Address Register)にメモリ番地を書き込みます。
  • 転送コマンド: DRWレジスタ (Data Read/Write Register)を、さきほどの番地に書かれた値を読み出すために読み込みます。

まとめ

CMSIS-DAPはデバッガーに標準化されたインターフェースを提供します。これは恐らくデバッガーとデバッグユニットが実装するデファクトスタンダードになります。mbedがデバッグ機能の提供を開始するにあたって、新しい標準を採用した理由はここにあります。例えば、IDE(統合開発環境)、デバッガ、シミュレーションを統合したKeilのuVisionは既にCMSIS-DAPをサポートしています。CMSIS-DAPを搭載した新しいmbedインターフェースを試すには、次のページを参照してください。


1 comment on [lang:ja] CMSIS-DAP:

17 Jun 2016

本日(2016/6/17)より参加させてもらう、masalalaです。よろしくお願いします。 一つ皆様にご存知でしたら御教授願いたいことがあります。 CMSIS-DAPとWindowsPCとのUSB通信を確立するためのRDDIパッケージの使用例サンプル を探しています。 「.\BX008-DA-10019-r2p0-00eac0\inckude\index.html」には、個別関数の使用例サンプル はあるのですが、CMSIS-DAPとWindows-PCとのUSB接続を確立すまでの手順がわかりません。 C++のサンプル、もしくは、RDDIのマニュアル等のドキュメントがありましたら入手場所を教えて下さい。 よろしくお願いします。

Please log in to post comments.