This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ae30d00ea docs: Improve information about debugging for Espressif SoCs
3ae30d00ea is described below

commit 3ae30d00ea41738d025221552f5d569ba2f77611
Author: Tiago Medicci <[email protected]>
AuthorDate: Wed Aug 14 13:18:04 2024 -0300

    docs: Improve information about debugging for Espressif SoCs
    
    Provide more information on how to properly use OpenOCD and gdb to
    debug Espressif SoCs on NuttX.
---
 .../platforms/risc-v/esp32c3-legacy/index.rst      | 64 ++++++++++++++++++----
 Documentation/platforms/risc-v/esp32c3/index.rst   | 60 ++++++++++++++++----
 Documentation/platforms/risc-v/esp32c6/index.rst   | 49 ++++++++++++++---
 Documentation/platforms/risc-v/esp32h2/index.rst   | 51 +++++++++++++----
 Documentation/platforms/xtensa/esp32/index.rst     | 29 +++++++++-
 Documentation/platforms/xtensa/esp32s2/index.rst   | 29 +++++++++-
 Documentation/platforms/xtensa/esp32s3/index.rst   | 28 +++++++++-
 7 files changed, 263 insertions(+), 47 deletions(-)

diff --git a/Documentation/platforms/risc-v/esp32c3-legacy/index.rst 
b/Documentation/platforms/risc-v/esp32c3-legacy/index.rst
index 074d86919f..756c0925fd 100644
--- a/Documentation/platforms/risc-v/esp32c3-legacy/index.rst
+++ b/Documentation/platforms/risc-v/esp32c3-legacy/index.rst
@@ -110,35 +110,75 @@ Note that this step is required only one time.  Once the 
bootloader and partitio
 table are flashed, we don't need to flash them again.  So subsequent builds
 would just require: ``make flash ESPTOOL_PORT=/dev/ttyUSBXX``
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
 
-Download and build OpenOCD from Espressif, that can be found in
-https://github.com/espressif/openocd-esp32
+Espressif uses a specific version of OpenOCD to support ESP32-C3: 
`openocd-esp32 <https://github.com/espressif/>`_.
 
-If you have an ESP32-C3 ECO3, no external JTAG is required to debug, the 
ESP32-C3
-integrates a USB-to-JTAG adapter.
+Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32c3/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
+for more information on how to build OpenOCD for ESP32-C3.
+
+ESP32-C3 has a built-in JTAG circuitry and can be debugged without any 
additional chip.
+Only an USB cable connected to the D+/D- pins is necessary:
+
+============ ==========
+ESP32-C3 Pin USB Signal
+============ ==========
+GPIO18       D-
+GPIO19       D+
+5V           V_BUS
+GND          Ground
+============ ==========
+
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32c3/api-guides/jtag-debugging/configure-builtin-jtag.html#configure-usb-drivers>`_
+  for more information.
 
 OpenOCD can then be used::
 
    openocd -c 'set ESP_RTOS none' -f board/esp32c3-builtin.cfg
 
-For versions prior to ESP32-C3 ECO3, an external JTAG adapter is needed.
-It can be connected as follows::
+If you want to debug with an external JTAG adapter it can
+be connected as follows:
 
-  TMS -> GPIO4
-  TDI -> GPIO5
-  TCK -> GPIO6
-  TDO -> GPIO7
+============ ===========
+ESP32-C6 Pin JTAG Signal
+============ ===========
+GPIO4        TMS
+GPIO5        TDI
+GPIO6        TCK
+GPIO7        TDO
+============ ===========
 
 Furthermore, an efuse needs to be burnt to be able to debug::
 
   espefuse.py -p <port> burn_efuse DIS_USB_JTAG
 
+.. warning:: Burning eFuses is an irreversible operation, so please
+  consider the above option before starting the process.
+
 OpenOCD can then be used::
 
   openocd  -c 'set ESP_RTOS none' -f board/esp32c3-ftdi.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  riscv-none-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 
