You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gi...@apache.org on 2021/07/27 00:11:05 UTC

[incubator-nuttx-website] branch asf-site updated: Publishing web: 934a4647f20f1ab1148ce00d3b05b97fb19ad702 docs: 5e01fe050a750eabbcb09af9d64e98ce17e50042

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

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new a4e5219  Publishing web: 934a4647f20f1ab1148ce00d3b05b97fb19ad702 docs: 5e01fe050a750eabbcb09af9d64e98ce17e50042
a4e5219 is described below

commit a4e52192406a399159ff82a0b269e026537a4f16
Author: Nathan <59...@users.noreply.github.com>
AuthorDate: Tue Jul 27 00:07:56 2021 +0000

    Publishing web: 934a4647f20f1ab1148ce00d3b05b97fb19ad702 docs: 5e01fe050a750eabbcb09af9d64e98ce17e50042
---
 content/docs/10.0.0/index.html                     |   2 +-
 content/docs/10.0.1/index.html                     |   2 +-
 content/docs/10.1.0/index.html                     |   2 +-
 .../_sources/platforms/xtensa/esp32/index.rst.txt  | 375 +----------------
 content/docs/latest/index.html                     |   2 +-
 content/docs/latest/objects.inv                    | Bin 33084 -> 32685 bytes
 .../xtensa/esp32/boards/esp32-devkitc/index.html   |   2 -
 .../esp32/boards/esp32-wrover-kit/index.html       |   2 -
 .../docs/latest/platforms/xtensa/esp32/index.html  | 468 +--------------------
 content/docs/latest/searchindex.js                 |   2 +-
 content/feed.xml                                   |   4 +-
 11 files changed, 21 insertions(+), 840 deletions(-)

diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index 8af9073..118a11e 100644
--- a/content/docs/10.0.0/index.html
+++ b/content/docs/10.0.0/index.html
@@ -207,7 +207,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 26 July 21 at 00:05</p>
+<p>Last Updated: 27 July 21 at 00:05</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html
index c3981d2..2a91a85 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -213,7 +213,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 26 July 21 at 00:05</p>
+<p>Last Updated: 27 July 21 at 00:05</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html
index 5c1d635..fd0bf3b 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -213,7 +213,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 26 July 21 at 00:06</p>
+<p>Last Updated: 27 July 21 at 00:05</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/latest/_sources/platforms/xtensa/esp32/index.rst.txt b/content/docs/latest/_sources/platforms/xtensa/esp32/index.rst.txt
index 9846524..5636f5e 100644
--- a/content/docs/latest/_sources/platforms/xtensa/esp32/index.rst.txt
+++ b/content/docs/latest/_sources/platforms/xtensa/esp32/index.rst.txt
@@ -37,7 +37,7 @@ build the toolchain with crosstool-NG on Linux are as follows
 
   $ git clone https://github.com/espressif/crosstool-NG.git
   $ cd crosstool-NG
-  $ git checkout esp-2019r2
+  $ git checkout esp-2021r1
   $ git submodule update --init
 
   $ ./bootstrap && ./configure --enable-local && make
@@ -49,13 +49,16 @@ build the toolchain with crosstool-NG on Linux are as follows
 
   $ export PATH="crosstool-NG/builds/xtensa-esp32-elf/bin:$PATH"
 
-These steps are given in setup guide in
-`ESP-IDF repository <https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup-scratch.html>`_.
+These steps are given in the setup guide in
+`ESP-IDF documentation <https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup-scratch.html>`_.
 
 Flashing
 ========
 
-Firmware for ESP32 is flashed via the USB/UART interface using the ``esptool.py`` tool. To flash your NuttX firmware simply run::
+Firmware for ESP32 is flashed via the USB/UART interface using the ``esptool.py`` tool. 
+It's a two step process where the first converts the ELF file into a ESP32-compatible binary 
+and the second flashes it to the board.  These steps are included into the build system and you can
+flash your NuttX firmware simply by running::
 
     make download ESPTOOL_PORT=<port>
 
