読者です 読者をやめる 読者になる 読者になる

ガレスタさんのDIY日記

電子回路、Web、組み込み、自作エフェクターを語るblog

結局CMSIS-DAPってなんなの?

コラム

まあ今回はコラムというかなんというかそう言う感じの会です。

最近CMSIS-DAPに対応!とか言われて結局なんなんだ?って思う方が少なからずいると思うので議題にあげたわけです。

CMSIS-DAP

CMSIS-DAP(Cortex Microcontroller Software Interface Standard Debug Access Port)はARM社が提唱するデバッグアクセポートへのアクセス標準化を提供するものです。
ハードウエアとひっくるめて呼ばれることがありますがデバッガ側チップはUSB機能を持っていれば何でも良いのでCMSIS-DAPはARMの規格にそったソフトウエアの総称というのが正しいのかもしれません


提唱された理由の一つに以下のものがあります。

各メーカーがいろいろなプロコトルでデバッグ側を実装したがためにコアは同じであるのにAVR,PICのように専用デバッガでしかアクセスできないという断片化が起こる。

そんなわけでUSBのHIDクラスでアクセスするという標準化を行いかつプロコトルを規律化しました。
これがCMSIS-DAPの始まりであり本質です。
ようはデバッガ側チップで抽象化を行い標準アクセスを可能とするということです。

抽象化とは?

いくらCMSIS-DAPが提唱されたとはいえ各社デバッガ側のチップは違うわけで・・・・・
各社そのチップの機能を使ってCMSIS-DAPを実現する必要があります。これがいわゆる抽象化と呼ばれるもので共通APIを異なるチップ間で使えるようにするためのものです。

HIDクラスの呼び出しからフラッシュアルゴリズムという感じで各社頑張って抽象化してくれているのがOpenSDAだったりMbed CMSIS-DAPだったりでデバッガ側のチップが違えど同じように使えるのはこう言ったメーカー側の尽力あってこそのものです。

最近のmbedインターフェイスはCMSIS-DAP?

mbedといえばD&Dフラッシュ書き込みですがここ最近デバッグ機能をサポートするということでものによってfirmwareにCMSIS-DAPが導入されています。

特にLPC系は新ファームウエアがCMSIS-DAPに対応しています。
LPCXpressoからはMbed CMSIS-DAPとして認識されてデバッグ機能がサポートされています。

違うマイコンデバッグできる?

これはライセンス的にどうなのかわかりませんが

LPC(LPCLink with CMSIS-DAP) -> Kinetis MCU

Kinetis(OpenSDA2.1 with CMSIS-DAP) -> LPC MCU

の組み合わせでデバッグできたので異なるデバッグアダプタでもCMSIS-DAPであれば共通アクセス可能というわけです。

これでかなりワイドな対応が可能になったと思いますので
皆さんも色々試してみてください