diff --git a/Documentation/platforms/risc-v/esp32c3/index.rst 
b/Documentation/platforms/risc-v/esp32c3/index.rst
index c08d990757..e8c68758b8 100644
--- a/Documentation/platforms/risc-v/esp32c3/index.rst
+++ b/Documentation/platforms/risc-v/esp32c3/index.rst
@@ -120,35 +120,75 @@ Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar 
and ``./`` is
 the path to the folder containing the externally-built 2nd stage bootloader for
 the ESP32-C3 as explained above.
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
+
+Espressif uses a specific version of OpenOCD to support ESP32-C3: 
`openocd-esp32 <https://github.com/espressif/>`_.
 
 Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32c3/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
 for more information on how to build OpenOCD for ESP32-C3.
 
-If you have an ESP32-C3 ECO3, no external JTAG is required to debug, the 
ESP32-C3
-integrates a USB-to-JTAG adapter.
+ESP32-C3 has a built-in JTAG circuitry and can be debugged without any 
additional chip.
+Only an USB cable connected to the D+/D- pins is necessary:
+
+============ ==========
+ESP32-C3 Pin USB Signal
+============ ==========
+GPIO18       D-
+GPIO19       D+
+5V           V_BUS
+GND          Ground
+============ ==========
+
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32c3/api-guides/jtag-debugging/configure-builtin-jtag.html#configure-usb-drivers>`_
+  for more information.
 
 OpenOCD can then be used::
 
   openocd -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32c3-builtin.cfg
 
-For versions prior to ESP32-C3 ECO3, an external JTAG adapter is needed.
-It can be connected as follows::
+If you want to debug with an external JTAG adapter it can
+be connected as follows:
 
-  TMS -> GPIO4
-  TDI -> GPIO5
-  TCK -> GPIO6
-  TDO -> GPIO7
+============ ===========
+ESP32-C6 Pin JTAG Signal
+============ ===========
+GPIO4        TMS
+GPIO5        TDI
+GPIO6        TCK
+GPIO7        TDO
+============ ===========
 
 Furthermore, an efuse needs to be burnt to be able to debug::
 
   espefuse.py -p <port> burn_efuse DIS_USB_JTAG
 
+.. warning:: Burning eFuses is an irreversible operation, so please
+  consider the above option before starting the process.
+
 OpenOCD can then be used::
 
   openocd  -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32c3-ftdi.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  riscv-none-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 
diff --git a/Documentation/platforms/risc-v/esp32c6/index.rst 
b/Documentation/platforms/risc-v/esp32c6/index.rst
index 72891f568d..6a51d3cf8e 100644
--- a/Documentation/platforms/risc-v/esp32c6/index.rst
+++ b/Documentation/platforms/risc-v/esp32c6/index.rst
@@ -119,35 +119,66 @@ Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar 
and ``./`` is
 the path to the folder containing the externally-built 2nd stage bootloader for
 the ESP32-C6 as explained above.
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
 
-Download and build OpenOCD from Espressif, that can be found in
-https://github.com/espressif/openocd-esp32
+Espressif uses a specific version of OpenOCD to support ESP32-C6: 
`openocd-esp32 <https://github.com/espressif/>`_.
+
+Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32c6/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
+for more information on how to build OpenOCD for ESP32-C6.
 
 You do not need an external JTAG to debug, the ESP32-C6 integrates a
 USB-to-JTAG adapter.
 
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32c6/api-guides/jtag-debugging/configure-builtin-jtag.html#configure-usb-drivers>`_
+  for more information.
+
 OpenOCD can then be used::
 
   openocd -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32c6-builtin.cfg
 
 If you want to debug with an external JTAG adapter it can
-be connected as follows::
+be connected as follows:
 
-  TMS -> GPIO4
-  TDI -> GPIO5
-  TCK -> GPIO6
-  TDO -> GPIO7
+============ ===========
+ESP32-C6 Pin JTAG Signal
+============ ===========
+GPIO4        TMS
+GPIO5        TDI
+GPIO6        TCK
+GPIO7        TDO
+============ ===========
 
 Furthermore, an efuse needs to be burnt to be able to debug::
 
   espefuse.py -p <port> burn_efuse DIS_USB_JTAG
 
+.. warning:: Burning eFuses is an irreversible operation, so please
+  consider the above option before starting the process.
+
 OpenOCD can then be used::
 
   openocd  -c 'set ESP_RTOS hwtread; set ESP_FLASH_SIZE 0' -f 
