デバッグアダプタの作り方
Information
今後はこちらもご利用下さいませ。
simple CMSIS-DAP debug adapter.(not mbed interface)
cmsis-dap.zip をダウンロードして展開する。
patch.bat patch.py diff.txt main.h USBDAP.h USBDAP.cpp が含まれています。
AN11321: Porting the CMSIS-DAP debugger to the Cortex-M0 platform
から AN11321.zip をダウンロードする。
DAP.h だけを展開しておく。
patch.bat を実行する。
c:\python27\python patch.py AN11321.zip < diff.txt
main.cpp DAP_config.h DAP.cpp SW_DP.cpp JTAG_DP.cpp が作成されます。
オンラインコンパイラで New - Create new program 新規にプログラムを作成する。
C++のソースファイルをインポートする。
main.h USBDAP.h USBDAP.cpp
DAP.h
main.cpp DAP_config.h DAP.cpp SW_DP.cpp JTAG_DP.cpp
USBDeviceをインポートする。
コンパイルする。
LPCXpresso IDE v6対応方法
LPCXpresso IDE v6に認識させるには次のように修正して下さい。
main.cpp
USBDAP hid(DAP_PACKET_SIZE, DAP_PACKET_SIZE);
を
main.cpp
USBDAP hid(DAP_PACKET_SIZE, DAP_PACKET_SIZE, 0x0d28, 0x0204);
に変更します。
参考:
mbedをデバッグアダプタにしてみた(mbed-Link)
たいへん参考になりました。ありがとうございます。
履歴:
2013/4/21: cmsis-dap.zipを更新(nResetをPullUpにしました)。 旧ファイルはcmsis-dap-20130420.zipです。
2013/9/23: LPCXpresso IDE v6対応方法を追加しました。
5 comments on デバッグアダプタの作り方:
すばらしい情報ありがとうございます(・∀・)
mbed 1768 に、上記のとおりビルドしたものを書き込んで、
1114 の DIP で実験しているのですが、
参考にされたページの「mbedをデバッグアダプタにしてみた(mbed-Link)」にあったバイナリでは動作していた
ものが、こちらの方法だとなぜか 1114 のリセットがかかりっぱなしになったりしたので、
初期化の nreset.input() のあとに、
nreset.mode(PullUp) をつけたらうまく動きました。
#というか、そもそもここ(1114 の /RESET)は外にプルアップをつけなくちゃいけないんでしたか.....
#うる覚えですみません。
動作テストありがとうございます。
mbedライブラリDigitalInOutを調べてみたらデフォルトでPullDownにしていました。gpio_init()
動作テストありがとうございます。
mbedライブラリDigitalInOutを調べてみたらデフォルトでPullDownにしていました。gpio_init()
なるほど、そういうことなのですね。
FRDM-KL25Z でも同様にうまく動作しました。
安価なボードがデバッグアダプタに変身するとは、大変便利ですね(・∀・)
#11U24 はビルドできましたが、 uVISION が RDDI-DAP Error になってしまいました。
#11U24 はビルドできましたが、 uVISION が RDDI-DAP Error になってしまいました。
tdi、tdoをNCにしていたので、JTAGモードにすると、PORT_JTAG_SETUP()でハングアップしていました。
LPC11U24ではわからないですが、LPC1768では実在するポートに割り当てたらとりあえずハングアップは解消しました。
LPC1768では実在するポートに割り当てたらとりあえずハングアップは解消しました。
11U24 で NC を実在ポートに割り当ててみましたが、同じでした。
HID デバイスとしては両方とも認識しており、mbed の正式 CMSIS-DAP でも時々 RDDI-DAP Error
を起こすことがあるので、どうもPC環境に依存しているような気もしているのですが....
PC は Windows7 x64を使っています。
uVision のバージョンは 4.70a で、ライセンスなしの Lite 版です。
uVision の Project>Options for .. ででてくるダイアログのDebug タグで Use:CMSIS-DAP Debugger を選択し、
Settings をおした後、手元の PC と 11U24 の組み合わせでは必ず RDDI-DAP Error になります。
このときの挙動をデバッガで追うと、あきらかに 1768 と 11U24 で異なっているようです。
Error にならない 1768 の場合ですと、
DAP.cpp の DAP_ProcessCommand() の switch-case の
上から順に ID_DAP_INFO,ID_DAP_LED ... とブレークをかけてSetting をおしてやると、それぞれひっかかるようなのですが、
11U24 では ID_DAP_INFO ではブレークがかかるものの、ID_DAP_LED には何度やっても到達しませんでした。
DAP_Info() が悪いのかと思い、先頭の switch(id) でブレークをかけると、初回の id 値が両者で違っています。
1768 : id = 0x01
11U24: id = 0x02
なぜこうなるのかは、わかりません(・∀・;
Please log in to post comments.
すばらしい情報ありがとうございます(・∀・)
mbed 1768 に、上記のとおりビルドしたものを書き込んで、 1114 の DIP で実験しているのですが、 参考にされたページの「mbedをデバッグアダプタにしてみた(mbed-Link)」にあったバイナリでは動作していた ものが、こちらの方法だとなぜか 1114 のリセットがかかりっぱなしになったりしたので、 初期化の nreset.input() のあとに、 nreset.mode(PullUp) をつけたらうまく動きました。
#というか、そもそもここ(1114 の /RESET)は外にプルアップをつけなくちゃいけないんでしたか..... #うる覚えですみません。