
Mirror ufficiale di OpenOCD in sola lettura (nessuna pull request)
OpenOCD fornisce supporto per programmazione e debug on-chip con un'architettura a strati dell'interfaccia JTAG e supporto TAP, inclusi:
Diverse interfacce di rete sono disponibili per interagire con OpenOCD: telnet, Tcl e GDB. Il server GDB permette a OpenOCD di funzionare come 'target remoto' per il debug a livello di codice sorgente di sistemi embedded utilizzando il programma GNU GDB (e altri che parlano il protocollo GDB, es. IDA Pro).
Questo file README contiene una panoramica dei seguenti argomenti:
Se possiedi una scheda popolare, avvia semplicemente OpenOCD con la sua configurazione, ad esempio:
openocd -f board/stm32f4discovery.cfg
Se colleghi un adattatore particolare con un target specifico, devi includere sia l'interfaccia JTAG che le configurazioni del target, ad esempio:
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
Dopo l'avvio di OpenOCD, connetti GDB con
(gdb) target extended-remote localhost:3333
Il modo più semplice per installare OpenOCD è tramite il gestore pacchetti del tuo sistema operativo.
Debian / Ubuntu
sudo apt install openocd
Fedora
sudo dnf install openocd
macOS (via Homebrew)
brew install open-ocd
Windows (via MSYS2)
pacman -S mingw-w64-x86_64-openocd
Questi pacchetti sono spesso più stabili rispetto alla versione di sviluppo Git, dove avviene lo sviluppo attivo. I 'Packagers' creano rilasci binari di OpenOCD dopo che gli sviluppatori pubblicano nuovi rilasci del codice sorgente. Le versioni obsolete di OpenOCD non sono adatte per diagnosticare problemi nella release corrente. Gli utenti dovrebbero mantenersi in contatto con i manutentori della distribuzione o i venditori di interfacce per garantire che gli aggiornamenti appropriati vengano forniti regolarmente.
Se usi uno di questi pacchetti binari, devi contattare il Packager per supporto o per versioni binarie più recenti. Gli sviluppatori di OpenOCD non forniscono supporto diretto per binari pacchettizzati.
Sei un PACKAGER di OpenOCD se:
Come PACKAGER, sarai il primo a ricevere segnalazioni della maggior parte dei problemi. Quando risolvi quei problemi per i tuoi utenti, la tua soluzione può aiutare a prevenire centinaia (se non migliaia) di altre domande da parte di altri utenti.
Se qualcosa non funziona per te, per favore informa gli sviluppatori di OpenOCD su come migliorare il sistema o la documentazione per evitare problemi futuri, e segui per aiutarci a garantire che il problema sia completamente risolto nelle nostre future release.
Detto questo, gli sviluppatori di OpenOCD vorrebbero anche che tu seguissi alcuni suggerimenti:
Oltre alla documentazione all'interno del repository, gli ultimi manuali possono essere visualizzati online ai seguenti URL:
OpenOCD User's Guide: http://openocd.org/doc/html/index.html
OpenOCD Developer's Manual: http://openocd.org/doc/doxygen/html/index.html
Questi riflettono le ultime versioni di sviluppo, quindi la sezione seguente introduce come costruire la documentazione completa dal pacchetto.
Per maggiori informazioni, consulta questi documenti o contatta gli sviluppatori iscrivendoti alla mailing list degli sviluppatori OpenOCD: [email protected]
Per impostazione predefinita, il processo di compilazione di OpenOCD prepara la documentazione in 'formato Info' e la installa nel modo standard, in modo che info openocd possa accedervi.
Inoltre, la Guida per l'Utente di OpenOCD può essere prodotta nei seguenti formati diversi:
Se PDFVIEWER è impostato, questo crea e visualizza la Guida per l'Utente in PDF.
make pdf && ${PDFVIEWER} doc/openocd.pdf
Se HTMLVIEWER è impostato, questo crea e visualizza la Guida per l'Utente in HTML.
make html && ${HTMLVIEWER} doc/openocd.html/index.html
Il Manuale per Sviluppatori di OpenOCD contiene informazioni sull'architettura interna e altri dettagli sul codice:
Nota: assicurati che doxygen sia installato, digita 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 tracing supported), 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 per Flash/FRAM/EEPROM, STMSMI, STR7x, STR9x, SWM050, TI CC13xx, TI CC26xx, TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF, XMC1xxx, XMC4xxx.
Il file INSTALL contiene istruzioni generiche per eseguire configure e compilare il codice sorgente di OpenOCD. Quel file è fornito per impostazione predefinita per tutti i pacchetti GNU autotools. Se non hai familiarità con gli autotools GNU, dovresti leggere prima quelle istruzioni.