board/esp32c6-ftdi.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  riscv-none-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 
diff --git a/Documentation/platforms/risc-v/esp32h2/index.rst 
b/Documentation/platforms/risc-v/esp32h2/index.rst
index a06b036bbb..38bff47fb1 100644
--- a/Documentation/platforms/risc-v/esp32h2/index.rst
+++ b/Documentation/platforms/risc-v/esp32h2/index.rst
@@ -119,35 +119,66 @@ Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar 
and ``./`` is
 the path to the folder containing the externally-built 2nd stage bootloader for
 the ESP32-H2 as explained above.
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
 
-Download and build OpenOCD from Espressif, that can be found in
-https://github.com/espressif/openocd-esp32
+Espressif uses a specific version of OpenOCD to support ESP32-H2: 
`openocd-esp32 <https://github.com/espressif/>`_.
 
-You don not need an external JTAG is to debug, the ESP32-H2 integrates a
+Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32h2/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
+for more information on how to build OpenOCD for ESP32-H2.
+
+You do not need an external JTAG to debug, the ESP32-H2 integrates a
 USB-to-JTAG adapter.
 
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32h2/api-guides/jtag-debugging/configure-builtin-jtag.html#configure-usb-drivers>`_
+  for more information.
+
 OpenOCD can then be used::
 
   openocd -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32h2-builtin.cfg
 
 If you want to debug with an external JTAG adapter it can
-be connected as follows::
+be connected as follows:
 
-  TMS -> GPIO2
-  TDI -> GPIO5
-  TCK -> GPIO5
-  TDO -> GPIO3
+============ ===========
+ESP32-H2 Pin JTAG Signal
+============ ===========
+GPIO2        TMS
+GPIO5        TDI
+GPIO4        TCK
+GPIO3        TDO
+============ ===========
 
 Furthermore, an efuse needs to be burnt to be able to debug::
 
   espefuse.py -p <port> burn_efuse DIS_USB_JTAG
 
+.. warning:: Burning eFuses is an irreversible operation, so please
+  consider the above option before starting the process.
+
 OpenOCD can then be used::
 
   openocd  -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32h2-ftdi.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  riscv-none-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 
diff --git a/Documentation/platforms/xtensa/esp32/index.rst 
b/Documentation/platforms/xtensa/esp32/index.rst
index d8559a71b1..115159d646 100644
--- a/Documentation/platforms/xtensa/esp32/index.rst
+++ b/Documentation/platforms/xtensa/esp32/index.rst
@@ -142,8 +142,10 @@ externally-built 2nd stage bootloader and the partition 
table (if applicable): w
 ``make bootloader``, these files are placed into ``nuttx`` folder. 
``ESPTOOL_BAUD`` is able to
 change the flash baud rate if desired.
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
+
+Espressif uses a specific version of OpenOCD to support ESP32: `openocd-esp32 
<https://github.com/espressif/>`_.
 
 Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
 for more information on how to build OpenOCD for ESP32.
@@ -165,10 +167,33 @@ Some boards, like :ref:`ESP32-Ethernet-Kit V1.2 
<platforms/xtensa/esp32/boards/e
 Other boards that don't have any built-in JTAG debugger can be debugged using 
an external JTAG debugger, like the one
 described for the :ref:`ESP32-DevKitC 
<platforms/xtensa/esp32/boards/esp32-devkitc/index:Debugging with OpenOCD>`.
 
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32/api-guides/jtag-debugging/configure-ft2232h-jtag.html#configure-usb-drivers>`_
+  for configuring the JTAG adapter of the :ref:`ESP32-Ethernet-Kit V1.2 
<platforms/xtensa/esp32/boards/esp32-ethernet-kit/index:ESP32-Ethernet-Kit 
V1.2>` and
+  :ref:`ESP-WROVER-KIT 
<platforms/xtensa/esp32/boards/esp32-wrover-kit/index:ESP-WROVER-KIT>` boards 
and other FT2232-based JTAG adapters.
+
 OpenOCD can then be used::
 
   openocd -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32-wrover-kit-1.8v.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  xtensa-esp32-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 
