
公式OpenOCD読み取り専用ミラー(プルリクエスト不可)
OpenOCDは、JTAGインタフェースとTAPサポートの階層化アーキテクチャにより、オンチッププログラミングとデバッグをサポートします。これには以下が含まれます:
OpenOCDとの対話には、telnet、Tcl、GDBのいくつかのネットワークインタフェースが利用可能です。GDBサーバにより、OpenOCDはGNU GDBプログラム(およびGDBプロトコルを話す他のプログラム、例:IDA Pro)を使用したエンベデッドシステムのソースレベルデバッグのための「リモートターゲット」として機能します。
このREADMEファイルは、以下のトピックの概要を含みます:
一般的なボードをお持ちの場合は、その設定ファイルでOpenOCDを起動するだけです。例:
openocd -f board/stm32f4discovery.cfg
特定のアダプタを特定のターゲットに接続する場合は、JTAGインタフェースとターゲットの両方の設定ファイルを読み込む必要があります。例:
openocd -f interface/ftdi/jtagkey2.cfg -c "transport select jtag" \
-f target/ti/calypso.cfg
openocd -f interface/stlink.cfg -c "transport select swd" \
-f target/stm32l0.cfg
OpenOCD起動後、GDBを次のように接続します:
(gdb) target extended-remote localhost:3333
OpenOCDをインストールする最も簡単な方法は、お使いのオペレーティングシステムのパッケージマネージャを使用することです。
Debian / Ubuntu
sudo apt install openocd
Fedora
sudo dnf install openocd
macOS(Homebrew経由)
brew install open-ocd
Windows(MSYS2経由)
pacman -S mingw-w64-x86_64-openocd
これらのパッケージは、活発な開発が行われている最新のGitメインラインよりも安定していることがよくあります。 「パッケージャ」は、開発者が新しいソースコードリリースを公開した後、OpenOCDのバイナリリリースを作成します。 古いバージョンのOpenOCDは、現在のリリースの問題診断には適していません。 ユーザーは、定期的に適切なアップデートが提供されるよう、ディストリビューションのメンテナまたはインタフェースベンダーと連絡を取り合う必要があります。
これらのバイナリパッケージのいずれかを使用する場合は、サポートや新しいバイナリバージョンについてパッケージャに連絡する必要があります。 OpenOCD開発者は、パッケージ化されたバイナリの直接サポートを提供していません。
以下の場合、あなたはOpenOCDのパッケージャです:
パッケージャとして、あなたはほとんどの問題の最初の報告を受けることになります。 それらの問題をユーザーのために修正する際、あなたの解決策は他のユーザーからの数百(場合によっては何千もの)の質問を防ぐのに役立つかもしれません。 何かがうまくいかない場合は、将来の問題を避けるためにシステムやドキュメントを改善する方法をOpenOCD開発者に知らせるよう努め、問題が今後のリリースで完全に解決されるようフォローアップにご協力ください。
とはいえ、OpenOCD開発者は以下のようないくつかの提案に従っていただきたいと考えています:
ツリー内のドキュメントに加えて、最新のマニュアルは以下のURLでオンラインで閲覧できます:
OpenOCD User's Guide: http://openocd.org/doc/html/index.html
OpenOCD Developer's Manual: http://openocd.org/doc/doxygen/html/index.html
これらは最新の開発バージョンを反映しているため、次のセクションではパッケージから完全なドキュメントをビルドする方法を紹介します。
詳細については、これらのドキュメントを参照するか、OpenOCD開発者メーリングリスト([email protected])に登録して開発者に連絡してください。
デフォルトでは、OpenOCDのビルドプロセスは「Info形式」でドキュメントを準備し、標準的な方法でインストールするため、info openocd でアクセスできます。
さらに、OpenOCDユーザーガイドは以下の異なる形式で生成できます:
PDFVIEWER が設定されている場合、これによりPDFユーザーガイドが作成・表示されます。
make pdf && ${PDFVIEWER} doc/openocd.pdf
HTMLVIEWER が設定されている場合、これによりHTMLユーザーガイドが作成・表示されます。
make html && ${HTMLVIEWER} doc/openocd.html/index.html
OpenOCD開発者マニュアルには、内部アーキテクチャやコードの詳細に関する情報が含まれています:
注意:doxygenがインストールされていることを確認し、doxygen --version と入力してください
make doxygen && ${HTMLVIEWER} doxygen/index.html
AM335x, ARM-JTAG-EW, ARM-USB-OCD, ARM-USB-TINY, AT91RM9200, axm0432, BCM2835, Bus Blaster, Buspirate, Cadence DPI, Cadence vdebug, Chameleon, CMSIS-DAP, Cortino, Cypress KitProg, DENX, Digilent JTAG-SMT2, DLC 5, DLP-USB1232H, embedded projects, Espressif USB JTAG Programmer, eStick, FlashLINK, FlossJTAG, Flyswatter, Flyswatter2, FTDI FT232R, Gateworks, Hoegl, ICDI, ICEBear, J-Link, JTAG VPI, JTAGkey, JTAGkey2, JTAG-lock-pick, KT-Link, Linux GPIOD, Lisa/L, LPC1768-Stick, Mellanox rshim, MiniModule, NGX, Nuvoton Nu-Link, Nu-Link2, NXHX, NXP IMX GPIO, OOCDLink, Opendous, OpenJTAG, Openmoko, OpenRD, OSBDM, Presto, Redbee, Remote Bitbang, RLink, SheevaPlug devkit, Stellaris evkits, ST-LINK (SWOトレース対応), STM32-PerformanceStick, STR9-comStick, sysfsgpio, Tigard, TI XDS110, TUMPA, Turtelizer, ULINK, USB-A9260, USB-Blaster, USB-JTAG, USBprog, VPACLink, VSLLink, Wiggler, XDS100v2, Xilinx XVC/PCIe, Xverve.
ARM: AArch64, ARM11, ARM7, ARM9, Cortex-A/R (v7-A/R), Cortex-M (ARMv{6/7/8}-M), FA526, Feroceon/Dragonite, XScale. ARCv2, AVR32, DSP563xx, DSP5680xx, EnSilica eSi-RISC, EJTAG (MIPS32, MIPS64), ESP32, ESP32-S2, ESP32-S3, Intel Quark, LS102x-SAP, RISC-V, ST STM8, Xtensa.
ADUC702x, AT91SAM, AT91SAM9 (NAND), ATH79, ATmega128RFA1, Atmel SAM, AVR, CFI, DSP5680xx, EFM32, EM357, eSi-RISC, eSi-TSMC, EZR32HG, FM3, FM4, Freedom E SPI, GD32, i.MX31, Kinetis, LPC8xx/LPC1xxx/LPC2xxx/LPC541xx, LPC2900, LPC3180, LPC32xx, LPCSPIFI, Marvell QSPI, MAX32, Milandr, MXC, NIIET, nRF51, nRF52 , NuMicro, NUC910, Nuvoton NPCX, onsemi RSL10, Orion/Kirkwood, PIC32mx, PSoC4/5LP/6, Raspberry RP2040, Renesas RPC HF and SH QSPI, S3C24xx, S3C6400, SiM3x, SiFive Freedom E, Stellaris, ST BlueNRG, STM32, STM32 QUAD/OCTO-SPI for Flash/FRAM/EEPROM, STMSMI, STR7x, STR9x, SWM050, TI CC13xx, TI CC26xx, TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF, XMC1xxx, XMC4xxx.
INSTALLファイルには、configureを実行しOpenOCDソースコードをコンパイルするための一般的な手順が含まれています。このファイルは、すべてのGNU autotoolsパッケージでデフォルトで提供されます。GNU autotoolsに馴染みがない場合は、まずその手順をお読みください。
注意:INSTALLファイルが存在しない場合、それはOpenOCDリリースからではなく、開発ブランチからソースコードを使用していることを意味します。その場合は、以下の「OpenOCDのコンパイル」の手順に従ってください。ファイルは最初のコマンド ./bootstrap によって作成されます。
このドキュメントの残りの部分では、クイックインストールを求める人向けの手順を提供しようとしています。
現在、OpenOCDをビルドするにはGCCまたはClangが必要です。開発者は厳格なコード警告(-Wall、-Werror、-Wextraなど)を適用し、C99固有の機能(インライン関数、名前付き初期化子、宣言とコードの混在など)を使用し始めています。他のコンパイラを使用することも可能かもしれませんが、それらはある程度モダンである必要があり、条件付きでGCC固有の拡張を削除するためのサポート拡張が必要になる可能性があります。
また、以下が必要です:
さらに、Gitからビルドする場合:
オプションのUSBベースのアダプタドライバにはlibusb-1.0が必要です。
オプションのUSB-Blaster、ASIX Presto、OpenJTAGインタフェースアダプタドライバには、libftdiライブラリが必要です。
オプションのCMSIS-DAPアダプタドライバにはHIDAPIライブラリが必要です。
オプションのlinuxgpiodアダプタドライバにはlibgpiodライブラリが必要です。
オプションのJ-Linkアダプタドライバにはlibjaylinkライブラリが必要です。
オプションのARM逆アセンブルにはcapstoneライブラリが必要です。
オプションの開発スクリプトcheckpatchには以下が必要です:
OpenOCDをビルドするには、以下の一連のコマンドを使用します:
./bootstrap
./configure [options]
make
sudo make install
bootstrap コマンドは、Gitリポジトリからビルドする場合にのみ必要です。
configure ステップはOpenOCDのビルドに必要なMakefileを生成します。通常、一つ以上のオプションを指定します。
最初の 'make' ステップはOpenOCDをビルドし、最終的な実行ファイルを './src/' に配置します。
最後の(オプションの)ステップである make install は、すべてのファイルを必要な場所に配置します。
サポートされているすべてのオプションのリストを表示するには、./configure --help を実行してください
クロスコンパイルは標準のautotools方式でサポートされています。--hostオプションでクロスコンパイルターゲットトリプレットを指定するだけです。例:Debian上でMinGWを使用してWindows 32ビット用にクロスビルドする場合:
./configure --host=i686-w64-mingw32 [options]
クロスコンパイルでpkg-configを適切に動作させるには、https://autotools.io/pkgconfig/cross-compiling.htmlに記載されている追加のラッパースクリプトが必要になる場合があります。
これは、OpenOCDが依存するターゲットライブラリをpkg-configに検索させるために必要です。代わりに、*_CFLAGS および *_LIBS 環境変数を直接指定することもできます。詳細は ./configure --help を参照してください。
これらすべてを自動的に行うほぼ完全なスクリプトについては、contrib/cross-build.sh を参照してください。
PPDEVインタフェースを使用してパラレルポートにアクセスする場合は、--enable-parport と --enable-parport-ppdev の両方を指定する必要があります。後者のオプションはparportドライバのオプションだからです。
--enable-parport-giveio オプションについても同様です。iopermパラレルポートアクセス方式の代わりにgiveioを使用したい場合は、--enable-parport と --enable-parport-giveio の両方のオプションを使用する必要があります。
メインリポジトリから、お好みのGitクライアントを使用して現在のGitバージョンをダウンロードできます:git://git.code.sf.net/p/openocd/code
ミラーを使用することもできます:
Gitコマンドラインクライアントを使用して、以下のコマンドで現在のリポジトリのローカルコピーをセットアップできます(現在のディレクトリに"openocd"という名前のディレクトリがないことを確認してください):
git clone git://git.code.sf.net/p/openocd/code openocd
その後は、git pull を使用していつでも更新できます。
gitwebインタフェースもあり、リポジトリのブラウズやHTTPを使用した任意のスナップショットのダウンロードに使用できます:http://repo.or.cz/w/openocd.git
スナップショットはソースツリーの圧縮tarボールで、執筆時点でそれぞれ約1.3 MBです。
セキュリティ上の理由から、root/管理者権限でOpenOCDを実行することは強く推奨されません。
GNU/Linux上のUSBデバイスについては、contrib/60-openocd.rulesファイルを使用してください。おそらく/etc/udev/rules.dのどこかに配置しますが、正確な場所はお使いのオペレーティングシステムのドキュメントを参照してください。自分自身を"plugdev"グループに追加することを忘れないでください。
GNU/LinuxおよびFreeBSDのパラレルポートアダプタについては、"ppdev"(parport* または ppi*)デバイスノードの権限を適宜変更してください。
Windowsのパラレルポートアダプタについては、install_giveio.batを実行する必要があります(代わりにCygwinで"ioperm"を使用することも可能です)。これにより、一般ユーザーが"LPT"レジスタに直接アクセスする権限を得られます。