
आधिकारिक OpenOCD केवल-पढ़ने योग्य मिरर (कोई पुल अनुरोध नहीं)
OpenOCD JTAG इंटरफ़ेस और TAP समर्थन की स्तरित वास्तुकला के साथ ऑन-चिप प्रोग्रामिंग और डिबगिंग समर्थन प्रदान करता है, जिसमें शामिल हैं:
OpenOCD के साथ बातचीत के लिए कई नेटवर्क इंटरफ़ेस उपलब्ध हैं: टेलनेट, 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 उपयोगकर्ता गाइड: http://openocd.org/doc/html/index.html
OpenOCD डेवलपर मैनुअल: 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 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.
INSTALL फ़ाइल में configure चलाने और OpenOCD स्रोत कोड को संकलित करने के लिए सामान्य निर्देश हैं। वह फ़ाइल सभी GNU ऑटोटूल्स पैकेजों के लिए डिफ़ॉल्ट रूप से प्रदान की जाती है। यदि आप GNU ऑटोटूल्स से परिचित नहीं हैं, तो आपको पहले उन निर्देशों को पढ़ना चाहिए।
नोट: यदि INSTALL फ़ाइल मौजूद नहीं है, तो इसका मतलब है कि आप किसी OpenOCD रिलीज़ से नहीं, बल्कि किसी विकास शाखा से स्रोत कोड का उपयोग कर रहे हैं। इस स्थिति में, नीचे 'Compiling 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 डिसअसेंबली को कैपस्टोन लाइब्रेरी की आवश्यकता है।
वैकल्पिक विकास स्क्रिप्ट checkpatch को आवश्यकता है:
OpenOCD बनाने के लिए, कमांड के निम्नलिखित अनुक्रम का उपयोग करें:
./bootstrap
./configure [options]
make
sudo make install
bootstrap कमांड केवल Git रिपॉजिटरी से निर्माण करते समय आवश्यक है।
configure चरण OpenOCD बनाने के लिए आवश्यक Makefiles उत्पन्न करता है, आमतौर पर इसे एक या अधिक विकल्पों के साथ प्रदान किया जाता है।
पहला 'make' चरण OpenOCD बनाएगा और अंतिम निष्पादन योग्य './src/' में रखेगा।
अंतिम (वैकल्पिक) चरण, make install, सभी फ़ाइलों को आवश्यक स्थान पर रखता है।
सभी समर्थित विकल्पों की सूची देखने के लिए, ./configure --help चलाएँ
क्रॉस-कंपाइलिंग मानक ऑटोटूल्स तरीके से समर्थित है, आपको बस --host विकल्प में क्रॉस-कंपाइलिंग टार्गेट ट्रिपलेट निर्दिष्ट करना होगा, उदाहरण के लिए Debian पर MinGW के साथ Windows 32-बिट के लिए क्रॉस-बिल्डिंग:
./configure --host=i686-w64-mingw32 [options]
क्रॉस-कंपाइलिंग के लिए pkg-config को ठीक से काम करने के लिए, आपको https://autotools.io/pkgconfig/cross-compiling.html पर वर्णित एक अतिरिक्त रैपर स्क्रिप्ट की आवश्यकता हो सकती है।
यह pkg-config को यह बताने के लिए आवश्यक है कि OpenOCD जिन टार्गेट लाइब्रेरीज़ पर निर्भर करता है, उन्हें कहाँ देखना है। वैकल्पिक रूप से, आप सीधे *_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।
स्नैपशॉट स्रोत ट्री के संपीड़ित टारबॉल हैं, इस लेखन के समय प्रत्येक लगभग 1.3 MBytes।
सुरक्षा कारणों से रूट/प्रशासनिक अनुमतियों के साथ OpenOCD चलाने की दृढ़ता से अनुशंसा नहीं की जाती है।
GNU/Linux पर USB उपकरणों के लिए आपको contrib/60-openocd.rules फ़ाइल का उपयोग करना चाहिए। यह संभवतः /etc/udev/rules.d में कहीं है, लेकिन सुनिश्चित करने के लिए अपने ऑपरेटिंग सिस्टम के दस्तावेज़ीकरण से परामर्श लें। अपने आप को "plugdev" समूह में जोड़ना न भूलें।
GNU/Linux और FreeBSD पर समानांतर पोर्ट एडेप्टर के लिए कृपया अपने "ppdev" (parport* या ppi*) डिवाइस नोड अनुमतियों को तदनुसार बदलें।
Windows पर parport एडेप्टर के लिए आपको सामान्य उपयोगकर्ताओं को सीधे "LPT" रजिस्टरों तक पहुँचने की अनुमति देने के लिए install_giveio.bat चलाना होगा (Cygwin के साथ "ioperm" का उपयोग करना भी संभव है)।