オープンソースとして公開されている各種JTAG-ICEに対応したデバッガです。マイコン上のプログラムをデバッグする事だけが目的というわけではなく、マイコンに接続ないし内蔵された様々なメモリへのアクセスも出来ますので、単体でマイコン内蔵のFLASH書き込みツールとしても便利に使えます。
ここではARM7に主眼を置いていますが、OpenOCDとしてはARM7 (ARM7TDMI, ARM720t), ARM9 (ARM920T, ARM922T, ARM926EJ-S, ARM966E-S)・XScale (PXA25x, IXP42x)・Cortex-M3 (Stellaris LM3, ST STM32F1, ST STM32F2, ATMEL SAM3等)のデバッグ、CFI compatible NOR フラッシュ (Intel, AMD/Spansion)・各種マイコン内蔵フラッシュ (LPC2000, LPC1700, AT91SAM7, SAM3, SAM4, STR7x, STR9x, LM3, STM32F等)の書き込み等をサポートしますので、興味があれば本家のサイトを参考に使ってみてはいかがでしょう。
OpenOCDによって構成できるシステムの概略イメージです。
OpenOCDはPC内でネットワークのデーモンとして実行され、割り当てられたポートに対して種々のアプリケーションからアクセスし、OpenOCD及びJTAG I/F Hardwareを介してターゲットとコンタクトする形を取るのが一般的の様です。
OpenOCD自体はソースから使用者自ら構築するのが通常ですが、TINY JTAG-ICE2を有効に活用するためにWindows上で動作するバイナリを提供しています。I/FないしチップはTINY JTAG-ICE2, J-LINK, FT2232, ST-Link, CMSIS-DAPに限定し、以下の様な操作でMSYS2上でコンパイルしています。
# git clone git://git.code.sf.net/p/openocd/code openocd # cd openocd # make distclean # git pull origin master # ./guess-rev.sh # ./bootstrap # ./configure --build=mingw32 --host=mingw32 --disable-dependency-tracking --disable-werror --enable-dummy --enable-jtag_vpi --enable-remote-bitbang --enable-amtjtagaccel --enable-gw16012 --enable-parport --enable-parport-giveio --enable-usbprog --enable-jlink --enable-stlink --enable-usb_blaster_libftdi # make
OpenOCD_x86_0.12.0+dev-00761-gd09ff4764
OpenOCD_x64_0.12.0+dev-00761-gd09ff4764
OpenOCD_x86_0.12.0+dev-00755-gedf2c82cf
OpenOCD_x64_0.12.0+dev-00755-gedf2c82cf
OpenOCD_x86_0.12.0+dev-00730-gad2161361
OpenOCD_x64_0.12.0+dev-00730-gad2161361
OpenOCD_x86_0.11.0+dev-00873-g219cb9598
OpenOCD_x64_0.11.0+dev-00873-g219cb9598
OpenOCD_x86_0.10.0+dev-01524-g861e75f54
OpenOCD_x64_0.10.0+dev-01524-g861e75f54
OpenOCD_0.9.0-dev-00874-g2d4ae3f-ft2232only
OpenOCD_0.8.0-rc2-dev-00456-g7ad635b-ft2232only.zip
※0.10.0-rc1以降のバイナリからWinUSBベースに変更したので、デバイスドライバはこちらの手順でインストールの事
市販品は星の数ほどありますが、似た回路で自作するのも有りです。最新のデバイスドライバ等の詳細はTINY JTAG-ICE2のページで確認してください。
WinUSBのデバイスドライバに入れ替える必要があります。
以前紹介していたlibusb-win32のドライバに入れ替える方法ではなく、Windows上であればこちらもST-LINKと同様にWinUSBのデバイスドライバに入れ替える事で対応します。
ターゲットによって使用方法が異なる部分が多いため、ドキュメントを参考にしてもらうのがベストです。ここで一生懸命日本語訳しても、あっという間に陳腐化して全く使い物になる代物ですので。
動かすまでの大まかなネタは、