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/nuttx-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new c27e45139 Publishing web: 9908cfdaeea2c4a523a0ce7bec4c19981b4dc146 
docs: d598f97746efc5179621b35729dad09f83b1ef57
c27e45139 is described below

commit c27e451394366d0b5693a14a07e7713af96d84a0
Author: Matteo Golin <[email protected]>
AuthorDate: Thu Oct 2 00:32:40 2025 +0000

    Publishing web: 9908cfdaeea2c4a523a0ce7bec4c19981b4dc146 docs: 
d598f97746efc5179621b35729dad09f83b1ef57
---
 content/docs/10.0.0/index.html                     |   2 +-
 content/docs/10.0.1/index.html                     |   2 +-
 content/docs/10.1.0/index.html                     |   2 +-
 content/docs/10.2.0/index.html                     |   2 +-
 content/docs/10.3.0/index.html                     |   2 +-
 content/docs/11.0.0/index.html                     |   2 +-
 content/docs/12.0.0/index.html                     |   2 +-
 content/docs/12.0.0/searchindex.js                 |   2 +-
 content/docs/12.1.0/index.html                     |   2 +-
 content/docs/12.1.0/searchindex.js                 |   2 +-
 content/docs/12.10.0/index.html                    |   2 +-
 content/docs/12.10.0/searchindex.js                |   2 +-
 content/docs/12.2.0/index.html                     |   2 +-
 content/docs/12.2.0/searchindex.js                 |   2 +-
 content/docs/12.2.1/index.html                     |   2 +-
 content/docs/12.2.1/searchindex.js                 |   2 +-
 content/docs/12.3.0/index.html                     |   2 +-
 content/docs/12.3.0/searchindex.js                 |   2 +-
 content/docs/12.4.0/index.html                     |   2 +-
 content/docs/12.4.0/searchindex.js                 |   2 +-
 content/docs/12.5.0/index.html                     |   2 +-
 content/docs/12.5.0/searchindex.js                 |   2 +-
 content/docs/12.5.1/index.html                     |   2 +-
 content/docs/12.5.1/searchindex.js                 |   2 +-
 content/docs/12.6.0/index.html                     |   2 +-
 content/docs/12.6.0/searchindex.js                 |   2 +-
 content/docs/12.7.0/index.html                     |   2 +-
 content/docs/12.7.0/searchindex.js                 |   2 +-
 content/docs/12.8.0/index.html                     |   2 +-
 content/docs/12.8.0/searchindex.js                 |   2 +-
 content/docs/12.9.0/index.html                     |   2 +-
 content/docs/12.9.0/searchindex.js                 |   2 +-
 .../esp32s2/boards/esp32s2-saola-1/index.rst.txt   |  41 +++++
 .../platforms/xtensa/esp32s2/index.rst.txt         | 161 ++++++++++++++++++
 .../esp32s3/boards/esp32s3-devkit/index.rst.txt    |  41 +++++
 .../platforms/xtensa/esp32s3/index.rst.txt         | 164 +++++++++++++++++++
 content/docs/latest/guides/fully_linked_elf.html   |   2 +-
 .../docs/latest/guides/partially_linked_elf.html   |   2 +-
 content/docs/latest/index.html                     |   2 +-
 content/docs/latest/objects.inv                    | Bin 163785 -> 164325 bytes
 .../esp32s2/boards/esp32s2-kaluga-1/index.html     |   1 +
 .../esp32s2/boards/esp32s2-saola-1/index.html      |  38 +++++
 .../latest/platforms/xtensa/esp32s2/index.html     | 180 ++++++++++++++++++++
 .../esp32s3/boards/esp32s3-8048S043/index.html     |   1 +
 .../esp32s3/boards/esp32s3-devkit/index.html       |  38 +++++
 .../xtensa/esp32s3/boards/esp32s3-eye/index.html   |   1 +
 .../esp32s3/boards/esp32s3-korvo-2/index.html      |   1 +
 .../esp32s3/boards/esp32s3-lcd-ev/index.html       |   1 +
 .../esp32s3/boards/esp32s3-lhcbit/index.html       |   1 +
 .../xtensa/esp32s3/boards/esp32s3-xiao/index.html  |   1 +
 .../esp32s3/boards/lckfb-szpi-esp32s3/index.html   |   1 +
 .../latest/platforms/xtensa/esp32s3/index.html     | 182 +++++++++++++++++++++
 content/docs/latest/searchindex.js                 |   2 +-
 content/feed.xml                                   |   4 +-
 54 files changed, 891 insertions(+), 38 deletions(-)

diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index 60b41b114..32dcd545a 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: 01 October 25 at 00:16</p>
+<p>Last Updated: 02 October 25 at 00:13</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 75f6e93fa..342f4a945 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -245,7 +245,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: 01 October 25 at 00:16</p>
+<p>Last Updated: 02 October 25 at 00:13</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 193834b14..b4ea86371 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -245,7 +245,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: 01 October 25 at 00:17</p>
+<p>Last Updated: 02 October 25 at 00:14</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.2.0/index.html b/content/docs/10.2.0/index.html
index edbc22d32..505204eea 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -246,7 +246,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: 01 October 25 at 00:17</p>
+<p>Last Updated: 02 October 25 at 00:14</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.3.0/index.html b/content/docs/10.3.0/index.html
index edbc22d32..505204eea 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -246,7 +246,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: 01 October 25 at 00:17</p>
+<p>Last Updated: 02 October 25 at 00:14</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/11.0.0/index.html b/content/docs/11.0.0/index.html
index edbc22d32..4bd766ad8 100644
--- a/content/docs/11.0.0/index.html
+++ b/content/docs/11.0.0/index.html
@@ -246,7 +246,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: 01 October 25 at 00:17</p>
+<p>Last Updated: 02 October 25 at 00:15</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/12.0.0/index.html b/content/docs/12.0.0/index.html
index 9fe48aa65..820d9281c 100644
--- a/content/docs/12.0.0/index.html
+++ b/content/docs/12.0.0/index.html
@@ -171,7 +171,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <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: 01 October 25 at 00:18</p>
+<p>Last Updated: 02 October 25 at 00:15</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.0.0/searchindex.js 
b/content/docs/12.0.0/searchindex.js
index e48442f09..fbf542402 100644
--- a/content/docs/12.0.0/searchindex.js
+++ b/content/docs/12.0.0/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/docs/12.1.0/index.html b/content/docs/12.1.0/index.html
index a1dd65e89..98adc602e 100644
--- a/content/docs/12.1.0/index.html
+++ b/content/docs/12.1.0/index.html
@@ -171,7 +171,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <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: 01 October 25 at 00:18</p>
+<p>Last Updated: 02 October 25 at 00:15</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.1.0/searchindex.js 
b/content/docs/12.1.0/searchindex.js
index 6b71d9e2b..510b34d7f 100644
--- a/content/docs/12.1.0/searchindex.js
+++ b/content/docs/12.1.0/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/docs/12.10.0/index.html b/content/docs/12.10.0/index.html
index 2a6181aa2..25378f1a0 100644
--- a/content/docs/12.10.0/index.html
+++ b/content/docs/12.10.0/index.html
@@ -183,7 +183,7 @@ 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: 01 October 25 at 00:30</p>
+<p>Last Updated: 02 October 25 at 00:28</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.10.0/searchindex.js 
b/content/docs/12.10.0/searchindex.js
index 6e64213ee..abac45fcb 100644
--- a/content/docs/12.10.0/searchindex.js
+++ b/content/docs/12.10.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", 
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example", 
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-nrf52", 
"_tags/ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", 
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example", 
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-nrf52", 
"_tags/ [...]
\ No newline at end of file
diff --git a/content/docs/12.2.0/index.html b/content/docs/12.2.0/index.html
index f59fc73c7..7c30255cb 100644
--- a/content/docs/12.2.0/index.html
+++ b/content/docs/12.2.0/index.html
@@ -172,7 +172,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></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: 01 October 25 at 00:18</p>
+<p>Last Updated: 02 October 25 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.2.0/searchindex.js 
b/content/docs/12.2.0/searchindex.js
index ede5cf5b2..b0ca84072 100644
--- a/content/docs/12.2.0/searchindex.js
+++ b/content/docs/12.2.0/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", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ 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", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.2.1/index.html b/content/docs/12.2.1/index.html
index 48ef035df..7c30255cb 100644
--- a/content/docs/12.2.1/index.html
+++ b/content/docs/12.2.1/index.html
@@ -172,7 +172,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></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: 01 October 25 at 00:19</p>
+<p>Last Updated: 02 October 25 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.2.1/searchindex.js 
b/content/docs/12.2.1/searchindex.js
index 06d2ecc29..c806eebe5 100644
--- a/content/docs/12.2.1/searchindex.js
+++ b/content/docs/12.2.1/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", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ 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", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.3.0/index.html b/content/docs/12.3.0/index.html
index 91457dba5..733bdbcba 100644
--- a/content/docs/12.3.0/index.html
+++ b/content/docs/12.3.0/index.html
@@ -172,7 +172,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></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: 01 October 25 at 00:19</p>
+<p>Last Updated: 02 October 25 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.3.0/searchindex.js 
b/content/docs/12.3.0/searchindex.js
index b50520513..829bd6452 100644
--- a/content/docs/12.3.0/searchindex.js
+++ b/content/docs/12.3.0/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", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ 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", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.4.0/index.html b/content/docs/12.4.0/index.html
index ffc8f1a99..0c11444fa 100644
--- a/content/docs/12.4.0/index.html
+++ b/content/docs/12.4.0/index.html
@@ -179,7 +179,7 @@ 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: 01 October 25 at 00:20</p>
+<p>Last Updated: 02 October 25 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.4.0/searchindex.js 
b/content/docs/12.4.0/searchindex.js
index bea7966a6..f622ec7b6 100644
--- a/content/docs/12.4.0/searchindex.js
+++ b/content/docs/12.4.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.0/index.html b/content/docs/12.5.0/index.html
index f5cd5bad0..5241948c9 100644
--- a/content/docs/12.5.0/index.html
+++ b/content/docs/12.5.0/index.html
@@ -179,7 +179,7 @@ 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: 01 October 25 at 00:21</p>
+<p>Last Updated: 02 October 25 at 00:19</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.5.0/searchindex.js 
b/content/docs/12.5.0/searchindex.js
index 37654167c..6c1e2ba0a 100644
--- a/content/docs/12.5.0/searchindex.js
+++ b/content/docs/12.5.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.1/index.html b/content/docs/12.5.1/index.html
index 515797676..42134d4d7 100644
--- a/content/docs/12.5.1/index.html
+++ b/content/docs/12.5.1/index.html
@@ -179,7 +179,7 @@ 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: 01 October 25 at 00:23</p>
+<p>Last Updated: 02 October 25 at 00:20</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.5.1/searchindex.js 
b/content/docs/12.5.1/searchindex.js
index a5e24ba6b..bfdeafcc3 100644
--- a/content/docs/12.5.1/searchindex.js
+++ b/content/docs/12.5.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.6.0/index.html b/content/docs/12.6.0/index.html
index deacb633c..9b3e3ccbc 100644
--- a/content/docs/12.6.0/index.html
+++ b/content/docs/12.6.0/index.html
@@ -180,7 +180,7 @@ 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: 01 October 25 at 00:24</p>
+<p>Last Updated: 02 October 25 at 00:21</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.6.0/searchindex.js 
b/content/docs/12.6.0/searchindex.js
index 48a6efe0d..5ccc050d9 100644
--- a/content/docs/12.6.0/searchindex.js
+++ b/content/docs/12.6.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.7.0/index.html b/content/docs/12.7.0/index.html
index d03e906a1..c77fb243c 100644
--- a/content/docs/12.7.0/index.html
+++ b/content/docs/12.7.0/index.html
@@ -179,7 +179,7 @@ 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: 01 October 25 at 00:25</p>
+<p>Last Updated: 02 October 25 at 00:23</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.7.0/searchindex.js 
b/content/docs/12.7.0/searchindex.js
index 704b68032..ebb10fbe1 100644
--- a/content/docs/12.7.0/searchindex.js
+++ b/content/docs/12.7.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.8.0/index.html b/content/docs/12.8.0/index.html
index 275a3839f..a7987b45d 100644
--- a/content/docs/12.8.0/index.html
+++ b/content/docs/12.8.0/index.html
@@ -179,7 +179,7 @@ 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: 01 October 25 at 00:27</p>
+<p>Last Updated: 02 October 25 at 00:24</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.8.0/searchindex.js 
b/content/docs/12.8.0/searchindex.js
index 32558fa16..5e10257b4 100644
--- a/content/docs/12.8.0/searchindex.js
+++ b/content/docs/12.8.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.9.0/index.html b/content/docs/12.9.0/index.html
index f74b86b76..bdee426b2 100644
--- a/content/docs/12.9.0/index.html
+++ b/content/docs/12.9.0/index.html
@@ -179,7 +179,7 @@ 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: 01 October 25 at 00:29</p>
+<p>Last Updated: 02 October 25 at 00:26</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.9.0/searchindex.js 
b/content/docs/12.9.0/searchindex.js
index 26acf4749..ffc7d43f4 100644
--- a/content/docs/12.9.0/searchindex.js
+++ b/content/docs/12.9.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/cyclictest/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/b [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/cyclictest/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/b [...]
\ No newline at end of file
diff --git 
a/content/docs/latest/_sources/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.rst.txt
 
b/content/docs/latest/_sources/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.rst.txt
index 15110fe53..0173dbe2e 100644
--- 
a/content/docs/latest/_sources/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.rst.txt
+++ 
b/content/docs/latest/_sources/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.rst.txt
@@ -621,6 +621,47 @@ the ``Device Drivers -> CAN Driver Support -> CAN loopback 
mode`` option and run
         SJW: 3
       ID:    1 DLC: 1
 
+ulp
+---
+
+This configuration enables the support for the ULP RISC-V core coprocessor.
+To get more information about LP Core please check :ref:`ULP LP Core 
Coprocessor docs. <esp32s2_ulp>`
+
+Configuration uses a pre-built binary in 
``Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin``
+which is a blink example for GPIO0. After flashing operation, GPIO0 pin will 
blink.
+
+Prebuild binary runs this code:
+
+.. code-block:: C
+
+   #include <stdio.h>
+   #include <stdint.h>
+   #include <stdbool.h>
+   #include "ulp_riscv.h"
+   #include "ulp_riscv_utils.h"
+   #include "ulp_riscv_gpio.h"
+
+   #define GPIO_PIN 0
+
+   #define nop() __asm__ __volatile__ ("nop")
+
+   bool gpio_level_previous = true;
+
+   int main (void)
+    {
+       while (1)
+           {
+           ulp_riscv_gpio_output_level(GPIO_PIN, gpio_level_previous);
+           gpio_level_previous = !gpio_level_previous;
+           for (int i = 0; i < 10000; i++)
+             {
+               nop();
+             }
+           }
+
+       return 0;
+    }
+
 watchdog
 --------
 
diff --git 
a/content/docs/latest/_sources/platforms/xtensa/esp32s2/index.rst.txt 
b/content/docs/latest/_sources/platforms/xtensa/esp32s2/index.rst.txt
index f0394902f..2b6e11af7 100644
--- a/content/docs/latest/_sources/platforms/xtensa/esp32s2/index.rst.txt
+++ b/content/docs/latest/_sources/platforms/xtensa/esp32s2/index.rst.txt
@@ -821,6 +821,167 @@ to ``Application image secondary slot``.
    and change usage mode to ``Release`` in `System Type --> Application Image 
Configuration --> Enable usage mode`.
    **After disabling UART Download Mode you will not be able to flash other 
images through UART.**
 
+.. _esp32s2_ulp:
+
+ULP RISC-V Coprocessor
+======================
+
+The ULP RISC-V core is a 32-bit coprocessor integrated into the ESP32-S2 SoC.
+It is designed to run independently of the main high-performance (HP) core and 
is capable of executing lightweight tasks
+such as GPIO polling, simple peripheral control and I/O interactions.
+
+This coprocessor benefits to offload simple tasks from HP core (e.g., GPIO 
polling , I2C operations, basic control logic) and
+frees the main CPU for higher-level processing
+
+For more information about ULP RISC-V Coprocessor `check here 
<https://docs.espressif.com/projects/esp-idf/en/stable/esp32s2/api-reference/system/ulp-risc-v.html>`__.
+
+Features of the ULP RISC-V Coprocessor
+--------------------------------------
+
+* Processor Architecture
+   - RV32IMC RISC-V core — Integer (I), Multiplication/Division (M), and 
Compressed (C) instructions
+   - Runs at 17.5 MHz
+* Memory
+   - Access to 8 KB of RTC slow memory (RTC_SLOW_MEM) memory region, and 
registers in RTC_CNTL, RTC_IO, and SARADC peripherals
+* Debugging
+   - Logging via bit-banged UART
+   - Shared memory for state inspection
+   - Panic or exception handlers can trigger wake-up or signal to main CPU if 
main CPU is in sleep
+* Peripheral support
+   - RTC domain peripherals (RTC GPIO, RTC I2C, ADC)
+
+Loading Binary into ULP RISC-V Coprocessor
+------------------------------------------
+
+There are two ways to load a binary into LP-Core:
+  - Using a prebuilt binary
+  - Using NuttX internal build system to build your own (bare-metal) 
application
+
+When using a prebuilt binary, the already compiled output for the ULP system 
whether built from NuttX
+or the ESP-IDF environment can be leveraged. However, whenever the ULP code 
needs to be modified, it must be rebuilt separately,
+and the resulting .bin file has to be integrated into NuttX. This workflow, 
while compatible, can become tedious.
+
+With NuttX internal build system, the ULP binary code can be built and flashed 
from a single location. It is more convenient but
+using build system has some dependencies on example side.
+
+Both methods requires `CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM` variable to set 
ULP RISC-V core and
+`CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH` variable to set the path to the ULP 
project or prebuilt binary file
+relative to NuttX root folder.
+These variables can be set using `make menuconfig` or `kconfig-tweak` commands.
+
+Here is an example for enabling ULP and using a prebuilt binary for ULP RISC-V 
core::
+
+    make distclean
+    ./tools/configure.sh esp32s2-saola-1:nsh
+    kconfig-tweak --set-val CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM 8176
+    kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
"Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin"
+    make olddefconfig
+    make -j
+
+Creating an ULP RISC-V Coprocessor Application
+----------------------------------------------
+
+To use NuttX's internal build system to compile the bare-metal ULP RISC-V 
Coprocessor binary, check the following instructions.
+
+First, create a folder for the ULP source and header files. This folder is 
just for ULP project and it is
+an independent project. Therefore, the NuttX example guide should not be 
followed, and no Makefile or similar
+build files should be added. Also folder location could be anywhere. To 
include ULP folder into build
+system don't forget to set `CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH` variable 
with path of the ULP project folder relative to
+NuttX root folder. Instructions for setting up can be found above.
+
+NuttX's internal functions or POSIX calls are not supported.
+
+Here is an example:
+
+- ULP UART Snippet:
+
+.. code-block:: C
+
+  #include "ulp_riscv.h"
+  #include "ulp_riscv_utils.h"
+  #include "ulp_riscv_print.h"
+  #include "ulp_riscv_uart_ulp_core.h"
+  #include "sdkconfig.h"
+
+  static ulp_riscv_uart_t s_print_uart;
+
+  int main (void)
+  {
+    ulp_riscv_uart_cfg_t cfg = {
+        .tx_pin = 0,
+    };
+    ulp_riscv_uart_init(&s_print_uart, &cfg);
+    ulp_riscv_print_install((putc_fn_t)ulp_riscv_uart_putc, &s_print_uart);
+
+    while(1)
+    {
+      ulp_riscv_print_str("Hello from the LP core!!\r\n");
+      ulp_riscv_delay_cycles(1000 * ULP_RISCV_CYCLES_PER_MS);
+    }
+
+    return 0;
+  }
+
+For more information about ULP RISC-V Coprocessor examples `check here 
<https://github.com/espressif/esp-idf/tree/master/examples/system/ulp/lp_core>`__.
+After these settings follow the same steps as for any other configuration to 
build NuttX. Build system checks ULP project path,
+adds every source and header file into project and builds it.
+
+To sum up, here is an complete example. `ulp_example/ulp (../ulp_example/ulp)` 
folder selected as example
+to create a subfolder for ULP but folder that includes ULP source code can be 
anywhere:
+
+- Tree view:
+
+.. code-block:: text
+
+   nuttxspace/
+   ├── nuttx/
+   └── apps/
+   └── ulp_example/
+       └── ulp/
+           └── ulp_main.c
+
+- Contents in ulp_main.c:
+
+.. code-block:: C
+
+   #include <stdio.h>
+   #include <stdint.h>
+   #include <stdbool.h>
+   #include "ulp_riscv.h"
+   #include "ulp_riscv_utils.h"
+   #include "ulp_riscv_gpio.h"
+
+   #define GPIO_PIN 0
+
+   #define nop() __asm__ __volatile__ ("nop")
+
+   bool gpio_level_previous = true;
+
+   int main (void)
+    {
+       while (1)
+           {
+           ulp_riscv_gpio_output_level(GPIO_PIN, gpio_level_previous);
+           gpio_level_previous = !gpio_level_previous;
+           for (int i = 0; i < 10000; i++)
+             {
+               nop();
+             }
+           }
+
+       return 0;
+    }
+
+- Command to build::
+
+    make distclean
+    ./tools/configure.sh esp32s2-saola-1:nsh
+    kconfig-tweak --set-val CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM 8176
+    kconfig-tweak -e CONFIG_DEV_GPIO
+    kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
"../ulp_example/ulp"
+    make olddefconfig
+    make -j
+
 _`Managing esptool on virtual environment`
 ==========================================
 
diff --git 
a/content/docs/latest/_sources/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.rst.txt
 
b/content/docs/latest/_sources/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.rst.txt
index fa7017011..4a6dd901b 100644
--- 
a/content/docs/latest/_sources/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.rst.txt
+++ 
b/content/docs/latest/_sources/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.rst.txt
@@ -1151,6 +1151,47 @@ the ``Device Drivers -> CAN Driver Support -> CAN 
loopback mode`` option and run
         SJW: 3
       ID:    1 DLC: 1
 
+ulp
+---
+
+This configuration enables the support for the ULP RISC-V core coprocessor.
+To get more information about LP Core please check :ref:`ULP LP Core 
Coprocessor docs. <esp32s3_ulp>`
+
+Configuration uses a pre-built binary in 
``Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin``
+which is a blink example for GPIO0. After flashing operation, GPIO0 pin will 
blink.
+
+Prebuild binary runs this code:
+
+.. code-block:: C
+
+   #include <stdio.h>
+   #include <stdint.h>
+   #include <stdbool.h>
+   #include "ulp_riscv.h"
+   #include "ulp_riscv_utils.h"
+   #include "ulp_riscv_gpio.h"
+
+   #define GPIO_PIN 0
+
+   #define nop() __asm__ __volatile__ ("nop")
+
+   bool gpio_level_previous = true;
+
+   int main (void)
+    {
+       while (1)
+           {
+           ulp_riscv_gpio_output_level(GPIO_PIN, gpio_level_previous);
+           gpio_level_previous = !gpio_level_previous;
+           for (int i = 0; i < 10000; i++)
+             {
+               nop();
+             }
+           }
+
+       return 0;
+    }
+
 usbnsh
 ------
 
diff --git 
a/content/docs/latest/_sources/platforms/xtensa/esp32s3/index.rst.txt 
b/content/docs/latest/_sources/platforms/xtensa/esp32s3/index.rst.txt
index 76b6be36e..8309bdd97 100644
--- a/content/docs/latest/_sources/platforms/xtensa/esp32s3/index.rst.txt
+++ b/content/docs/latest/_sources/platforms/xtensa/esp32s3/index.rst.txt
@@ -646,6 +646,170 @@ Set the attribute ``__attribute__ ((section 
(".ext_ram.bss")))`` to the variable
 
 This is particularly useful when the internal RAM is not enough to hold all 
the data.
 
+.. _esp32s3_ulp:
+
+ULP RISC-V Coprocessor
+======================
+
+The ULP RISC-V core is a 32-bit coprocessor integrated into the ESP32-S3 SoC.
+It is designed to run independently of the main high-performance (HP) core and 
is capable of executing lightweight tasks
+such as GPIO polling, simple peripheral control and I/O interactions.
+
+This coprocessor benefits to offload simple tasks from HP core (e.g., GPIO 
polling , I2C operations, basic control logic) and
+frees the main CPU for higher-level processing
+
+For more information about ULP RISC-V Coprocessor `check here 
<https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/system/ulp-risc-v.html>`__.
+
+Features of the ULP RISC-V Coprocessor
+--------------------------------------
+
+* Processor Architecture
+   - RV32IMC RISC-V core — Integer (I), Multiplication/Division (M), and 
Compressed (C) instructions
+   - Runs at 17.5 MHz
+* Memory
+   - Access to 8 KB of RTC slow memory (RTC_SLOW_MEM) memory region, and 
registers in RTC_CNTL, RTC_IO, and SARADC peripherals
+* Debugging
+   - Logging via bit-banged UART
+   - Shared memory for state inspection
+   - Panic or exception handlers can trigger wake-up or signal to main CPU if 
main CPU is in sleep
+* Peripheral support
+   - RTC domain peripherals (RTC GPIO, RTC I2C, ADC)
+
+Loading Binary into ULP RISC-V Coprocessor
+------------------------------------------
+
+There are two ways to load a binary into LP-Core:
+  - Using a prebuilt binary
+  - Using NuttX internal build system to build your own (bare-metal) 
application
+
+When using a prebuilt binary, the already compiled output for the ULP system 
whether built from NuttX
+or the ESP-IDF environment can be leveraged. However, whenever the ULP code 
needs to be modified, it must be rebuilt separately,
+and the resulting .bin file has to be integrated into NuttX. This workflow, 
while compatible, can become tedious.
+
+With NuttX internal build system, the ULP binary code can be built and flashed 
from a single location. It is more convenient but
+using build system has some dependencies on example side.
+
+Both methods requires `CONFIG_ESP32S3_ULP_COPROC_ENABLED` and 
`CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM` variables to set ULP RISC-V core and
+`CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH` variable to set the path to the ULP 
project or prebuilt binary file
+relative to NuttX root folder.
+These variables can be set using `make menuconfig` or `kconfig-tweak` commands.
+
+Here is an example for enabling ULP and using a prebuilt binary for ULP RISC-V 
core::
+
+    make distclean
+    ./tools/configure.sh esp32s3-devkit:nsh
+    kconfig-tweak -e CONFIG_ESP32S3_ULP_COPROC_ENABLED
+    kconfig-tweak --set-val CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM 8176
+    kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
"Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin"
+    make olddefconfig
+    make -j
+
+Creating an ULP RISC-V Coprocessor Application
+----------------------------------------------
+
+To use NuttX's internal build system to compile the bare-metal ULP RISC-V 
Coprocessor binary, check the following instructions.
+
+First, create a folder for the ULP source and header files. This folder is 
just for ULP project and it is
+an independent project. Therefore, the NuttX example guide should not be 
followed, and no Makefile or similar
+build files should be added. Also folder location could be anywhere. To 
include ULP folder into build
+system don't forget to set `CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH` variable 
with path of the ULP project folder relative to
+NuttX root folder. Instructions for setting up can be found above.
+
+NuttX's internal functions or POSIX calls are not supported.
+
+Here is an example:
+
+- ULP UART Snippet:
+
+.. code-block:: C
+
+  #include "ulp_riscv.h"
+  #include "ulp_riscv_utils.h"
+  #include "ulp_riscv_print.h"
+  #include "ulp_riscv_uart_ulp_core.h"
+  #include "sdkconfig.h"
+
+  static ulp_riscv_uart_t s_print_uart;
+
+  int main (void)
+  {
+    ulp_riscv_uart_cfg_t cfg = {
+        .tx_pin = 0,
+    };
+    ulp_riscv_uart_init(&s_print_uart, &cfg);
+    ulp_riscv_print_install((putc_fn_t)ulp_riscv_uart_putc, &s_print_uart);
+
+    while(1)
+    {
+      ulp_riscv_print_str("Hello from the LP core!!\r\n");
+      ulp_riscv_delay_cycles(1000 * ULP_RISCV_CYCLES_PER_MS);
+    }
+
+    return 0;
+  }
+
+For more information about ULP RISC-V Coprocessor examples `check here 
<https://github.com/espressif/esp-idf/tree/master/examples/system/ulp/lp_core>`__.
+After these settings follow the same steps as for any other configuration to 
build NuttX. Build system checks ULP project path,
+adds every source and header file into project and builds it.
+
+To sum up, here is an complete example. `ulp_example/ulp (../ulp_example/ulp)` 
folder selected as example
+to create a subfolder for ULP but folder that includes ULP source code can be 
anywhere:
+
+- Tree view:
+
+.. code-block:: text
+
+   nuttxspace/
+   ├── nuttx/
+   └── apps/
+   └── ulp_example/
+       └── ulp/
+           └── ulp_main.c
+
+- Contents in ulp_main.c:
+
+.. code-block:: C
+
+   #include <stdio.h>
+   #include <stdint.h>
+   #include <stdbool.h>
+   #include "ulp_riscv.h"
+   #include "ulp_riscv_utils.h"
+   #include "ulp_riscv_gpio.h"
+
+   #define GPIO_PIN 0
+
+   #define nop() __asm__ __volatile__ ("nop")
+
+   bool gpio_level_previous = true;
+
+   int main (void)
+    {
+       while (1)
+           {
+           ulp_riscv_gpio_output_level(GPIO_PIN, gpio_level_previous);
+           gpio_level_previous = !gpio_level_previous;
+           for (int i = 0; i < 10000; i++)
+             {
+               nop();
+             }
+           }
+
+       return 0;
+    }
+
+- Command to build::
+
+    make distclean
+    ./tools/configure.sh esp32s3-devkitc:nsh
+    kconfig-tweak -e CONFIG_ESP32S3_ULP_COPROC_ENABLED
+    kconfig-tweak --set-val CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM 8176
+    kconfig-tweak -e CONFIG_DEV_GPIO
+    kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
"../ulp_example/ulp"
+    make olddefconfig
+    make -j
+
+
 _`Managing esptool on virtual environment`
 ==========================================
 
diff --git a/content/docs/latest/guides/fully_linked_elf.html 
b/content/docs/latest/guides/fully_linked_elf.html
index c4169adb5..58fcad127 100644
--- a/content/docs/latest/guides/fully_linked_elf.html
+++ b/content/docs/latest/guides/fully_linked_elf.html
@@ -475,7 +475,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="e024079d-fdc9-429f-b228-ab4c8a6b8bb9" 
name="e024079d-fdc9-429f-b228-ab4c8a6b8bb9" type="checkbox"><label 
class="sphinx_collapse__label" for="e024079d-fdc9-429f-b228-ab4c8a6b8bb9"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="96ed738b-0db8-42fa-b619-ffce593032cb" 
name="96ed738b-0db8-42fa-b619-ffce593032cb" type="checkbox"><label 
class="sphinx_collapse__label" for="96ed738b-0db8-42fa-b619-ffce593032cb"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/latest/guides/partially_linked_elf.html 
b/content/docs/latest/guides/partially_linked_elf.html
index b15f7ea31..5226df1d6 100644
--- a/content/docs/latest/guides/partially_linked_elf.html
+++ b/content/docs/latest/guides/partially_linked_elf.html
@@ -501,7 +501,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="8904b9ca-a4ad-49fc-aa2a-ad0e993cb3f8" 
name="8904b9ca-a4ad-49fc-aa2a-ad0e993cb3f8" type="checkbox"><label 
class="sphinx_collapse__label" for="8904b9ca-a4ad-49fc-aa2a-ad0e993cb3f8"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="425abb5d-46b1-4b96-b6a8-3c06d7c95f79" 
name="425abb5d-46b1-4b96-b6a8-3c06d7c95f79" type="checkbox"><label 
class="sphinx_collapse__label" for="425abb5d-46b1-4b96-b6a8-3c06d7c95f79"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index a4e0f9a42..113b8f33b 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -185,7 +185,7 @@ 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: 01 October 25 at 00:32</p>
+<p>Last Updated: 02 October 25 at 00:30</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><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 62976efcb..1ee7c66a9 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/esp32s2/boards/esp32s2-kaluga-1/index.html
 
b/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-kaluga-1/index.html
index ff283bca9..bb07ba82b 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-kaluga-1/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-kaluga-1/index.html
@@ -161,6 +161,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi-softap">Wi-Fi SoftAP</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5 current"><a class="current reference internal" 
href="#">ESP32-S2-Kaluga-1 Kit v1.3</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.html
 
b/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.html
index 06c701366..979d31f5a 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s2/boards/esp32s2-saola-1/index.html
@@ -161,6 +161,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi-softap">Wi-Fi SoftAP</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s2-kaluga-1/index.html">ESP32-S2-Kaluga-1 Kit v1.3</a></li>
@@ -866,6 +867,43 @@ Bit timing:
 </pre></div>
 </div>
 </section>
+<section id="ulp">
+<h3>ulp<a class="headerlink" href="#ulp" title="Permalink to this 
heading"></a></h3>
+<p>This configuration enables the support for the ULP RISC-V core coprocessor.
+To get more information about LP Core please check <a class="reference 
internal" href="../../index.html#esp32s2-ulp"><span class="std std-ref">ULP LP 
Core Coprocessor docs.</span></a></p>
+<p>Configuration uses a pre-built binary in <code class="docutils literal 
notranslate"><span 
class="pre">Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin</span></code>
+which is a blink example for GPIO0. After flashing operation, GPIO0 pin will 
blink.</p>
+<p>Prebuild binary runs this code:</p>
+<div class="highlight-C notranslate"><div 
class="highlight"><pre><span></span><span class="cp">#include</span><span 
class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdint.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdbool.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_utils.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_gpio.h&quot;</span>
+
+<span class="cp">#define GPIO_PIN 0</span>
+
+<span class="cp">#define nop() __asm__ __volatile__ (&quot;nop&quot;)</span>
+
+<span class="kt">bool</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="nb">true</span><span 
class="p">;</span>
+
+<span class="kt">int</span><span class="w"> </span><span 
class="nf">main</span><span class="w"> </span><span class="p">(</span><span 
class="kt">void</span><span class="p">)</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w">    </span><span class="k">while</span><span class="w"> 
</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="w">        </span><span class="p">{</span>
+<span class="w">        </span><span 
class="n">ulp_riscv_gpio_output_level</span><span class="p">(</span><span 
class="n">GPIO_PIN</span><span class="p">,</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="p">);</span>
+<span class="w">        </span><span class="n">gpio_level_previous</span><span 
class="w"> </span><span class="o">=</span><span class="w"> </span><span 
class="o">!</span><span class="n">gpio_level_previous</span><span 
class="p">;</span>
+<span class="w">        </span><span class="k">for</span><span class="w"> 
</span><span class="p">(</span><span class="kt">int</span><span class="w"> 
</span><span class="n">i</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="mi">0</span><span 
class="p">;</span><span class="w"> </span><span class="n">i</span><span 
class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span 
class="mi">10000</span><span class="p">;</span><span class="w" [...]
+<span class="w">          </span><span class="p">{</span>
+<span class="w">            </span><span class="n">nop</span><span 
class="p">();</span>
+<span class="w">          </span><span class="p">}</span>
+<span class="w">        </span><span class="p">}</span>
+
+<span class="w">    </span><span class="k">return</span><span class="w"> 
</span><span class="mi">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+</pre></div>
+</div>
+</section>
 <section id="watchdog">
 <h3>watchdog<a class="headerlink" href="#watchdog" title="Permalink to this 
heading"></a></h3>
 <p>This config test the watchdog timers. It includes the 2 MWDTs,
diff --git a/content/docs/latest/platforms/xtensa/esp32s2/index.html 
b/content/docs/latest/platforms/xtensa/esp32s2/index.html
index f993c4670..0b7ad0f3a 100644
--- a/content/docs/latest/platforms/xtensa/esp32s2/index.html
+++ b/content/docs/latest/platforms/xtensa/esp32s2/index.html
@@ -187,6 +187,12 @@
 <li class="toctree-l5"><a class="reference internal" 
href="#secure-boot-and-flash-encryption">Secure Boot and Flash 
Encryption</a></li>
 </ul>
 </li>
+<li class="toctree-l4"><a class="reference internal" 
href="#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a><ul>
+<li class="toctree-l5"><a class="reference internal" 
href="#features-of-the-ulp-risc-v-coprocessor">Features of the ULP RISC-V 
Coprocessor</a></li>
+<li class="toctree-l5"><a class="reference internal" 
href="#loading-binary-into-ulp-risc-v-coprocessor">Loading Binary into ULP 
RISC-V Coprocessor</a></li>
+<li class="toctree-l5"><a class="reference internal" 
href="#creating-an-ulp-risc-v-coprocessor-application">Creating an ULP RISC-V 
Coprocessor Application</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="#id1">Managing 
esptool on virtual environment</a><ul>
 <li class="toctree-l5"><a class="reference internal" 
href="#using-pipx-recommended">Using pipx (recommended)</a></li>
 <li class="toctree-l5"><a class="reference internal" 
href="#using-venv-alternative">Using venv (alternative)</a></li>
@@ -1444,6 +1450,180 @@ and change usage mode to <code class="docutils literal 
notranslate"><span class=
 </section>
 </section>
 </section>
+<section id="ulp-risc-v-coprocessor">
+<span id="esp32s2-ulp"></span><h2>ULP RISC-V Coprocessor<a class="headerlink" 
href="#ulp-risc-v-coprocessor" title="Permalink to this heading"></a></h2>
+<p>The ULP RISC-V core is a 32-bit coprocessor integrated into the ESP32-S2 
SoC.
+It is designed to run independently of the main high-performance (HP) core and 
is capable of executing lightweight tasks
+such as GPIO polling, simple peripheral control and I/O interactions.</p>
+<p>This coprocessor benefits to offload simple tasks from HP core (e.g., GPIO 
polling , I2C operations, basic control logic) and
+frees the main CPU for higher-level processing</p>
+<p>For more information about ULP RISC-V Coprocessor <a class="reference 
external" 
href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32s2/api-reference/system/ulp-risc-v.html";>check
 here</a>.</p>
+<section id="features-of-the-ulp-risc-v-coprocessor">
+<h3>Features of the ULP RISC-V Coprocessor<a class="headerlink" 
href="#features-of-the-ulp-risc-v-coprocessor" title="Permalink to this 
heading"></a></h3>
+<ul class="simple">
+<li><dl class="simple">
+<dt>Processor Architecture</dt><dd><ul>
+<li><p>RV32IMC RISC-V core — Integer (I), Multiplication/Division (M), and 
Compressed (C) instructions</p></li>
+<li><p>Runs at 17.5 MHz</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Memory</dt><dd><ul>
+<li><p>Access to 8 KB of RTC slow memory (RTC_SLOW_MEM) memory region, and 
registers in RTC_CNTL, RTC_IO, and SARADC peripherals</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Debugging</dt><dd><ul>
+<li><p>Logging via bit-banged UART</p></li>
+<li><p>Shared memory for state inspection</p></li>
+<li><p>Panic or exception handlers can trigger wake-up or signal to main CPU 
if main CPU is in sleep</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Peripheral support</dt><dd><ul>
+<li><p>RTC domain peripherals (RTC GPIO, RTC I2C, ADC)</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+</ul>
+</section>
+<section id="loading-binary-into-ulp-risc-v-coprocessor">
+<h3>Loading Binary into ULP RISC-V Coprocessor<a class="headerlink" 
href="#loading-binary-into-ulp-risc-v-coprocessor" title="Permalink to this 
heading"></a></h3>
+<dl class="simple">
+<dt>There are two ways to load a binary into LP-Core:</dt><dd><ul 
class="simple">
+<li><p>Using a prebuilt binary</p></li>
+<li><p>Using NuttX internal build system to build your own (bare-metal) 
application</p></li>
+</ul>
+</dd>
+</dl>
+<p>When using a prebuilt binary, the already compiled output for the ULP 
system whether built from NuttX
+or the ESP-IDF environment can be leveraged. However, whenever the ULP code 
needs to be modified, it must be rebuilt separately,
+and the resulting .bin file has to be integrated into NuttX. This workflow, 
while compatible, can become tedious.</p>
+<p>With NuttX internal build system, the ULP binary code can be built and 
flashed from a single location. It is more convenient but
+using build system has some dependencies on example side.</p>
+<p>Both methods requires <cite>CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM</cite> 
variable to set ULP RISC-V core and
+<cite>CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH</cite> variable to set the path 
to the ULP project or prebuilt binary file
+relative to NuttX root folder.
+These variables can be set using <cite>make menuconfig</cite> or 
<cite>kconfig-tweak</cite> commands.</p>
+<p>Here is an example for enabling ULP and using a prebuilt binary for ULP 
RISC-V core:</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>make distclean
+./tools/configure.sh esp32s2-saola-1:nsh
+kconfig-tweak --set-val CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM 8176
+kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
&quot;Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin&quot;
+make olddefconfig
+make -j
+</pre></div>
+</div>
+</section>
+<section id="creating-an-ulp-risc-v-coprocessor-application">
+<h3>Creating an ULP RISC-V Coprocessor Application<a class="headerlink" 
href="#creating-an-ulp-risc-v-coprocessor-application" title="Permalink to this 
heading"></a></h3>
+<p>To use NuttX’s internal build system to compile the bare-metal ULP RISC-V 
Coprocessor binary, check the following instructions.</p>
+<p>First, create a folder for the ULP source and header files. This folder is 
just for ULP project and it is
+an independent project. Therefore, the NuttX example guide should not be 
followed, and no Makefile or similar
+build files should be added. Also folder location could be anywhere. To 
include ULP folder into build
+system don’t forget to set 
<cite>CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH</cite> variable with path of the 
ULP project folder relative to
+NuttX root folder. Instructions for setting up can be found above.</p>
+<p>NuttX’s internal functions or POSIX calls are not supported.</p>
+<p>Here is an example:</p>
+<ul class="simple">
+<li><p>ULP UART Snippet:</p></li>
+</ul>
+<div class="highlight-C notranslate"><div 
class="highlight"><pre><span></span><span class="cp">#include</span><span 
class="w"> </span><span class="cpf">&quot;ulp_riscv.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_utils.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_print.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_uart_ulp_core.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;sdkconfig.h&quot;</span>
+
+<span class="k">static</span><span class="w"> </span><span 
class="n">ulp_riscv_uart_t</span><span class="w"> </span><span 
class="n">s_print_uart</span><span class="p">;</span>
+
+<span class="kt">int</span><span class="w"> </span><span 
class="nf">main</span><span class="w"> </span><span class="p">(</span><span 
class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+<span class="w">  </span><span class="n">ulp_riscv_uart_cfg_t</span><span 
class="w"> </span><span class="n">cfg</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w">      </span><span class="p">.</span><span 
class="n">tx_pin</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="mi">0</span><span class="p">,</span>
+<span class="w">  </span><span class="p">};</span>
+<span class="w">  </span><span class="n">ulp_riscv_uart_init</span><span 
class="p">(</span><span class="o">&amp;</span><span 
class="n">s_print_uart</span><span class="p">,</span><span class="w"> 
</span><span class="o">&amp;</span><span class="n">cfg</span><span 
class="p">);</span>
+<span class="w">  </span><span class="n">ulp_riscv_print_install</span><span 
class="p">((</span><span class="n">putc_fn_t</span><span 
class="p">)</span><span class="n">ulp_riscv_uart_putc</span><span 
class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span 
class="n">s_print_uart</span><span class="p">);</span>
+
+<span class="w">  </span><span class="k">while</span><span 
class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="w">  </span><span class="p">{</span>
+<span class="w">    </span><span class="n">ulp_riscv_print_str</span><span 
class="p">(</span><span class="s">&quot;Hello from the LP core!!</span><span 
class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="w">    </span><span class="n">ulp_riscv_delay_cycles</span><span 
class="p">(</span><span class="mi">1000</span><span class="w"> </span><span 
class="o">*</span><span class="w"> </span><span 
class="n">ULP_RISCV_CYCLES_PER_MS</span><span class="p">);</span>
+<span class="w">  </span><span class="p">}</span>
+
+<span class="w">  </span><span class="k">return</span><span class="w"> 
</span><span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>For more information about ULP RISC-V Coprocessor examples <a 
class="reference external" 
href="https://github.com/espressif/esp-idf/tree/master/examples/system/ulp/lp_core";>check
 here</a>.
+After these settings follow the same steps as for any other configuration to 
build NuttX. Build system checks ULP project path,
+adds every source and header file into project and builds it.</p>
+<p>To sum up, here is an complete example. <cite>ulp_example/ulp 
(../ulp_example/ulp)</cite> folder selected as example
+to create a subfolder for ULP but folder that includes ULP source code can be 
anywhere:</p>
+<ul class="simple">
+<li><p>Tree view:</p></li>
+</ul>
+<div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>nuttxspace/
+├── nuttx/
+└── apps/
+└── ulp_example/
+    └── ulp/
+        └── ulp_main.c
+</pre></div>
+</div>
+<ul class="simple">
+<li><p>Contents in ulp_main.c:</p></li>
+</ul>
+<div class="highlight-C notranslate"><div 
class="highlight"><pre><span></span><span class="cp">#include</span><span 
class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdint.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdbool.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_utils.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_gpio.h&quot;</span>
+
+<span class="cp">#define GPIO_PIN 0</span>
+
+<span class="cp">#define nop() __asm__ __volatile__ (&quot;nop&quot;)</span>
+
+<span class="kt">bool</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="nb">true</span><span 
class="p">;</span>
+
+<span class="kt">int</span><span class="w"> </span><span 
class="nf">main</span><span class="w"> </span><span class="p">(</span><span 
class="kt">void</span><span class="p">)</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w">    </span><span class="k">while</span><span class="w"> 
</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="w">        </span><span class="p">{</span>
+<span class="w">        </span><span 
class="n">ulp_riscv_gpio_output_level</span><span class="p">(</span><span 
class="n">GPIO_PIN</span><span class="p">,</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="p">);</span>
+<span class="w">        </span><span class="n">gpio_level_previous</span><span 
class="w"> </span><span class="o">=</span><span class="w"> </span><span 
class="o">!</span><span class="n">gpio_level_previous</span><span 
class="p">;</span>
+<span class="w">        </span><span class="k">for</span><span class="w"> 
</span><span class="p">(</span><span class="kt">int</span><span class="w"> 
</span><span class="n">i</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="mi">0</span><span 
class="p">;</span><span class="w"> </span><span class="n">i</span><span 
class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span 
class="mi">10000</span><span class="p">;</span><span class="w" [...]
+<span class="w">          </span><span class="p">{</span>
+<span class="w">            </span><span class="n">nop</span><span 
class="p">();</span>
+<span class="w">          </span><span class="p">}</span>
+<span class="w">        </span><span class="p">}</span>
+
+<span class="w">    </span><span class="k">return</span><span class="w"> 
</span><span class="mi">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+</pre></div>
+</div>
+<ul>
+<li><p>Command to build:</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>make distclean
+./tools/configure.sh esp32s2-saola-1:nsh
+kconfig-tweak --set-val CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM 8176
+kconfig-tweak -e CONFIG_DEV_GPIO
+kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
&quot;../ulp_example/ulp&quot;
+make olddefconfig
+make -j
+</pre></div>
+</div>
+</li>
+</ul>
+</section>
+</section>
 <section id="id1">
 <h2><span class="target" id="managing-esptool-on-virtual-environment">Managing 
esptool on virtual environment</span><a class="headerlink" href="#id1" 
title="Permalink to this heading"></a></h2>
 <p>This section describes how to install <code class="docutils literal 
notranslate"><span class="pre">esptool</span></code>, <code class="docutils 
literal notranslate"><span class="pre">imgtool</span></code> or any other 
Python packages in a
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-8048S043/index.html
 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-8048S043/index.html
index f510d75a0..586757eb9 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-8048S043/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-8048S043/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5 current"><a class="current reference internal" 
href="#">ESP32S3-8048S043</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.html 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.html
index baa35f5ab..1de4b627a 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
@@ -1393,6 +1394,43 @@ Bit timing:
 </pre></div>
 </div>
 </section>
+<section id="ulp">
+<h3>ulp<a class="headerlink" href="#ulp" title="Permalink to this 
heading"></a></h3>
+<p>This configuration enables the support for the ULP RISC-V core coprocessor.
+To get more information about LP Core please check <a class="reference 
internal" href="../../index.html#esp32s3-ulp"><span class="std std-ref">ULP LP 
Core Coprocessor docs.</span></a></p>
+<p>Configuration uses a pre-built binary in <code class="docutils literal 
notranslate"><span 
class="pre">Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin</span></code>
+which is a blink example for GPIO0. After flashing operation, GPIO0 pin will 
blink.</p>
+<p>Prebuild binary runs this code:</p>
+<div class="highlight-C notranslate"><div 
class="highlight"><pre><span></span><span class="cp">#include</span><span 
class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdint.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdbool.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_utils.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_gpio.h&quot;</span>
+
+<span class="cp">#define GPIO_PIN 0</span>
+
+<span class="cp">#define nop() __asm__ __volatile__ (&quot;nop&quot;)</span>
+
+<span class="kt">bool</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="nb">true</span><span 
class="p">;</span>
+
+<span class="kt">int</span><span class="w"> </span><span 
class="nf">main</span><span class="w"> </span><span class="p">(</span><span 
class="kt">void</span><span class="p">)</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w">    </span><span class="k">while</span><span class="w"> 
</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="w">        </span><span class="p">{</span>
+<span class="w">        </span><span 
class="n">ulp_riscv_gpio_output_level</span><span class="p">(</span><span 
class="n">GPIO_PIN</span><span class="p">,</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="p">);</span>
+<span class="w">        </span><span class="n">gpio_level_previous</span><span 
class="w"> </span><span class="o">=</span><span class="w"> </span><span 
class="o">!</span><span class="n">gpio_level_previous</span><span 
class="p">;</span>
+<span class="w">        </span><span class="k">for</span><span class="w"> 
</span><span class="p">(</span><span class="kt">int</span><span class="w"> 
</span><span class="n">i</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="mi">0</span><span 
class="p">;</span><span class="w"> </span><span class="n">i</span><span 
class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span 
class="mi">10000</span><span class="p">;</span><span class="w" [...]
+<span class="w">          </span><span class="p">{</span>
+<span class="w">            </span><span class="n">nop</span><span 
class="p">();</span>
+<span class="w">          </span><span class="p">}</span>
+<span class="w">        </span><span class="p">}</span>
+
+<span class="w">    </span><span class="k">return</span><span class="w"> 
</span><span class="mi">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+</pre></div>
+</div>
+</section>
 <section id="usbnsh">
 <h3>usbnsh<a class="headerlink" href="#usbnsh" title="Permalink to this 
heading"></a></h3>
 <p>Basic NuttShell configuration console enabled over USB Device (USB 
CDC/ACM).</p>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-eye/index.html 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-eye/index.html
index 2f32b36dd..b5251ac64 100644
--- a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-eye/index.html
+++ b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-eye/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-korvo-2/index.html
 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-korvo-2/index.html
index 011c3e63e..20b4163f8 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-korvo-2/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-korvo-2/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lcd-ev/index.html 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lcd-ev/index.html
index e16b07160..8b7431478 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lcd-ev/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lcd-ev/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lhcbit/index.html 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lhcbit/index.html
index 9351b21d7..6b639a0fb 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lhcbit/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-lhcbit/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-xiao/index.html 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-xiao/index.html
index 95a8596bf..440677fc6 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-xiao/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/esp32s3-xiao/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
diff --git 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/lckfb-szpi-esp32s3/index.html
 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/lckfb-szpi-esp32s3/index.html
index bb3a50b05..85cd0949a 100644
--- 
a/content/docs/latest/platforms/xtensa/esp32s3/boards/lckfb-szpi-esp32s3/index.html
+++ 
b/content/docs/latest/platforms/xtensa/esp32s3/boards/lckfb-szpi-esp32s3/index.html
@@ -158,6 +158,7 @@
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#mcuboot-and-ota-update">MCUBoot and OTA Update</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#wi-fi">Wi-Fi</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#power-management">Power Management</a></li>
+<li class="toctree-l4"><a class="reference internal" 
href="../../index.html#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="../../index.html#id1">Managing esptool on virtual environment</a></li>
 <li class="toctree-l4 current"><a class="reference internal" 
href="../../index.html#supported-boards">Supported Boards</a><ul 
class="current">
 <li class="toctree-l5"><a class="reference internal" 
href="../esp32s3-8048S043/index.html">ESP32S3-8048S043</a></li>
diff --git a/content/docs/latest/platforms/xtensa/esp32s3/index.html 
b/content/docs/latest/platforms/xtensa/esp32s3/index.html
index fb11dd784..626ed5c77 100644
--- a/content/docs/latest/platforms/xtensa/esp32s3/index.html
+++ b/content/docs/latest/platforms/xtensa/esp32s3/index.html
@@ -187,6 +187,12 @@
 <li class="toctree-l5"><a class="reference internal" 
href="#psram">PSRAM</a></li>
 </ul>
 </li>
+<li class="toctree-l4"><a class="reference internal" 
href="#ulp-risc-v-coprocessor">ULP RISC-V Coprocessor</a><ul>
+<li class="toctree-l5"><a class="reference internal" 
href="#features-of-the-ulp-risc-v-coprocessor">Features of the ULP RISC-V 
Coprocessor</a></li>
+<li class="toctree-l5"><a class="reference internal" 
href="#loading-binary-into-ulp-risc-v-coprocessor">Loading Binary into ULP 
RISC-V Coprocessor</a></li>
+<li class="toctree-l5"><a class="reference internal" 
href="#creating-an-ulp-risc-v-coprocessor-application">Creating an ULP RISC-V 
Coprocessor Application</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="#id1">Managing 
esptool on virtual environment</a><ul>
 <li class="toctree-l5"><a class="reference internal" 
href="#using-pipx-recommended">Using pipx (recommended)</a></li>
 <li class="toctree-l5"><a class="reference internal" 
href="#using-venv-alternative">Using venv (alternative)</a></li>
@@ -1011,6 +1017,182 @@ Set the attribute <code class="docutils literal 
notranslate"><span class="pre">_
 </section>
 </section>
 </section>
+<section id="ulp-risc-v-coprocessor">
+<span id="esp32s3-ulp"></span><h2>ULP RISC-V Coprocessor<a class="headerlink" 
href="#ulp-risc-v-coprocessor" title="Permalink to this heading"></a></h2>
+<p>The ULP RISC-V core is a 32-bit coprocessor integrated into the ESP32-S3 
SoC.
+It is designed to run independently of the main high-performance (HP) core and 
is capable of executing lightweight tasks
+such as GPIO polling, simple peripheral control and I/O interactions.</p>
+<p>This coprocessor benefits to offload simple tasks from HP core (e.g., GPIO 
polling , I2C operations, basic control logic) and
+frees the main CPU for higher-level processing</p>
+<p>For more information about ULP RISC-V Coprocessor <a class="reference 
external" 
href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/system/ulp-risc-v.html";>check
 here</a>.</p>
+<section id="features-of-the-ulp-risc-v-coprocessor">
+<h3>Features of the ULP RISC-V Coprocessor<a class="headerlink" 
href="#features-of-the-ulp-risc-v-coprocessor" title="Permalink to this 
heading"></a></h3>
+<ul class="simple">
+<li><dl class="simple">
+<dt>Processor Architecture</dt><dd><ul>
+<li><p>RV32IMC RISC-V core — Integer (I), Multiplication/Division (M), and 
Compressed (C) instructions</p></li>
+<li><p>Runs at 17.5 MHz</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Memory</dt><dd><ul>
+<li><p>Access to 8 KB of RTC slow memory (RTC_SLOW_MEM) memory region, and 
registers in RTC_CNTL, RTC_IO, and SARADC peripherals</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Debugging</dt><dd><ul>
+<li><p>Logging via bit-banged UART</p></li>
+<li><p>Shared memory for state inspection</p></li>
+<li><p>Panic or exception handlers can trigger wake-up or signal to main CPU 
if main CPU is in sleep</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Peripheral support</dt><dd><ul>
+<li><p>RTC domain peripherals (RTC GPIO, RTC I2C, ADC)</p></li>
+</ul>
+</dd>
+</dl>
+</li>
+</ul>
+</section>
+<section id="loading-binary-into-ulp-risc-v-coprocessor">
+<h3>Loading Binary into ULP RISC-V Coprocessor<a class="headerlink" 
href="#loading-binary-into-ulp-risc-v-coprocessor" title="Permalink to this 
heading"></a></h3>
+<dl class="simple">
+<dt>There are two ways to load a binary into LP-Core:</dt><dd><ul 
class="simple">
+<li><p>Using a prebuilt binary</p></li>
+<li><p>Using NuttX internal build system to build your own (bare-metal) 
application</p></li>
+</ul>
+</dd>
+</dl>
+<p>When using a prebuilt binary, the already compiled output for the ULP 
system whether built from NuttX
+or the ESP-IDF environment can be leveraged. However, whenever the ULP code 
needs to be modified, it must be rebuilt separately,
+and the resulting .bin file has to be integrated into NuttX. This workflow, 
while compatible, can become tedious.</p>
+<p>With NuttX internal build system, the ULP binary code can be built and 
flashed from a single location. It is more convenient but
+using build system has some dependencies on example side.</p>
+<p>Both methods requires <cite>CONFIG_ESP32S3_ULP_COPROC_ENABLED</cite> and 
<cite>CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM</cite> variables to set ULP RISC-V 
core and
+<cite>CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH</cite> variable to set the path 
to the ULP project or prebuilt binary file
+relative to NuttX root folder.
+These variables can be set using <cite>make menuconfig</cite> or 
<cite>kconfig-tweak</cite> commands.</p>
+<p>Here is an example for enabling ULP and using a prebuilt binary for ULP 
RISC-V core:</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>make distclean
+./tools/configure.sh esp32s3-devkit:nsh
+kconfig-tweak -e CONFIG_ESP32S3_ULP_COPROC_ENABLED
+kconfig-tweak --set-val CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM 8176
+kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
&quot;Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/ulp_riscv_blink.bin&quot;
+make olddefconfig
+make -j
+</pre></div>
+</div>
+</section>
+<section id="creating-an-ulp-risc-v-coprocessor-application">
+<h3>Creating an ULP RISC-V Coprocessor Application<a class="headerlink" 
href="#creating-an-ulp-risc-v-coprocessor-application" title="Permalink to this 
heading"></a></h3>
+<p>To use NuttX’s internal build system to compile the bare-metal ULP RISC-V 
Coprocessor binary, check the following instructions.</p>
+<p>First, create a folder for the ULP source and header files. This folder is 
just for ULP project and it is
+an independent project. Therefore, the NuttX example guide should not be 
followed, and no Makefile or similar
+build files should be added. Also folder location could be anywhere. To 
include ULP folder into build
+system don’t forget to set 
<cite>CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH</cite> variable with path of the 
ULP project folder relative to
+NuttX root folder. Instructions for setting up can be found above.</p>
+<p>NuttX’s internal functions or POSIX calls are not supported.</p>
+<p>Here is an example:</p>
+<ul class="simple">
+<li><p>ULP UART Snippet:</p></li>
+</ul>
+<div class="highlight-C notranslate"><div 
class="highlight"><pre><span></span><span class="cp">#include</span><span 
class="w"> </span><span class="cpf">&quot;ulp_riscv.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_utils.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_print.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_uart_ulp_core.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;sdkconfig.h&quot;</span>
+
+<span class="k">static</span><span class="w"> </span><span 
class="n">ulp_riscv_uart_t</span><span class="w"> </span><span 
class="n">s_print_uart</span><span class="p">;</span>
+
+<span class="kt">int</span><span class="w"> </span><span 
class="nf">main</span><span class="w"> </span><span class="p">(</span><span 
class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+<span class="w">  </span><span class="n">ulp_riscv_uart_cfg_t</span><span 
class="w"> </span><span class="n">cfg</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w">      </span><span class="p">.</span><span 
class="n">tx_pin</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="mi">0</span><span class="p">,</span>
+<span class="w">  </span><span class="p">};</span>
+<span class="w">  </span><span class="n">ulp_riscv_uart_init</span><span 
class="p">(</span><span class="o">&amp;</span><span 
class="n">s_print_uart</span><span class="p">,</span><span class="w"> 
</span><span class="o">&amp;</span><span class="n">cfg</span><span 
class="p">);</span>
+<span class="w">  </span><span class="n">ulp_riscv_print_install</span><span 
class="p">((</span><span class="n">putc_fn_t</span><span 
class="p">)</span><span class="n">ulp_riscv_uart_putc</span><span 
class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span 
class="n">s_print_uart</span><span class="p">);</span>
+
+<span class="w">  </span><span class="k">while</span><span 
class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="w">  </span><span class="p">{</span>
+<span class="w">    </span><span class="n">ulp_riscv_print_str</span><span 
class="p">(</span><span class="s">&quot;Hello from the LP core!!</span><span 
class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="w">    </span><span class="n">ulp_riscv_delay_cycles</span><span 
class="p">(</span><span class="mi">1000</span><span class="w"> </span><span 
class="o">*</span><span class="w"> </span><span 
class="n">ULP_RISCV_CYCLES_PER_MS</span><span class="p">);</span>
+<span class="w">  </span><span class="p">}</span>
+
+<span class="w">  </span><span class="k">return</span><span class="w"> 
</span><span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>For more information about ULP RISC-V Coprocessor examples <a 
class="reference external" 
href="https://github.com/espressif/esp-idf/tree/master/examples/system/ulp/lp_core";>check
 here</a>.
+After these settings follow the same steps as for any other configuration to 
build NuttX. Build system checks ULP project path,
+adds every source and header file into project and builds it.</p>
+<p>To sum up, here is an complete example. <cite>ulp_example/ulp 
(../ulp_example/ulp)</cite> folder selected as example
+to create a subfolder for ULP but folder that includes ULP source code can be 
anywhere:</p>
+<ul class="simple">
+<li><p>Tree view:</p></li>
+</ul>
+<div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>nuttxspace/
+├── nuttx/
+└── apps/
+└── ulp_example/
+    └── ulp/
+        └── ulp_main.c
+</pre></div>
+</div>
+<ul class="simple">
+<li><p>Contents in ulp_main.c:</p></li>
+</ul>
+<div class="highlight-C notranslate"><div 
class="highlight"><pre><span></span><span class="cp">#include</span><span 
class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdint.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&lt;stdbool.h&gt;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_utils.h&quot;</span>
+<span class="cp">#include</span><span class="w"> </span><span 
class="cpf">&quot;ulp_riscv_gpio.h&quot;</span>
+
+<span class="cp">#define GPIO_PIN 0</span>
+
+<span class="cp">#define nop() __asm__ __volatile__ (&quot;nop&quot;)</span>
+
+<span class="kt">bool</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="nb">true</span><span 
class="p">;</span>
+
+<span class="kt">int</span><span class="w"> </span><span 
class="nf">main</span><span class="w"> </span><span class="p">(</span><span 
class="kt">void</span><span class="p">)</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w">    </span><span class="k">while</span><span class="w"> 
</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="w">        </span><span class="p">{</span>
+<span class="w">        </span><span 
class="n">ulp_riscv_gpio_output_level</span><span class="p">(</span><span 
class="n">GPIO_PIN</span><span class="p">,</span><span class="w"> </span><span 
class="n">gpio_level_previous</span><span class="p">);</span>
+<span class="w">        </span><span class="n">gpio_level_previous</span><span 
class="w"> </span><span class="o">=</span><span class="w"> </span><span 
class="o">!</span><span class="n">gpio_level_previous</span><span 
class="p">;</span>
+<span class="w">        </span><span class="k">for</span><span class="w"> 
</span><span class="p">(</span><span class="kt">int</span><span class="w"> 
</span><span class="n">i</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span class="mi">0</span><span 
class="p">;</span><span class="w"> </span><span class="n">i</span><span 
class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span 
class="mi">10000</span><span class="p">;</span><span class="w" [...]
+<span class="w">          </span><span class="p">{</span>
+<span class="w">            </span><span class="n">nop</span><span 
class="p">();</span>
+<span class="w">          </span><span class="p">}</span>
+<span class="w">        </span><span class="p">}</span>
+
+<span class="w">    </span><span class="k">return</span><span class="w"> 
</span><span class="mi">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+</pre></div>
+</div>
+<ul>
+<li><p>Command to build:</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>make distclean
+./tools/configure.sh esp32s3-devkitc:nsh
+kconfig-tweak -e CONFIG_ESP32S3_ULP_COPROC_ENABLED
+kconfig-tweak --set-val CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM 8176
+kconfig-tweak -e CONFIG_DEV_GPIO
+kconfig-tweak --set-str CONFIG_ESPRESSIF_ULP_RISCV_PROJECT_PATH 
&quot;../ulp_example/ulp&quot;
+make olddefconfig
+make -j
+</pre></div>
+</div>
+</li>
+</ul>
+</section>
+</section>
 <section id="id1">
 <h2><span class="target" id="managing-esptool-on-virtual-environment">Managing 
esptool on virtual environment</span><a class="headerlink" href="#id1" 
title="Permalink to this heading"></a></h2>
 <p>This section describes how to install <code class="docutils literal 
notranslate"><span class="pre">esptool</span></code>, <code class="docutils 
literal notranslate"><span class="pre">imgtool</span></code> or any other 
Python packages in a
diff --git a/content/docs/latest/searchindex.js 
b/content/docs/latest/searchindex.js
index 40f0665a5..e4039acc7 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/arch-renesas", "_tags/chip-a527", 
"_tags/chip-a64", "_tags/chip-at90usb", "_tags/chip-atmega", 
"_tags/chip-atmega2560", "_tags/chip-bcm2711", "_tags/chip-esp32", 
"_tags/chip-esp32a1s", "_tags/chip-esp32picod4", "_tags/chip-esp32s2", 
"_tags/chip-esp32s3", "_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", 
"_tags/chip-example", "_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", 
"_tag [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/arch-renesas", "_tags/chip-a527", 
"_tags/chip-a64", "_tags/chip-at90usb", "_tags/chip-atmega", 
"_tags/chip-atmega2560", "_tags/chip-bcm2711", "_tags/chip-esp32", 
"_tags/chip-esp32a1s", "_tags/chip-esp32picod4", "_tags/chip-esp32s2", 
"_tags/chip-esp32s3", "_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", 
"_tags/chip-example", "_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", 
"_tag [...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index 551981fa4..6cf0d9940 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>Wed, 01 Oct 2025 00:34:53 +0000</pubDate>
-    <lastBuildDate>Wed, 01 Oct 2025 00:34:53 +0000</lastBuildDate>
+    <pubDate>Thu, 02 Oct 2025 00:32:22 +0000</pubDate>
+    <lastBuildDate>Thu, 02 Oct 2025 00:32:22 +0000</lastBuildDate>
     <generator>Jekyll v4.3.2</generator>
     
       <item>

Reply via email to