diff --git a/Documentation/platforms/xtensa/esp32s2/index.rst 
b/Documentation/platforms/xtensa/esp32s2/index.rst
index 47037b72e6..93aa992b4a 100644
--- a/Documentation/platforms/xtensa/esp32s2/index.rst
+++ b/Documentation/platforms/xtensa/esp32s2/index.rst
@@ -135,8 +135,10 @@ externally-built 2nd stage bootloader and the partition 
table (if applicable): w
 ``make bootloader``, these files are placed into ``nuttx`` folder. 
``ESPTOOL_BAUD`` is able to
 change the flash baud rate if desired.
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
+
+Espressif uses a specific version of OpenOCD to support ESP32-S2: 
`openocd-esp32 <https://github.com/espressif/>`_.
 
 Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32s2/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
 for more information on how to build OpenOCD for ESP32-S2.
@@ -157,10 +159,33 @@ Some boards, like :ref:`ESP32-S2-Kaluga-1 Kit v1.3 
<platforms/xtensa/esp32s2/boa
 Other boards that don't have any built-in JTAG debugger can be debugged using 
an external JTAG debugger being connected
 directly to the ESP32-S2 JTAG pins.
 
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32s2/api-guides/jtag-debugging/configure-ft2232h-jtag.html?highlight=udev#configure-usb-drivers>`_
+  for configuring the JTAG adapter of the :ref:`ESP32-S2-Kaluga-1 
<platforms/xtensa/esp32s2/boards/esp32s2-kaluga-1/index:ESP32-S2-Kaluga-1 Kit 
v1.3>` board
+  and other FT2232-based JTAG adapters.
+
 OpenOCD can then be used::
 
   openocd -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32s2-kaluga-1.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  xtensa-esp32s2-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 
diff --git a/Documentation/platforms/xtensa/esp32s3/index.rst 
b/Documentation/platforms/xtensa/esp32s3/index.rst
index a16c2659ac..23d64b3a51 100644
--- a/Documentation/platforms/xtensa/esp32s3/index.rst
+++ b/Documentation/platforms/xtensa/esp32s3/index.rst
@@ -142,8 +142,10 @@ externally-built 2nd stage bootloader and the partition 
table (if applicable): w
 ``make bootloader``, these files are placed into ``nuttx`` folder. 
``ESPTOOL_BAUD`` is able to
 change the flash baud rate if desired.
 
-Debugging with OpenOCD
-======================
+Debugging with ``openocd`` and ``gdb``
+======================================
+
+Espressif uses a specific version of OpenOCD to support ESP32-S3: 
`openocd-esp32 <https://github.com/espressif/>`_.
 
 Please check `Building OpenOCD from Sources 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32s3/api-guides/jtag-debugging/index.html#jtag-debugging-building-openocd>`_
 for more information on how to build OpenOCD for ESP32-S3.
@@ -154,10 +156,32 @@ extra wiring/cable to connect JTAG to ESP32-S3. Most of 
the ESP32-S3 boards have
 USB connector that can be used for JTAG debugging.
 This is the case for the :ref:`ESP32-S3-DevKit 
<platforms/xtensa/esp32s3/boards/esp32s3-devkit/index:ESP32S3-DevKit>` board.
 
+.. note:: One must configure the USB drivers to enable JTAG communication. 
Please check
+  `Configure USB Drivers 
<https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32s3/api-guides/jtag-debugging/configure-builtin-jtag.html?highlight=udev#configure-usb-drivers>`_
+  for more information.
+
 OpenOCD can then be used::
 
   openocd -c 'set ESP_RTOS hwthread; set ESP_FLASH_SIZE 0' -f 
board/esp32s3-builtin.cfg
 
+Once OpenOCD is running, you can use GDB to connect to it and debug your 
application::
+
+  xtensa-esp32s3-elf-gdb -x gdbinit nuttx
+
+whereas the content of the ``gdbinit`` file is::
+
+  target remote :3333
+  set remote hardware-watchpoint-limit 2
+  mon reset halt
+  flushregs
+  monitor reset halt
+  thb nsh_main
+  c
+
+.. note:: ``nuttx`` is the ELF file generated by the build process. Please 
note that ``CONFIG_DEBUG_SYMBOLS`` must be enabled in the ``menuconfig``.
+
+Please refer to :doc:`/quickstart/debugging` for more information about 
debugging techniques.
+
 Peripheral Support
 ==================
 

Reply via email to