
Espejo oficial de solo lectura de OpenOCD (sin pull requests)
OpenOCD proporciona soporte de programación y depuración en chip con una arquitectura en capas de interfaz JTAG y soporte TAP que incluye:
Varias interfaces de red están disponibles para interactuar con OpenOCD: telnet, Tcl y GDB. El servidor GDB permite que OpenOCD funcione como un 'objetivo remoto' para la depuración a nivel de fuente de sistemas embebidos usando el programa GNU GDB (y otros que hablan el protocolo GDB, p.ej. IDA Pro).
Este archivo README contiene una visión general de los siguientes temas:
Si tienes una placa popular, simplemente inicia OpenOCD con su configuración, p.ej.:
openocd -f board/stm32f4discovery.cfg
Si estás conectando un adaptador particular con un objetivo específico, necesitas cargar tanto la interfaz JTAG como las configuraciones del objetivo, p.ej.:
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
Después del inicio de OpenOCD, conecta GDB con
(gdb) target extended-remote localhost:3333
La forma más fácil de instalar OpenOCD es a través del gestor de paquetes de tu sistema operativo.
Debian / Ubuntu
sudo apt install openocd
Fedora
sudo dnf install openocd
macOS (vía Homebrew)
brew install open-ocd
Windows (vía MSYS2)
pacman -S mingw-w64-x86_64-openocd
Estos paquetes suelen ser más estables que la rama principal Git de última generación, donde ocurre el desarrollo activo. Los 'empaquetadores' crean versiones binarias de OpenOCD después de que los desarrolladores publiquen nuevas versiones del código fuente. Las versiones antiguas de OpenOCD no son adecuadas para diagnosticar problemas en la versión actual. Los usuarios deben mantenerse en contacto con los mantenedores de su distribución o los vendedores de interfaces para asegurarse de que se proporcionen actualizaciones apropiadas regularmente.
Si usas uno de estos paquetes binarios, debes contactar al empaquetador para obtener soporte o versiones binarias más nuevas. Los desarrolladores de OpenOCD no proporcionan soporte directo para binarios empaquetados.
Eres un EMPAQUETADOR de OpenOCD si:
Como empaquetador, experimentarás los primeros informes de la mayoría de los problemas. Cuando arregles esos problemas para tus usuarios, tu solución puede ayudar a prevenir cientos (si no miles) de otras preguntas de otros usuarios.
Si algo no funciona para ti, por favor trabaja para informar a los desarrolladores de OpenOCD cómo mejorar el sistema o la documentación para evitar problemas futuros, y da seguimiento para ayudarnos a asegurar que el problema se resuelva completamente en nuestras futuras versiones.
Dicho esto, los desarrolladores de OpenOCD también te piden que sigas algunas sugerencias:
Además de la documentación en el árbol, los manuales más recientes pueden verse en línea en las siguientes URLs:
Guía de usuario de OpenOCD: http://openocd.org/doc/html/index.html
Manual del desarrollador de OpenOCD: http://openocd.org/doc/doxygen/html/index.html
Estos reflejan las últimas versiones de desarrollo, por lo que la siguiente sección presenta cómo construir la documentación completa desde el paquete.
Para más información, consulta estos documentos o contacta a los desarrolladores suscribiéndote a la lista de correo de desarrolladores de OpenOCD: [email protected]
Por defecto, el proceso de compilación de OpenOCD prepara la documentación en 'formato Info' y la instala de manera estándar, para que info openocd pueda acceder a ella.
Además, la Guía de usuario de OpenOCD puede producirse en los siguientes formatos diferentes:
Si PDFVIEWER está configurado, esto crea y visualiza la Guía de usuario en PDF.
make pdf && ${PDFVIEWER} doc/openocd.pdf
Si HTMLVIEWER está configurado, esto crea y visualiza la Guía de usuario en HTML.
make html && ${HTMLVIEWER} doc/openocd.html/index.html
El Manual del desarrollador de OpenOCD contiene información sobre la arquitectura interna y otros detalles sobre el código:
Nota: asegúrate de que doxygen esté instalado, escribe 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 for Flash/FRAM/EEPROM, STMSMI, STR7x, STR9x, SWM050, TI CC13xx, TI CC26xx, TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF, XMC1xxx, XMC4xxx.
El archivo INSTALL contiene instrucciones genéricas para ejecutar configure y compilar el código fuente de OpenOCD. Ese archivo se proporciona por defecto para todos los paquetes GNU autotools. Si no estás familiarizado con GNU autotools, entonces deberías leer esas instrucciones primero.