Documentation/esp32: Remove the rest of the OpenOCD text.
This information there is outdated and some of its content should be in the board documentation and not the chip. Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
This commit is contained in:
parent
18dd3973f0
commit
58a5e0744b
@ -307,235 +307,6 @@ Bluetooth
|
||||
|
||||
Bluetooth is not currently supported.
|
||||
|
||||
Debugging with OpenOCD
|
||||
======================
|
||||
|
||||
First you in need some debug environment which would be a JTAG emulator
|
||||
and the ESP32 OpenOCD software which is available here:
|
||||
https://github.com/espressif/openocd-esp32
|
||||
|
||||
OpenOCD Documentation
|
||||
---------------------
|
||||
|
||||
There is on overview of the use of OpenOCD `here <https://dl.espressif.com/doc/esp-idf/latest/openocd.html>`.
|
||||
This document is also available in `ESP-IDF source tree <https://github.com/espressif/esp-idf>`_
|
||||
in ``docs`` directory.
|
||||
|
||||
OpenOCD Configuration File
|
||||
--------------------------
|
||||
|
||||
A template ESP32 OpenOCD configuration file is provided in
|
||||
ESP-IDF ``docs`` directory (``esp32.cfg``). Since you are not using
|
||||
FreeRTOS, you will need to uncomment the line::
|
||||
|
||||
set ESP32_RTOS none
|
||||
|
||||
in the OpenOCD configuration file. You will also need to change
|
||||
the source line from::
|
||||
|
||||
find interface/ftdi/tumpa.cfg
|
||||
|
||||
to reflect the physical JTAG adapter connected.
|
||||
|
||||
A copy of this OpenOCD configuration file available in the NuttX
|
||||
source tree at ``nuttx/boards/xtensa/esp32/esp32-devkitc/scripts/esp32.cfg``.
|
||||
It has these modifications:
|
||||
|
||||
- The referenced "set ESP32_RTOS none" line has been uncommented
|
||||
- The "find interface/ftdi/tumpa.cfg" was removed. This means that you will
|
||||
need to specify the interface configuration file on the OpenOCD
|
||||
command line.
|
||||
|
||||
Another OpenOCD configuration file is available in the NuttX source tree at
|
||||
``nuttx/boards/xtensa/esp32/esp32-devkitc/scripts/esp32-ft232h.cfg``.
|
||||
It has been tested with:
|
||||
|
||||
- `ESP32-DevKitC V4 <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html>`_
|
||||
|
||||
- Akizukidenshi's FT232HL, a FT232H based JTAG adapter
|
||||
(http://akizukidenshi.com/catalog/g/gK-06503/) with JP3 and JP4 closed,
|
||||
and connected to ESP32 as:
|
||||
|
||||
+------------------+-------------+
|
||||
| ESP32-DevKitC V4 | FT232HL |
|
||||
+=======+==========+=============+
|
||||
| J2 | J3 | J2 |
|
||||
+-------+----------+-------------+
|
||||
| IO13 | | AD0 (TCK) |
|
||||
+-------+----------+-------------+
|
||||
| IO12 | | AD1 (TDI) |
|
||||
+-------+----------+-------------+
|
||||
| | IO15 | AD2 (TDO) |
|
||||
+-------+----------+-------------+
|
||||
| IO14 | | AD3 (TMS) |
|
||||
+-------+----------+-------------+
|
||||
| GND | | GND |
|
||||
+-------+----------+-------------+
|
||||
|
||||
The following version of OpenOCD from ESP-IDF (macOS version)::
|
||||
|
||||
% openocd --version
|
||||
Open On-Chip Debugger v0.10.0-esp32-20191114 (2019-11-14-14:19)
|
||||
Licensed under GNU GPL v2
|
||||
For bug reports, read
|
||||
http://openocd.org/doc/doxygen/bugs.html
|
||||
|
||||
General OpenOCD build instructions
|
||||
----------------------------------
|
||||
|
||||
Installing OpenOCD. The sources for the ESP32-enabled variant of
|
||||
OpenOCD are available from Espressifs GitHub. To download the source,
|
||||
use the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/espressif/openocd-esp32.git
|
||||
$ cd openocd-esp32
|
||||
$ git submodule init
|
||||
$ git submodule update
|
||||
|
||||
Then look at the README and the docs/INSTALL.txt files in the
|
||||
openocd-esp32 directory for further instructions. There area
|
||||
separate README files for Linux/Cygwin, macOS, and Windows. Here
|
||||
is what I ended up doing (under Linux):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd openocd-esp32
|
||||
$ ./bootstrap
|
||||
$ ./configure
|
||||
$ make
|
||||
|
||||
If you do not do the install step, then you will have a localhost
|
||||
version of the OpenOCD binary at ``openocd-esp32/src``.
|
||||
|
||||
Starting the OpenOCD Server
|
||||
---------------------------
|
||||
|
||||
- cd to openocd-esp32 directory
|
||||
- copy the modified esp32.cfg script to this directory
|
||||
|
||||
Then start OpenOCD by executing a command like the following. Here
|
||||
I assume that:
|
||||
|
||||
- You did not install OpenOCD; binaries are available at
|
||||
openocd-esp32/src and interface scripts are in
|
||||
openocd-esp32/tcl/interface
|
||||
- I select the configuration for the Olimex ARM-USB-OCD
|
||||
debugger.
|
||||
|
||||
Then the command to start OpenOCD is:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ ./src/openocd -s ./tcl -f tcl/interface/ftdi/olimex-arm-usb-ocd.cfg -f ./esp32.cfg
|
||||
|
||||
I then see::
|
||||
|
||||
Open On-Chip Debugger 0.10.0-dev-g3098897 (2016-11-14-12:19)
|
||||
Licensed under GNU GPL v2
|
||||
For bug reports, read
|
||||
http://openocd.org/doc/doxygen/bugs.html
|
||||
adapter speed: 200 kHz
|
||||
force hard breakpoints
|
||||
Info : clock speed 200 kHz
|
||||
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
|
||||
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
|
||||
Info : esp32.cpu0: Debug controller was reset (pwrstat=0x5F, after clear 0x0F).
|
||||
Info : esp32.cpu0: Core was reset (pwrstat=0x5F, after clear 0x0F).
|
||||
|
||||
Connecting a debugger to OpenOCD
|
||||
--------------------------------
|
||||
|
||||
OpenOCD should now be ready to accept gdb connections. If you have
|
||||
compiled the ESP32 toolchain using Crosstool-NG, or if you have
|
||||
downloaded a precompiled toolchain from the Espressif website, you
|
||||
should already have xtensa-esp32-elf-gdb, a version of gdb that can
|
||||
be used for this
|
||||
|
||||
First, make sure the project you want to debug is compiled and
|
||||
flashed into the ESP32’s SPI flash. Then, in a different console
|
||||
than OpenOCD is running in, invoke gdb. For example, for the
|
||||
template app, you would do this like such::
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd nuttx
|
||||
$ xtensa-esp32-elf-gdb -ex 'target remote localhost:3333' nuttx
|
||||
|
||||
This should give you a gdb prompt.
|
||||
|
||||
Breakpoints
|
||||
-----------
|
||||
|
||||
You can set up to 2 hardware breakpoints, which can be anywhere in the
|
||||
address space. Also 2 hardware watchpoints.
|
||||
|
||||
The openocd esp32.cfg file currently forces gdb to use hardware
|
||||
breakpoints, I believe because software breakpoints (or, at least, the
|
||||
memory map for automatically choosing them) aren't implemented yet
|
||||
(as of 2016-11-14).
|
||||
|
||||
JTAG Emulator
|
||||
-------------
|
||||
|
||||
The documentation indicates that you need to use an external JTAG
|
||||
like the TIAO USB Multi-protocol Adapter and the Flyswatter2.
|
||||
The instructions at http://www.esp32.com/viewtopic.php?t=381 show
|
||||
use of an FTDI C232HM-DDHSL-0 USB 2.0 high speed to MPSSE cable.
|
||||
|
||||
The ESP32 DevkitC v4 board has no on board JTAG connector. It will
|
||||
be necessary to make a cable or some other board to connect a JTAG
|
||||
emulator. Refer to http://www.esp32.com/viewtopic.php?t=381 "How
|
||||
to debug ESP32 with JTAG / OpenOCD / GDB 1st part connect the
|
||||
hardware."
|
||||
|
||||
Relevant pin-out:
|
||||
|
||||
========= =============
|
||||
PIN LABEL JTAG FUNCTION
|
||||
========= =============
|
||||
IO14 TMS
|
||||
IO12 TDI
|
||||
GND GND
|
||||
IO13 TCK
|
||||
x x
|
||||
IO15 TDO
|
||||
========= =============
|
||||
|
||||
You can find the mapping of JTAG signals to ESP32 GPIO numbers in
|
||||
"ESP32 Pin List" document found
|
||||
`here <http://espressif.com/en/support/download/documents?keys=&field_type_tid%5B%5D=13>`_.
|
||||
|
||||
I put the ESP32 on a prototyping board and used a standard JTAG 20-pin
|
||||
connector with an older Olimex JTAG that I had. Here is how I wired
|
||||
the 20-pin connector:
|
||||
|
||||
===================== ===============
|
||||
20-PIN JTAG CONNECTOR ESP32 PIN LABEL
|
||||
===================== ===============
|
||||
1 VREF INPUT 3V3
|
||||
3 nTRST OUTPUT N/C
|
||||
5 TDI OUTPUT IO12
|
||||
7 TMS OUTPUT IO14
|
||||
9 TCLK OUTPUT IO13
|
||||
11 RTCK INPUT N/C
|
||||
13 TDO INPUT IO15
|
||||
15 RESET I/O N/C
|
||||
17 DBGRQ OUTPUT N/C
|
||||
19 5V OUTPUT N/C
|
||||
2 VCC INPUT 3V3
|
||||
4 GND N/A GND
|
||||
6 GND N/A GND
|
||||
8 GND N/A GND
|
||||
10 GND N/A GND
|
||||
12 GND N/A GND
|
||||
14 GND N/A GND
|
||||
16 GND N/A GND
|
||||
18 GND N/A GND
|
||||
20 GND N/A GND
|
||||
===================== ===============
|
||||
|
||||
Using QEMU
|
||||
==========
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user