@@ -304,368 +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
-===================== ===============
-
-Executing and Debugging from FLASH and IRAM
-===========================================
-
-FLASH
------
-
-OpenOCD currently doesn't have a FLASH driver for ESP32, so you can load
-code into IRAM only via JTAG. FLASH-resident sections like .FLASH.rodata
-will fail to load.  The bootloader in ROM doesn't parse ELF, so any image
-which is bootloaded from FLASH has to be converted into a custom image
-format first.
-
-The tool esp-idf uses for flashing is a command line Python tool called
-"esptool.py" which talks to a serial bootloader in ROM.  A version is
-supplied in the esp-idf codebase in components/esptool_py/esptool, the
-"upstream" for that tool is here and now supports ESP32::
-
-  https://github.com/espressif/esptool/
-
-To FLASH an ELF via the command line is a two step process, something like
-this::
-
-  esptool.py --chip esp32 elf2image --flash_mode dio --flash_size 4MB -o nuttx.bin nuttx
-  esptool.py --chip esp32 --port COMx write_flash 0x1000 bootloader.bin 0x8000 partition_table.bin 0x10000 nuttx.bin
-
-The first step converts an ELF image into an ESP32-compatible binary
-image format, and the second step flashes it (along with bootloader image and
-partition table binary.)
-The offset for the partition table may vary, depending on ESP-IDF
-configuration, ``CONFIG_PARTITION_TABLE_OFFSET``, which is by default 0x8000
-as of writing this.
-
-To put the ESP32 into serial flashing mode, it needs to be reset with IO0 held
-low.  On the Core boards this can be accomplished by holding the button marked
-"Boot" and pressing then releasing the button marked "EN".  Actually, esptool.py
-can enter bootloader mode automatically (via RTS/DTR control lines), but
-unfortunately a timing interaction between the Windows CP2012 driver and the
-hardware means this doesn't currently work on Windows.
-
-Secondary Boot Loader / Partition Table
----------------------------------------
-
-See:
-
-  - https://github.com/espressif/esp-idf/tree/master/components/bootloader
-  - https://github.com/espressif/esp-idf/tree/master/components/partition_table .
-
-The secondary boot loader by default programs a RTC watchdog timer.
-As NuttX doesn't know the timer, it reboots every ~9 seconds. You can
-disable the timer by tweaking sdkconfig CONFIG_BOOTLOADER_WDT_ENABLE
-and rebuild the boot loader.
-
-Running from IRAM with OpenOCD
-------------------------------
-
-Running from IRAM is a good debug option.  You should be able to load the
-ELF directly via JTAG in this case, and you may not need the bootloader.
-
-NuttX supports a configuration option, CONFIG_ESP32_DEVKITC_RUN_IRAM, that may be
-selected for execution from IRAM.  This option simply selects the correct
-linker script for IRAM execution.
-
-Skipping the Secondary Bootloader
----------------------------------
-
-It is possible to skip the secondary bootloader and run out of IRAM using
-only the primary bootloader if your application of small enough (< 128KiB code,
-<180KiB data), then you can simplify initial bring-up by avoiding second stage
-bootloader. Your application will be loaded into IRAM using first stage
-bootloader present in ESP32 ROM. To achieve this, you need two things:
-
-  1. Have a linker script which places all code into IRAM and all data into
-     IRAM/DRAM
-
-  2. Use "esptool.py" utility to convert application .elf
-     file into binary format which can be loaded by first stage bootloader.
-
-Again you would need to link the ELF file and convert it to binary format suitable
-for flashing into the board.  The command should to convert ELF file to binary
-image looks as follows::
-
-  esptool.py --chip esp32 elf2image --flash_mode "dio" --flash_freq "40m" --flash_size "2MB" -o nuttx.bin nuttx
-
-To flash binary image to your development board, use the same esptool.py utility::
-
-  esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 write_flash -z --flash_mode dio --flash_freq 40m --flash_size 2MB 0x1000 nuttx.bin
-
-The argument before app.bin (0x1000) indicates the offset in flash where binary
-will be written. ROM bootloader expects to find an application (or second stage
-bootloader) image at offset 0x1000, so we are writing the binary there.
-
-Sample OpenOCD Debug Steps
---------------------------
-
-I did the initial bring-up using the IRAM configuration and OpenOCD.  Here
-is a synopsis of my debug steps:
-
-boards/xtensa/esp32/esp32-devkitc/configs/nsh with::
-
-  CONFIG_DEBUG_ASSERTIONS=y
-  CONFIG_DEBUG_FEATURES=y
-  CONFIG_DEBUG_SYMBOLS=y
-  CONFIG_ESP32_DEVKITC_RUN_IRAM=y
-
-I also made this change configuration which will eliminate all attempts to
-re-configure serial. It will just use the serial settings as they were left
-by the bootloader::
-
-  CONFIG_SUPPRESS_UART_CONFIG=y
-
-Start OpenOCD::
-
-  cd ../openocde-esp32
-  cp ../nuttx/boards/xtensa/esp32/esp32-devkitc/scripts/esp32.cfg .
-  sudo ./src/openocd -s ./tcl/ -f tcl/interface/ftdi/olimex-arm-usb-ocd.cfg -f ./esp32.cfg
-
-Start GDB and load code::
-
-  cd ../nuttx
-  xtensa-esp32-elf-gdb -ex 'target remote localhost:3333' nuttx
-  (gdb) load nuttx
-  (gdb) mon reg pc [value report by load for entry point]
-  (gdb) s
-
-Single stepping works fine for me as do breakpoints::
-
-  Breakpoint 1, up_timer_initialize () at chip/esp32_timerisr.c:172
-  72 {
-  (gdb) n
-  esp32.cpu0: Target halted, pc=0x400835BF
-  187 g_tick_divisor = divisor;
-  (gdb) ...
-
 Using QEMU
 ==========
 
@@ -704,8 +345,6 @@ Things to Do
 
 3. See SMP-related issues above
 
-4. See OpenOCD for the ESP32 above
-
 Supported Boards
 ================
 
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index 49964c6..890747b 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -214,7 +214,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 26 July 21 at 00:06</p>
+<p>Last Updated: 27 July 21 at 00:06</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv
index 5ae0f21..45b351d 100644
Binary files a/content/docs/latest/objects.inv and b/content/docs/latest/objects.inv differ
diff --git a/content/docs/latest/platforms/xtensa/esp32/boards/esp32-devkitc/index.html b/content/docs/latest/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
index 273fe0a..c757bde 100644
--- a/content/docs/latest/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
+++ b/content/docs/latest/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
@@ -140,8 +140,6 @@
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#smp">SMP</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#wifi">WiFi</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#bluetooth">Bluetooth</a></li>
-<li class="toctree-l4"><a class="reference internal" href="../../index.html#debugging-with-openocd">Debugging with OpenOCD</a></li>
-<li class="toctree-l4"><a class="reference internal" href="../../index.html#executing-and-debugging-from-flash-and-iram">Executing and Debugging from FLASH and IRAM</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#using-qemu">Using QEMU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#things-to-do">Things to Do</a></li>
 <li class="toctree-l4 current"><a class="reference internal" href="../../index.html#supported-boards">Supported Boards</a><ul class="current">
diff --git a/content/docs/latest/platforms/xtensa/esp32/boards/esp32-wrover-kit/index.html b/content/docs/latest/platforms/xtensa/esp32/boards/esp32-wrover-kit/index.html
index a420bb4..ad10dbd 100644
--- a/content/docs/latest/platforms/xtensa/esp32/boards/esp32-wrover-kit/index.html
+++ b/content/docs/latest/platforms/xtensa/esp32/boards/esp32-wrover-kit/index.html
@@ -140,8 +140,6 @@
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#smp">SMP</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#wifi">WiFi</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#bluetooth">Bluetooth</a></li>
-<li class="toctree-l4"><a class="reference internal" href="../../index.html#debugging-with-openocd">Debugging with OpenOCD</a></li>
-<li class="toctree-l4"><a class="reference internal" href="../../index.html#executing-and-debugging-from-flash-and-iram">Executing and Debugging from FLASH and IRAM</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#using-qemu">Using QEMU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="../../index.html#things-to-do">Things to Do</a></li>
 <li class="toctree-l4 current"><a class="reference internal" href="../../index.html#supported-boards">Supported Boards</a><ul class="current">
diff --git a/content/docs/latest/platforms/xtensa/esp32/index.html b/content/docs/latest/platforms/xtensa/esp32/index.html
index 31bf73e..9a8b80d 100644
--- a/content/docs/latest/platforms/xtensa/esp32/index.html
+++ b/content/docs/latest/platforms/xtensa/esp32/index.html
@@ -157,24 +157,6 @@
 </li>
 <li class="toctree-l4"><a class="reference internal" href="#wifi">WiFi</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#bluetooth">Bluetooth</a></li>
-<li class="toctree-l4"><a class="reference internal" href="#debugging-with-openocd">Debugging with OpenOCD</a><ul>
-<li class="toctree-l5"><a class="reference internal" href="#openocd-documentation">OpenOCD Documentation</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#openocd-configuration-file">OpenOCD Configuration File</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#general-openocd-build-instructions">General OpenOCD build instructions</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#starting-the-openocd-server">Starting the OpenOCD Server</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#connecting-a-debugger-to-openocd">Connecting a debugger to OpenOCD</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#breakpoints">Breakpoints</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#jtag-emulator">JTAG Emulator</a></li>
-</ul>
-</li>
-<li class="toctree-l4"><a class="reference internal" href="#executing-and-debugging-from-flash-and-iram">Executing and Debugging from FLASH and IRAM</a><ul>
-<li class="toctree-l5"><a class="reference internal" href="#flash">FLASH</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#secondary-boot-loader-partition-table">Secondary Boot Loader / Partition Table</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#running-from-iram-with-openocd">Running from IRAM with OpenOCD</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#skipping-the-secondary-bootloader">Skipping the Secondary Bootloader</a></li>
-<li class="toctree-l5"><a class="reference internal" href="#sample-openocd-debug-steps">Sample OpenOCD Debug Steps</a></li>
-</ul>
-</li>
 <li class="toctree-l4"><a class="reference internal" href="#using-qemu">Using QEMU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#things-to-do">Things to Do</a></li>
 <li class="toctree-l4"><a class="reference internal" href="#supported-boards">Supported Boards</a><ul>
@@ -294,7 +276,7 @@ for ESP32 by Espressif.</p>
 build the toolchain with crosstool-NG on Linux are as follows</p>
 <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/espressif/crosstool-NG.git
 <span class="gp">$ </span><span class="nb">cd</span> crosstool-NG
-<span class="gp">$ </span>git checkout esp-2019r2
+<span class="gp">$ </span>git checkout esp-2021r1
 <span class="gp">$ </span>git submodule update --init
 
 <span class="gp">$ </span>./bootstrap <span class="o">&amp;&amp;</span> ./configure --enable-local <span class="o">&amp;&amp;</span> make
@@ -307,13 +289,16 @@ build the toolchain with crosstool-NG on Linux are as follows</p>
 <span class="gp">$ </span><span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="s2">&quot;crosstool-NG/builds/xtensa-esp32-elf/bin:</span><span class="nv">$PATH</span><span class="s2">&quot;</span>
 </pre></div>
 </div>
-<p>These steps are given in setup guide in
-<a class="reference external" href="https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup-scratch.html">ESP-IDF repository</a>.</p>
+<p>These steps are given in the setup guide in
+<a class="reference external" href="https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup-scratch.html">ESP-IDF documentation</a>.</p>
 </div>
 </div>
 <div class="section" id="flashing">
 <h2>Flashing<a class="headerlink" href="#flashing" title="Permalink to this headline">¶</a></h2>
-<p>Firmware for ESP32 is flashed via the USB/UART interface using the <code class="docutils literal notranslate"><span class="pre">esptool.py</span></code> tool. To flash your NuttX firmware simply run:</p>
+<p>Firmware for ESP32 is flashed via the USB/UART interface using the <code class="docutils literal notranslate"><span class="pre">esptool.py</span></code> tool.
+It’s a two step process where the first converts the ELF file into a ESP32-compatible binary
+and the second flashes it to the board.  These steps are included into the build system and you can
+flash your NuttX firmware simply by running:</p>
 <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>make download ESPTOOL_PORT=&lt;port&gt;
 </pre></div>
 </div>
@@ -908,444 +893,6 @@ the result by running <code class="docutils literal notranslate"><span class="pr
 <h2>Bluetooth<a class="headerlink" href="#bluetooth" title="Permalink to this headline">¶</a></h2>
 <p>Bluetooth is not currently supported.</p>
 </div>
-<div class="section" id="debugging-with-openocd">
-<h2>Debugging with OpenOCD<a class="headerlink" href="#debugging-with-openocd" title="Permalink to this headline">¶</a></h2>
-<p>First you in need some debug environment which would be a JTAG emulator
-and the ESP32 OpenOCD software which is available here:
-<a class="reference external" href="https://github.com/espressif/openocd-esp32">https://github.com/espressif/openocd-esp32</a></p>
-<div class="section" id="openocd-documentation">
-<h3>OpenOCD Documentation<a class="headerlink" href="#openocd-documentation" title="Permalink to this headline">¶</a></h3>
-<p>There is on overview of the use of OpenOCD <cite>here &lt;https://dl.espressif.com/doc/esp-idf/latest/openocd.html&gt;</cite>.
-This document is also available in <a class="reference external" href="https://github.com/espressif/esp-idf">ESP-IDF source tree</a>
-in <code class="docutils literal notranslate"><span class="pre">docs</span></code> directory.</p>
-</div>
-<div class="section" id="openocd-configuration-file">
-<h3>OpenOCD Configuration File<a class="headerlink" href="#openocd-configuration-file" title="Permalink to this headline">¶</a></h3>
-<p>A template ESP32 OpenOCD configuration file is provided in
-ESP-IDF <code class="docutils literal notranslate"><span class="pre">docs</span></code> directory (<code class="docutils literal notranslate"><span class="pre">esp32.cfg</span></code>).  Since you are not using
-FreeRTOS, you will need to uncomment the line:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>set ESP32_RTOS none
-</pre></div>
-</div>
-<p>in the OpenOCD configuration file.  You will also need to change
-the source line from:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>find interface/ftdi/tumpa.cfg
-</pre></div>
-</div>
-<p>to reflect the physical JTAG adapter connected.</p>
-<p>A copy of this OpenOCD configuration file available in the NuttX
-source tree at <code class="docutils literal notranslate"><span class="pre">nuttx/boards/xtensa/esp32/esp32-devkitc/scripts/esp32.cfg</span></code>.
-It has these modifications:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p>The referenced “set ESP32_RTOS none” line has been uncommented</p></li>
-<li><p>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.</p></li>
-</ul>
-</div></blockquote>
-<p>Another OpenOCD configuration file is available in the NuttX source tree at
-<code class="docutils literal notranslate"><span class="pre">nuttx/boards/xtensa/esp32/esp32-devkitc/scripts/esp32-ft232h.cfg</span></code>.
-It has been tested with:</p>
-<blockquote>
-<div><ul>
-<li><p><a class="reference external" href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html">ESP32-DevKitC V4</a></p></li>
-<li><p>Akizukidenshi’s FT232HL, a FT232H based JTAG adapter
-(<a class="reference external" href="http://akizukidenshi.com/catalog/g/gK-06503/">http://akizukidenshi.com/catalog/g/gK-06503/</a>) with JP3 and JP4 closed,
-and connected to ESP32 as:</p>
-<table class="docutils align-default">
-<colgroup>
-<col style="width: 23%" />
-<col style="width: 33%" />
-<col style="width: 43%" />
-</colgroup>
-<thead>
-<tr class="row-odd"><th class="head" colspan="2"><p>ESP32-DevKitC V4</p></th>
-<th class="head"><p>FT232HL</p></th>
-</tr>
-</thead>
-<tbody>
-<tr class="row-even"><td><p>J2</p></td>
-<td><p>J3</p></td>
-<td><p>J2</p></td>
-</tr>
-<tr class="row-odd"><td><p>IO13</p></td>
-<td></td>
-<td><p>AD0   (TCK)</p></td>
-</tr>
-<tr class="row-even"><td><p>IO12</p></td>
-<td></td>
-<td><p>AD1   (TDI)</p></td>
-</tr>
-<tr class="row-odd"><td></td>
-<td><p>IO15</p></td>
-<td><p>AD2   (TDO)</p></td>
-</tr>
-<tr class="row-even"><td><p>IO14</p></td>
-<td></td>
-<td><p>AD3   (TMS)</p></td>
-</tr>
-<tr class="row-odd"><td><p>GND</p></td>
-<td></td>
-<td><p>GND</p></td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</div></blockquote>
-<p>The following version of OpenOCD from ESP-IDF (macOS version):</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>% 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
-</pre></div>
-</div>
-</div>
-<div class="section" id="general-openocd-build-instructions">
-<h3>General OpenOCD build instructions<a class="headerlink" href="#general-openocd-build-instructions" title="Permalink to this headline">¶</a></h3>
-<p>Installing OpenOCD.  The sources for the ESP32-enabled variant of
-OpenOCD are available from Espressifs GitHub. To download the source,
-use the following commands:</p>
-<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/espressif/openocd-esp32.git
-<span class="gp">$ </span><span class="nb">cd</span> openocd-esp32
-<span class="gp">$ </span>git submodule init
-<span class="gp">$ </span>git submodule update
-</pre></div>
-</div>
-<p>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):</p>
-<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span> openocd-esp32
-<span class="gp">$ </span>./bootstrap
-<span class="gp">$ </span>./configure
-<span class="gp">$ </span>make
-</pre></div>
-</div>
-<p>If you do not do the install step, then you will have a localhost
-version of the OpenOCD binary at <code class="docutils literal notranslate"><span class="pre">openocd-esp32/src</span></code>.</p>
-</div>
-<div class="section" id="starting-the-openocd-server">
-<h3>Starting the OpenOCD Server<a class="headerlink" href="#starting-the-openocd-server" title="Permalink to this headline">¶</a></h3>
-<blockquote>
-<div><ul class="simple">
-<li><p>cd to openocd-esp32 directory</p></li>
-<li><p>copy the modified esp32.cfg script to this directory</p></li>
-</ul>
-</div></blockquote>
-<p>Then start OpenOCD by executing a command like the following.  Here
-I assume that:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p>You did not install OpenOCD; binaries are available at
-openocd-esp32/src and interface scripts are in
-openocd-esp32/tcl/interface</p></li>
-<li><p>I select the configuration for the Olimex ARM-USB-OCD
-debugger.</p></li>
-</ul>
-</div></blockquote>
-<p>Then the command to start OpenOCD is:</p>
-<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>./src/openocd -s ./tcl -f tcl/interface/ftdi/olimex-arm-usb-ocd.cfg -f ./esp32.cfg
-</pre></div>
-</div>
-<p>I then see:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>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).
-</pre></div>
-</div>
-</div>
-<div class="section" id="connecting-a-debugger-to-openocd">
-<h3>Connecting a debugger to OpenOCD<a class="headerlink" href="#connecting-a-debugger-to-openocd" title="Permalink to this headline">¶</a></h3>
-<p>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</p>
-<p>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:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>.. code-block:: console
-</pre></div>
-</div>
-<blockquote>
-<div><p>$ cd nuttx
-$ xtensa-esp32-elf-gdb -ex ‘target remote localhost:3333’ nuttx</p>
-</div></blockquote>
-<p>This should give you a gdb prompt.</p>
-</div>
-<div class="section" id="breakpoints">
-<h3>Breakpoints<a class="headerlink" href="#breakpoints" title="Permalink to this headline">¶</a></h3>
-<p>You can set up to 2 hardware breakpoints, which can be anywhere in the
-address space. Also 2 hardware watchpoints.</p>
-<p>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).</p>
-</div>
-<div class="section" id="jtag-emulator">
-<h3>JTAG Emulator<a class="headerlink" href="#jtag-emulator" title="Permalink to this headline">¶</a></h3>
-<p>The documentation indicates that you need to use an external JTAG
-like the TIAO USB Multi-protocol Adapter and the Flyswatter2.
-The instructions at <a class="reference external" href="http://www.esp32.com/viewtopic.php?t=381">http://www.esp32.com/viewtopic.php?t=381</a> show
-use of an FTDI C232HM-DDHSL-0 USB 2.0 high speed to MPSSE cable.</p>
-<p>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 <a class="reference external" href="http://www.esp32.com/viewtopic.php?t=381">http://www.esp32.com/viewtopic.php?t=381</a> “How
-to debug ESP32 with JTAG / OpenOCD / GDB 1st part connect the
-hardware.”</p>
-<p>Relevant pin-out:</p>
-<table class="docutils align-default">
-<colgroup>
-<col style="width: 41%" />
-<col style="width: 59%" />
-</colgroup>
-<thead>
-<tr class="row-odd"><th class="head"><p>PIN LABEL</p></th>
-<th class="head"><p>JTAG FUNCTION</p></th>
-</tr>
-</thead>
-<tbody>
-<tr class="row-even"><td><p>IO14</p></td>
-<td><p>TMS</p></td>
-</tr>
-<tr class="row-odd"><td><p>IO12</p></td>
-<td><p>TDI</p></td>
-</tr>
-<tr class="row-even"><td><p>GND</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-odd"><td><p>IO13</p></td>
-<td><p>TCK</p></td>
-</tr>
-<tr class="row-even"><td><p>x</p></td>
-<td><p>x</p></td>
-</tr>
-<tr class="row-odd"><td><p>IO15</p></td>
-<td><p>TDO</p></td>
-</tr>
-</tbody>
-</table>
-<p>You can find the mapping of JTAG signals to ESP32 GPIO numbers in
-“ESP32 Pin List” document found
-<a class="reference external" href="http://espressif.com/en/support/download/documents?keys=&amp;field_type_tid%5B%5D=13">here</a>.</p>
-<p>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:</p>
-<table class="docutils align-default">
-<colgroup>
-<col style="width: 58%" />
-<col style="width: 42%" />
-</colgroup>
-<thead>
-<tr class="row-odd"><th class="head"><p>20-PIN JTAG CONNECTOR</p></th>
-<th class="head"><p>ESP32 PIN LABEL</p></th>
-</tr>
-</thead>
-<tbody>
-<tr class="row-even"><td><p>1 VREF  INPUT</p></td>
-<td><p>3V3</p></td>
-</tr>
-<tr class="row-odd"><td><p>3 nTRST OUTPUT</p></td>
-<td><p>N/C</p></td>
-</tr>
-<tr class="row-even"><td><p>5 TDI   OUTPUT</p></td>
-<td><p>IO12</p></td>
-</tr>
-<tr class="row-odd"><td><p>7 TMS   OUTPUT</p></td>
-<td><p>IO14</p></td>
-</tr>
-<tr class="row-even"><td><p>9 TCLK  OUTPUT</p></td>
-<td><p>IO13</p></td>
-</tr>
-<tr class="row-odd"><td><p>11 RTCK  INPUT</p></td>
-<td><p>N/C</p></td>
-</tr>
-<tr class="row-even"><td><p>13 TDO   INPUT</p></td>
-<td><p>IO15</p></td>
-</tr>
-<tr class="row-odd"><td><p>15 RESET I/O</p></td>
-<td><p>N/C</p></td>
-</tr>
-<tr class="row-even"><td><p>17 DBGRQ OUTPUT</p></td>
-<td><p>N/C</p></td>
-</tr>
-<tr class="row-odd"><td><p>19 5V    OUTPUT</p></td>
-<td><p>N/C</p></td>
-</tr>
-<tr class="row-even"><td><p>2 VCC   INPUT</p></td>
-<td><p>3V3</p></td>
-</tr>
-<tr class="row-odd"><td><p>4 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-even"><td><p>6 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-odd"><td><p>8 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-even"><td><p>10 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-odd"><td><p>12 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-even"><td><p>14 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-odd"><td><p>16 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-even"><td><p>18 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-<tr class="row-odd"><td><p>20 GND   N/A</p></td>
-<td><p>GND</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-<div class="section" id="executing-and-debugging-from-flash-and-iram">
-<h2>Executing and Debugging from FLASH and IRAM<a class="headerlink" href="#executing-and-debugging-from-flash-and-iram" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="flash">
-<h3>FLASH<a class="headerlink" href="#flash" title="Permalink to this headline">¶</a></h3>
-<p>OpenOCD currently doesn’t have a FLASH driver for ESP32, so you can load
-code into IRAM only via JTAG. FLASH-resident sections like .FLASH.rodata
-will fail to load.  The bootloader in ROM doesn’t parse ELF, so any image
-which is bootloaded from FLASH has to be converted into a custom image
-format first.</p>
-<p>The tool esp-idf uses for flashing is a command line Python tool called
-“esptool.py” which talks to a serial bootloader in ROM.  A version is
-supplied in the esp-idf codebase in components/esptool_py/esptool, the
-“upstream” for that tool is here and now supports ESP32:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>https://github.com/espressif/esptool/
-</pre></div>
-</div>
-<p>To FLASH an ELF via the command line is a two step process, something like
-this:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>esptool.py --chip esp32 elf2image --flash_mode dio --flash_size 4MB -o nuttx.bin nuttx
-esptool.py --chip esp32 --port COMx write_flash 0x1000 bootloader.bin 0x8000 partition_table.bin 0x10000 nuttx.bin
-</pre></div>
-</div>
-<p>The first step converts an ELF image into an ESP32-compatible binary
-image format, and the second step flashes it (along with bootloader image and
-partition table binary.)
-The offset for the partition table may vary, depending on ESP-IDF
-configuration, <code class="docutils literal notranslate"><span class="pre">CONFIG_PARTITION_TABLE_OFFSET</span></code>, which is by default 0x8000
-as of writing this.</p>
-<p>To put the ESP32 into serial flashing mode, it needs to be reset with IO0 held
-low.  On the Core boards this can be accomplished by holding the button marked
-“Boot” and pressing then releasing the button marked “EN”.  Actually, esptool.py
-can enter bootloader mode automatically (via RTS/DTR control lines), but
-unfortunately a timing interaction between the Windows CP2012 driver and the
-hardware means this doesn’t currently work on Windows.</p>
-</div>
-<div class="section" id="secondary-boot-loader-partition-table">
-<h3>Secondary Boot Loader / Partition Table<a class="headerlink" href="#secondary-boot-loader-partition-table" title="Permalink to this headline">¶</a></h3>
-<p>See:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p><a class="reference external" href="https://github.com/espressif/esp-idf/tree/master/components/bootloader">https://github.com/espressif/esp-idf/tree/master/components/bootloader</a></p></li>
-<li><p><a class="reference external" href="https://github.com/espressif/esp-idf/tree/master/components/partition_table">https://github.com/espressif/esp-idf/tree/master/components/partition_table</a> .</p></li>
-</ul>
-</div></blockquote>
-<p>The secondary boot loader by default programs a RTC watchdog timer.
-As NuttX doesn’t know the timer, it reboots every ~9 seconds. You can
-disable the timer by tweaking sdkconfig CONFIG_BOOTLOADER_WDT_ENABLE
-and rebuild the boot loader.</p>
-</div>
-<div class="section" id="running-from-iram-with-openocd">
-<h3>Running from IRAM with OpenOCD<a class="headerlink" href="#running-from-iram-with-openocd" title="Permalink to this headline">¶</a></h3>
-<p>Running from IRAM is a good debug option.  You should be able to load the
-ELF directly via JTAG in this case, and you may not need the bootloader.</p>
-<p>NuttX supports a configuration option, CONFIG_ESP32_DEVKITC_RUN_IRAM, that may be
-selected for execution from IRAM.  This option simply selects the correct
-linker script for IRAM execution.</p>
-</div>
-<div class="section" id="skipping-the-secondary-bootloader">
-<h3>Skipping the Secondary Bootloader<a class="headerlink" href="#skipping-the-secondary-bootloader" title="Permalink to this headline">¶</a></h3>
-<p>It is possible to skip the secondary bootloader and run out of IRAM using
-only the primary bootloader if your application of small enough (&lt; 128KiB code,
-&lt;180KiB data), then you can simplify initial bring-up by avoiding second stage
-bootloader. Your application will be loaded into IRAM using first stage
-bootloader present in ESP32 ROM. To achieve this, you need two things:</p>
-<blockquote>
-<div><ol class="arabic simple">
-<li><p>Have a linker script which places all code into IRAM and all data into
-IRAM/DRAM</p></li>
-<li><p>Use “esptool.py” utility to convert application .elf
-file into binary format which can be loaded by first stage bootloader.</p></li>
-</ol>
-</div></blockquote>
-<p>Again you would need to link the ELF file and convert it to binary format suitable
-for flashing into the board.  The command should to convert ELF file to binary
-image looks as follows:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>esptool.py --chip esp32 elf2image --flash_mode &quot;dio&quot; --flash_freq &quot;40m&quot; --flash_size &quot;2MB&quot; -o nuttx.bin nuttx
-</pre></div>
-</div>
-<p>To flash binary image to your development board, use the same esptool.py utility:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 write_flash -z --flash_mode dio --flash_freq 40m --flash_size 2MB 0x1000 nuttx.bin
-</pre></div>
-</div>
-<p>The argument before app.bin (0x1000) indicates the offset in flash where binary
-will be written. ROM bootloader expects to find an application (or second stage
-bootloader) image at offset 0x1000, so we are writing the binary there.</p>
-</div>
-<div class="section" id="sample-openocd-debug-steps">
-<h3>Sample OpenOCD Debug Steps<a class="headerlink" href="#sample-openocd-debug-steps" title="Permalink to this headline">¶</a></h3>
-<p>I did the initial bring-up using the IRAM configuration and OpenOCD.  Here
-is a synopsis of my debug steps:</p>
-<p>boards/xtensa/esp32/esp32-devkitc/configs/nsh with:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CONFIG_DEBUG_ASSERTIONS=y
-CONFIG_DEBUG_FEATURES=y
-CONFIG_DEBUG_SYMBOLS=y
-CONFIG_ESP32_DEVKITC_RUN_IRAM=y
-</pre></div>
-</div>
-<p>I also made this change configuration which will eliminate all attempts to
-re-configure serial. It will just use the serial settings as they were left
-by the bootloader:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CONFIG_SUPPRESS_UART_CONFIG=y
-</pre></div>
-</div>
-<p>Start OpenOCD:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ../openocde-esp32
-cp ../nuttx/boards/xtensa/esp32/esp32-devkitc/scripts/esp32.cfg .
-sudo ./src/openocd -s ./tcl/ -f tcl/interface/ftdi/olimex-arm-usb-ocd.cfg -f ./esp32.cfg
-</pre></div>
-</div>
-<p>Start GDB and load code:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ../nuttx
-xtensa-esp32-elf-gdb -ex &#39;target remote localhost:3333&#39; nuttx
-(gdb) load nuttx
-(gdb) mon reg pc [value report by load for entry point]
-(gdb) s
-</pre></div>
-</div>
-<p>Single stepping works fine for me as do breakpoints:</p>
-<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Breakpoint 1, up_timer_initialize () at chip/esp32_timerisr.c:172
-72 {
-(gdb) n
-esp32.cpu0: Target halted, pc=0x400835BF
-187 g_tick_divisor = divisor;
-(gdb) ...
-</pre></div>
-</div>
-</div>
-</div>
 <div class="section" id="using-qemu">
 <h2>Using QEMU<a class="headerlink" href="#using-qemu" title="Permalink to this headline">¶</a></h2>
 <p>First follow the instructions <a class="reference external" href="https://github.com/espressif/qemu/wiki">here</a> to build QEMU.
@@ -1382,7 +929,6 @@ save a pointer to a register state save area in the TCB.  This would
 add some complexity to signal handling and also to up_initialstate().
 But the performance improvement might be worth the effort.</p></li>
 <li><p>See SMP-related issues above</p></li>
-<li><p>See OpenOCD for the ESP32 above</p></li>
 </ol>
 </div>
 <div class="section" id="supported-boards">
diff --git a/content/docs/latest/searchindex.js b/content/docs/latest/searchindex.js
index ed049b5..1e93080 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character [...]
\ No newline at end of file
+Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character [...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index 9befa5b..5bca772 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -5,8 +5,8 @@
     <description></description>
     <link>/</link>
     <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Mon, 26 Jul 2021 00:08:32 +0000</pubDate>
-    <lastBuildDate>Mon, 26 Jul 2021 00:08:32 +0000</lastBuildDate>
+    <pubDate>Tue, 27 Jul 2021 00:07:54 +0000</pubDate>
+    <lastBuildDate>Tue, 27 Jul 2021 00:07:54 +0000</lastBuildDate>
     <generator>Jekyll v3.8.5</generator>
     
       <item>