This is an automated email from the ASF dual-hosted git repository.
github-actions[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 b2e666e4b0 Publishing web: f0482e9c189ff02e151b650878e44a5e0108a468
docs: 506542e91a5b86f00d5f96da6e7788c632d0709c
b2e666e4b0 is described below
commit b2e666e4b022a82f84cc3ceb7107907014a75122
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Wed Aug 5 00:53:30 2026 +0000
Publishing web: f0482e9c189ff02e151b650878e44a5e0108a468 docs:
506542e91a5b86f00d5f96da6e7788c632d0709c
---
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.11.0/guides/fully_linked_elf.html | 2 +-
.../docs/12.11.0/guides/partially_linked_elf.html | 2 +-
content/docs/12.11.0/index.html | 2 +-
content/docs/12.11.0/searchindex.js | 2 +-
content/docs/12.12.0/guides/fully_linked_elf.html | 2 +-
.../docs/12.12.0/guides/partially_linked_elf.html | 2 +-
content/docs/12.12.0/index.html | 2 +-
content/docs/12.12.0/searchindex.js | 2 +-
content/docs/12.13.0/guides/fully_linked_elf.html | 2 +-
.../docs/12.13.0/guides/partially_linked_elf.html | 2 +-
content/docs/12.13.0/index.html | 2 +-
content/docs/12.13.0/searchindex.js | 2 +-
content/docs/12.2.0/index.html | 2 +-
.../xtensa/esp32/boards/esp32-audio-kit/index.html | 2 +-
.../xtensa/esp32/boards/esp32-devkitc/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 +-
content/docs/13.0.0/guides/fully_linked_elf.html | 2 +-
.../docs/13.0.0/guides/partially_linked_elf.html | 2 +-
content/docs/13.0.0/index.html | 2 +-
content/docs/13.0.0/searchindex.js | 2 +-
.../latest/_images/linum-stm32h753bi-nxdoom.jpg | Bin 0 -> 111676 bytes
.../applications/games/nxdoom/index.rst.txt | 67 +++++++--
.../drivers/special/sensors/mpu6050.rst.txt | 48 ++++++-
.../kernel_modules_vs_shared_libraries.rst.txt | 57 +++++++-
.../stm32h7/boards/linum-stm32h753bi/index.rst.txt | 155 +++++++++++++++++++++
.../latest/applications/games/nxdoom/index.html | 64 +++++++--
.../drivers/special/sensors/mpu6050.html | 43 +++++-
content/docs/latest/guides/fully_linked_elf.html | 2 +-
.../docs/latest/guides/partially_linked_elf.html | 2 +-
content/docs/latest/implementation/index.html | 1 +
.../kernel_modules_vs_shared_libraries.html | 54 ++++++-
content/docs/latest/index.html | 2 +-
content/docs/latest/objects.inv | Bin 221192 -> 221312 bytes
.../stm32h7/boards/linum-stm32h753bi/index.html | 147 +++++++++++++++++++
content/docs/latest/searchindex.js | 2 +-
content/feed.xml | 4 +-
66 files changed, 649 insertions(+), 99 deletions(-)
diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index b286cd9370..cd2a82f4c2 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: 04 August 26 at 00:32</p>
+<p>Last Updated: 05 August 26 at 00:30</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 785c94ee8f..b013ba7010 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -253,7 +253,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: 04 August 26 at 00:32</p>
+<p>Last Updated: 05 August 26 at 00:31</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 488276034d..20092da39f 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -253,7 +253,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: 04 August 26 at 00:32</p>
+<p>Last Updated: 05 August 26 at 00:31</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 71009f0570..1052aa53ef 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -254,7 +254,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: 04 August 26 at 00:32</p>
+<p>Last Updated: 05 August 26 at 00:31</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 71009f0570..1052aa53ef 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -254,7 +254,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: 04 August 26 at 00:32</p>
+<p>Last Updated: 05 August 26 at 00:31</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 71009f0570..1052aa53ef 100644
--- a/content/docs/11.0.0/index.html
+++ b/content/docs/11.0.0/index.html
@@ -254,7 +254,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: 04 August 26 at 00:32</p>
+<p>Last Updated: 05 August 26 at 00:31</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 a222485f53..4d551139ba 100644
--- a/content/docs/12.0.0/index.html
+++ b/content/docs/12.0.0/index.html
@@ -179,7 +179,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: 04 August 26 at 00:33</p>
+<p>Last Updated: 05 August 26 at 00:32</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 defec81bf0..6ec3ff57ef 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 c3237cad12..1c5bfff4b7 100644
--- a/content/docs/12.1.0/index.html
+++ b/content/docs/12.1.0/index.html
@@ -179,7 +179,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: 04 August 26 at 00:33</p>
+<p>Last Updated: 05 August 26 at 00:32</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 2e3a03223a..8e5d04da4b 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 ff5055ceec..e25f9faf9d 100644
--- a/content/docs/12.10.0/index.html
+++ b/content/docs/12.10.0/index.html
@@ -191,7 +191,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: 04 August 26 at 00:44</p>
+<p>Last Updated: 05 August 26 at 00:43</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 94e4dc16b8..4e70b51a98 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.11.0/guides/fully_linked_elf.html
b/content/docs/12.11.0/guides/fully_linked_elf.html
index be9c98808f..17fbaacefb 100644
--- a/content/docs/12.11.0/guides/fully_linked_elf.html
+++ b/content/docs/12.11.0/guides/fully_linked_elf.html
@@ -483,7 +483,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="0ebd2450-1ff2-4aae-8b92-25136a25bd0f"
name="0ebd2450-1ff2-4aae-8b92-25136a25bd0f" type="checkbox"><label
class="sphinx_collapse__label" for="0ebd2450-1ff2-4aae-8b92-25136a25bd0f"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="ac6c3c7c-1ff4-46a5-9ad1-bae03847a5e3"
name="ac6c3c7c-1ff4-46a5-9ad1-bae03847a5e3" type="checkbox"><label
class="sphinx_collapse__label" for="ac6c3c7c-1ff4-46a5-9ad1-bae03847a5e3"><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/12.11.0/guides/partially_linked_elf.html
b/content/docs/12.11.0/guides/partially_linked_elf.html
index 5d47c22cf0..e716d2df3a 100644
--- a/content/docs/12.11.0/guides/partially_linked_elf.html
+++ b/content/docs/12.11.0/guides/partially_linked_elf.html
@@ -509,7 +509,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="f4159cf7-949c-4220-ae62-7ef96b522cf4"
name="f4159cf7-949c-4220-ae62-7ef96b522cf4" type="checkbox"><label
class="sphinx_collapse__label" for="f4159cf7-949c-4220-ae62-7ef96b522cf4"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="45119cf5-66ed-4e85-9de6-b8f5f24fbcd4"
name="45119cf5-66ed-4e85-9de6-b8f5f24fbcd4" type="checkbox"><label
class="sphinx_collapse__label" for="45119cf5-66ed-4e85-9de6-b8f5f24fbcd4"><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/12.11.0/index.html b/content/docs/12.11.0/index.html
index 9a25ab31b7..b589aaef82 100644
--- a/content/docs/12.11.0/index.html
+++ b/content/docs/12.11.0/index.html
@@ -193,7 +193,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: 04 August 26 at 00:45</p>
+<p>Last Updated: 05 August 26 at 00:44</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.11.0/searchindex.js
b/content/docs/12.11.0/searchindex.js
index 7d6ae2aa16..4bede6267a 100644
--- a/content/docs/12.11.0/searchindex.js
+++ b/content/docs/12.11.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-imx95",
"_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-imx95",
"_tags/ [...]
\ No newline at end of file
diff --git a/content/docs/12.12.0/guides/fully_linked_elf.html
b/content/docs/12.12.0/guides/fully_linked_elf.html
index 1f17a89f74..0de701de87 100644
--- a/content/docs/12.12.0/guides/fully_linked_elf.html
+++ b/content/docs/12.12.0/guides/fully_linked_elf.html
@@ -483,7 +483,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="086a48d5-68b4-4d7a-a9c0-414c0edc58af"
name="086a48d5-68b4-4d7a-a9c0-414c0edc58af" type="checkbox"><label
class="sphinx_collapse__label" for="086a48d5-68b4-4d7a-a9c0-414c0edc58af"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="a0f3015c-70ed-4457-9bee-f6923853a676"
name="a0f3015c-70ed-4457-9bee-f6923853a676" type="checkbox"><label
class="sphinx_collapse__label" for="a0f3015c-70ed-4457-9bee-f6923853a676"><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/12.12.0/guides/partially_linked_elf.html
b/content/docs/12.12.0/guides/partially_linked_elf.html
index 0136e89871..5ab9f9ef81 100644
--- a/content/docs/12.12.0/guides/partially_linked_elf.html
+++ b/content/docs/12.12.0/guides/partially_linked_elf.html
@@ -509,7 +509,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="6b771301-7804-414d-a57e-e3882609ef20"
name="6b771301-7804-414d-a57e-e3882609ef20" type="checkbox"><label
class="sphinx_collapse__label" for="6b771301-7804-414d-a57e-e3882609ef20"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="1adcbf0d-77a0-4d69-b8f4-6f9690160a48"
name="1adcbf0d-77a0-4d69-b8f4-6f9690160a48" type="checkbox"><label
class="sphinx_collapse__label" for="1adcbf0d-77a0-4d69-b8f4-6f9690160a48"><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/12.12.0/index.html b/content/docs/12.12.0/index.html
index 805feddcc5..f499a8ea70 100644
--- a/content/docs/12.12.0/index.html
+++ b/content/docs/12.12.0/index.html
@@ -193,7 +193,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: 04 August 26 at 00:47</p>
+<p>Last Updated: 05 August 26 at 00:46</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.12.0/searchindex.js
b/content/docs/12.12.0/searchindex.js
index c55c83ab9b..c553786902 100644
--- a/content/docs/12.12.0/searchindex.js
+++ b/content/docs/12.12.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", "_tags/ch
[...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", "_tags/ch
[...]
\ No newline at end of file
diff --git a/content/docs/12.13.0/guides/fully_linked_elf.html
b/content/docs/12.13.0/guides/fully_linked_elf.html
index ef4340ce4e..eda145f9eb 100644
--- a/content/docs/12.13.0/guides/fully_linked_elf.html
+++ b/content/docs/12.13.0/guides/fully_linked_elf.html
@@ -486,7 +486,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="017454d9-57a0-4f0b-abc3-1e8f6600af5e"
name="017454d9-57a0-4f0b-abc3-1e8f6600af5e" type="checkbox"><label
class="sphinx_collapse__label" for="017454d9-57a0-4f0b-abc3-1e8f6600af5e"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="2e53fc04-ebba-410c-864d-85ef3d735a23"
name="2e53fc04-ebba-410c-864d-85ef3d735a23" type="checkbox"><label
class="sphinx_collapse__label" for="2e53fc04-ebba-410c-864d-85ef3d735a23"><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/12.13.0/guides/partially_linked_elf.html
b/content/docs/12.13.0/guides/partially_linked_elf.html
index 3a6a01f619..b48449028a 100644
--- a/content/docs/12.13.0/guides/partially_linked_elf.html
+++ b/content/docs/12.13.0/guides/partially_linked_elf.html
@@ -512,7 +512,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="e7d22dad-709b-42e3-abd8-29e2e08a469b"
name="e7d22dad-709b-42e3-abd8-29e2e08a469b" type="checkbox"><label
class="sphinx_collapse__label" for="e7d22dad-709b-42e3-abd8-29e2e08a469b"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="ca06b0c6-0bf1-4068-87f4-7317a3e9a473"
name="ca06b0c6-0bf1-4068-87f4-7317a3e9a473" type="checkbox"><label
class="sphinx_collapse__label" for="ca06b0c6-0bf1-4068-87f4-7317a3e9a473"><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/12.13.0/index.html b/content/docs/12.13.0/index.html
index 93a4a9e395..21baac508d 100644
--- a/content/docs/12.13.0/index.html
+++ b/content/docs/12.13.0/index.html
@@ -195,7 +195,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: 04 August 26 at 00:49</p>
+<p>Last Updated: 05 August 26 at 00:48</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.13.0/searchindex.js
b/content/docs/12.13.0/searchindex.js
index 922dcc263c..dd139a45e3 100644
--- a/content/docs/12.13.0/searchindex.js
+++ b/content/docs/12.13.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm", "_tags/arch-arm64",
"_tags/arch-armv8m", "_tags/arch-avr", "_tags/arch-cm33", "_tags/arch-example",
"_tags/arch-mips", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32-c3", "_ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm", "_tags/arch-arm64",
"_tags/arch-armv8m", "_tags/arch-avr", "_tags/arch-cm33", "_tags/arch-example",
"_tags/arch-mips", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32-c3", "_ [...]
\ 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 0115f390b4..15b305458a 100644
--- a/content/docs/12.2.0/index.html
+++ b/content/docs/12.2.0/index.html
@@ -180,7 +180,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: 04 August 26 at 00:33</p>
+<p>Last Updated: 05 August 26 at 00:32</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/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
b/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
index 6034ebfb67..8c8e5f7347 100644
---
a/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
+++
b/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
@@ -361,7 +361,7 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)
<p>Look for your PC IP address and test playing the prepared audio on your
browser:</p>
<figure class="align-center">
-<img alt="../../../../../_images/esp32-audio-config-file1.png"
src="../../../../../_images/esp32-audio-config-file1.png" />
+<img alt="../../../../../_images/esp32-audio-config-file.png"
src="../../../../../_images/esp32-audio-config-file.png" />
</figure>
<p>After successfully built and flashed, connect the board to the Wi-Fi
network:</p>
<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>$ nsh> wapi psk wlan0 mypasswd 3
diff --git
a/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
b/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
index 0cb119ce80..6a0bf2859e 100644
--- a/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
+++ b/content/docs/12.2.0/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
@@ -458,7 +458,7 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)
<p>Look for your PC IP address and test playing the prepared audio on your
browser:</p>
<figure class="align-center">
-<img alt="../../../../../_images/esp32-audio-config-file.png"
src="../../../../../_images/esp32-audio-config-file.png" />
+<img alt="../../../../../_images/esp32-audio-config-file1.png"
src="../../../../../_images/esp32-audio-config-file1.png" />
</figure>
<p>After successfully built and flashed, connect the board to the Wi-Fi
network:</p>
<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>nsh> wapi psk wlan0 mypasswd 3
diff --git a/content/docs/12.2.0/searchindex.js
b/content/docs/12.2.0/searchindex.js
index 8e7f7321ce..3252b08047 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 0115f390b4..15b305458a 100644
--- a/content/docs/12.2.1/index.html
+++ b/content/docs/12.2.1/index.html
@@ -180,7 +180,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: 04 August 26 at 00:33</p>
+<p>Last Updated: 05 August 26 at 00:32</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 a9b304cafd..d4025d5015 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 26070045be..e0e5f1995a 100644
--- a/content/docs/12.3.0/index.html
+++ b/content/docs/12.3.0/index.html
@@ -180,7 +180,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: 04 August 26 at 00:34</p>
+<p>Last Updated: 05 August 26 at 00:33</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 4239e9092e..216870af8f 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 724023b58b..9db9111d13 100644
--- a/content/docs/12.4.0/index.html
+++ b/content/docs/12.4.0/index.html
@@ -187,7 +187,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: 04 August 26 at 00:34</p>
+<p>Last Updated: 05 August 26 at 00:33</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 35a2f24618..2b788f7dd4 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 3f5b2cccbf..8a1832ce92 100644
--- a/content/docs/12.5.0/index.html
+++ b/content/docs/12.5.0/index.html
@@ -187,7 +187,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: 04 August 26 at 00:35</p>
+<p>Last Updated: 05 August 26 at 00:34</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 3b9f8d730f..9c6865bb62 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 e59a41c27d..13c2c51e34 100644
--- a/content/docs/12.5.1/index.html
+++ b/content/docs/12.5.1/index.html
@@ -187,7 +187,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: 04 August 26 at 00:37</p>
+<p>Last Updated: 05 August 26 at 00:35</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 b5c3299208..0b633fd452 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 1cb8a0b9eb..7676000d3b 100644
--- a/content/docs/12.6.0/index.html
+++ b/content/docs/12.6.0/index.html
@@ -188,7 +188,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: 04 August 26 at 00:38</p>
+<p>Last Updated: 05 August 26 at 00:37</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 8c2944af7b..82316a8be8 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 31a56119ed..84ae000ad7 100644
--- a/content/docs/12.7.0/index.html
+++ b/content/docs/12.7.0/index.html
@@ -187,7 +187,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: 04 August 26 at 00:39</p>
+<p>Last Updated: 05 August 26 at 00:38</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 c8233a860d..0bfcc4356a 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 03136b90d9..7e546cacd2 100644
--- a/content/docs/12.8.0/index.html
+++ b/content/docs/12.8.0/index.html
@@ -187,7 +187,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: 04 August 26 at 00:41</p>
+<p>Last Updated: 05 August 26 at 00:40</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 18e96eda6e..936a93dfff 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 ccb3d110c0..65e0c9effa 100644
--- a/content/docs/12.9.0/index.html
+++ b/content/docs/12.9.0/index.html
@@ -187,7 +187,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: 04 August 26 at 00:42</p>
+<p>Last Updated: 05 August 26 at 00:41</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 f82ed397f6..468e5136d0 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/13.0.0/guides/fully_linked_elf.html
b/content/docs/13.0.0/guides/fully_linked_elf.html
index b86a043478..34d38c40ca 100644
--- a/content/docs/13.0.0/guides/fully_linked_elf.html
+++ b/content/docs/13.0.0/guides/fully_linked_elf.html
@@ -487,7 +487,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="3a8889f0-83a3-4b81-9db2-b7196fa57133"
name="3a8889f0-83a3-4b81-9db2-b7196fa57133" type="checkbox"><label
class="sphinx_collapse__label" for="3a8889f0-83a3-4b81-9db2-b7196fa57133"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="6e0d25fe-e0af-4cfd-b312-f7469273335b"
name="6e0d25fe-e0af-4cfd-b312-f7469273335b" type="checkbox"><label
class="sphinx_collapse__label" for="6e0d25fe-e0af-4cfd-b312-f7469273335b"><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/13.0.0/guides/partially_linked_elf.html
b/content/docs/13.0.0/guides/partially_linked_elf.html
index 1b38f82576..eed2bbd635 100644
--- a/content/docs/13.0.0/guides/partially_linked_elf.html
+++ b/content/docs/13.0.0/guides/partially_linked_elf.html
@@ -513,7 +513,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="18cde623-f7f2-48c5-b0d1-6240d83a64af"
name="18cde623-f7f2-48c5-b0d1-6240d83a64af" type="checkbox"><label
class="sphinx_collapse__label" for="18cde623-f7f2-48c5-b0d1-6240d83a64af"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="3ceed2f7-2edd-4bea-aacb-97fdc2babcf3"
name="3ceed2f7-2edd-4bea-aacb-97fdc2babcf3" type="checkbox"><label
class="sphinx_collapse__label" for="3ceed2f7-2edd-4bea-aacb-97fdc2babcf3"><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/13.0.0/index.html b/content/docs/13.0.0/index.html
index 9b50a12776..9e2b39f98d 100644
--- a/content/docs/13.0.0/index.html
+++ b/content/docs/13.0.0/index.html
@@ -195,7 +195,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: 04 August 26 at 00:50</p>
+<p>Last Updated: 05 August 26 at 00:49</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/13.0.0/searchindex.js
b/content/docs/13.0.0/searchindex.js
index 4846d0415d..6775e79e56 100644
--- a/content/docs/13.0.0/searchindex.js
+++ b/content/docs/13.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm", "_tags/arch-arm64",
"_tags/arch-armv8m", "_tags/arch-avr", "_tags/arch-cm33", "_tags/arch-example",
"_tags/arch-mips", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-am62x", "_tags/chip-am67", "_tags/chip-at32uc3",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega128",
"_tags/chip-atmega1284p", "_tags/chip-atmega2560", "_tags/chip-bcm2711", "_tags
[...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm", "_tags/arch-arm64",
"_tags/arch-armv8m", "_tags/arch-avr", "_tags/arch-cm33", "_tags/arch-example",
"_tags/arch-mips", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-am62x", "_tags/chip-am67", "_tags/chip-at32uc3",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega128",
"_tags/chip-atmega1284p", "_tags/chip-atmega2560", "_tags/chip-bcm2711", "_tags
[...]
\ No newline at end of file
diff --git a/content/docs/latest/_images/linum-stm32h753bi-nxdoom.jpg
b/content/docs/latest/_images/linum-stm32h753bi-nxdoom.jpg
new file mode 100644
index 0000000000..5145a8ec81
Binary files /dev/null and
b/content/docs/latest/_images/linum-stm32h753bi-nxdoom.jpg differ
diff --git
a/content/docs/latest/_sources/applications/games/nxdoom/index.rst.txt
b/content/docs/latest/_sources/applications/games/nxdoom/index.rst.txt
index 4129f89c7a..1ea5272e42 100644
--- a/content/docs/latest/_sources/applications/games/nxdoom/index.rst.txt
+++ b/content/docs/latest/_sources/applications/games/nxdoom/index.rst.txt
@@ -46,16 +46,22 @@ apply).
Sound support, multiplayer support, support for any of the wide array of
input devices NuttX can provide are also highly welcomed.
-.. warning::
+.. note::
+
+ Keyboard input is the only input device supported so far, and other ones
+ are welcome.
- Currently, the only supported input device is keyboard input. However,
- NuttX's keyboard codec is highly non-standard and therefore some things do
- not work as intended. For instance, pressing CTRL to fire does nothing since
- NuttX's codec has no concept of CTRL. The keyboard codec will need to be
- amended before this works properly, but the port is upstreamed in the hopes
- of encouraging those changes or getting more contributors to add different
- input devices. The keyboard codec needs to be treated delicately since other
- things in the kernel depend on it.
+ The game binds fire, run and strafe to Ctrl, Shift and Alt. Those reach
+ an application only if the keyboard driver reports a modifier as a key in
+ its own right, which the codec keycodes ``KEYCODE_LCTRL`` through
+ ``KEYCODE_RGUI`` exist for.
+
+ The simulator always reports them. A USB HID keyboard reports them when
+ ``CONFIG_HIDKBD_REPORT_MODIFIERS`` is enabled, which is off by default,
+ so a configuration that plays the game over USB has to turn it on. A
+ driver that reports no modifiers at all, a matrix keyboard for instance,
+ leaves those three actions on keys the game cannot see, and they have to
+ be rebound to play.
Minimum requirements
--------------------
@@ -93,6 +99,49 @@ To launch the game, just run:
and replace the path with your WAD file's path.
+Tuning the display for a board
+------------------------------
+
+DOOM renders a 320x200 image with 8 bits per pixel and a palette, and the port
+scales that up and converts it to whatever the frame buffer wants. How much
+that costs depends a great deal on the board, so the following options are
+available. All of them are disabled by default, which leaves the behaviour
+unchanged, and each is worth enabling only where it pays.
+
+``CONFIG_GAMES_NXDOOM_FB_CMAP``
+ Load the DOOM palette into the frame buffer's colour map and blit the
+ palette indices unconverted, letting the display convert them while it scans
+ out. This needs a frame buffer that is 8 bits per pixel and supports
+ ``FBIOPUT_CMAP``, such as an STM32 LTDC layer configured for L8. It removes
+ the conversion from the blit and halves the amount of data written per
+ frame.
+
+``CONFIG_GAMES_NXDOOM_FILLSCREEN``
+ Stretch the image over the whole display instead of scaling it by the
+ largest whole number that fits. This fills a display whose size is not an
+ exact multiple of 320x200, at the cost of a scale factor that is not uniform
+ across the image. Without it the image is scaled by a whole number and
+ centred, leaving a border.
+
+``CONFIG_GAMES_NXDOOM_ROWSTAGE``
+ Build each output row in a staging buffer and copy it out, rather than
+ writing the frame buffer a pixel at a time, so that the frame buffer only
+ ever sees burst-friendly copies. Costs a few kilobytes of ``.bss``. This is
+ worth a lot when the frame buffer is external memory and the data cache is
+ in write-through mode, and little otherwise.
+
+``CONFIG_GAMES_NXDOOM_STATIC_SCRNBUF``
+ Place the buffer DOOM renders into in ``.bss`` rather than taking it from the
+ heap, which puts it in internal RAM on a board whose heap is mostly external
+ memory. The renderer draws in vertical columns, so consecutive writes are
+ one screen width apart and none of them coalesce, which makes external memory
+ close to the worst case for it. Costs 64000 bytes of RAM whether the game
+ runs or not.
+
+As an illustration of the effect, on an STM32H753 driving a 1024x600 panel
+whose frame buffer lives in SDRAM, ``ROWSTAGE`` and ``STATIC_SCRNBUF`` are
+worth 2.7 times the frame rate between them.
+
Other Notes
-----------
diff --git
a/content/docs/latest/_sources/components/drivers/special/sensors/mpu6050.rst.txt
b/content/docs/latest/_sources/components/drivers/special/sensors/mpu6050.rst.txt
index 6a422f5cc8..4aa5ad8e03 100644
---
a/content/docs/latest/_sources/components/drivers/special/sensors/mpu6050.rst.txt
+++
b/content/docs/latest/_sources/components/drivers/special/sensors/mpu6050.rst.txt
@@ -33,24 +33,62 @@ Where ``n`` is the device number passed during device
registration (e.g., 0).
/* Example uORB sensor registration on I2C bus 0 at default address 0x68 */
- int err = mpu6050_register(0, i2c_master, MPU6050_ADDR_LOW);
+ int err = mpu6050_register(0, i2c_master, MPU6050_ADDR_LOW, NULL);
if (err < 0)
{
syslog(LOG_ERR, "Failed to register MPU6050: %d\n", err);
}
+The device samples at 100 Hz.
+
+Acquisition Modes
+=================
+
+The driver reads the device on demand by default: a sample is taken when the
+application reads the topic, and is timestamped at that moment.
+
+With ``CONFIG_SENSORS_MPU6050_INT`` the device drives the acquisition instead,
+through its data ready interrupt. Samples are then timestamped when they were
+measured rather than when they were asked for, and both topics are published
+from a single read, so accelerometer and gyroscope share one timestamp. This
+requires the INT pin to be wired, and the board to pass a
+``struct mpu6050_config_s`` whose ``attach`` member connects that pin to the
+driver:
+
+.. code-block:: c
+
+ static int board_mpu6050_attach(FAR const struct mpu6050_config_s *config,
+ xcpt_t isr, FAR void *arg)
+ {
+ /* Configure the GPIO for a rising edge and attach isr to it */
+ }
+
+ static const struct mpu6050_config_s g_mpu6050_config =
+ {
+ .attach = board_mpu6050_attach,
+ };
+
+ int err = mpu6050_register(0, i2c_master, MPU6050_ADDR_LOW,
+ &g_mpu6050_config);
+
+Registration fails with ``-EINVAL`` if the option is enabled and no ``attach``
+is supplied, since the interrupt is the only source of samples in that build.
+
Configuration Options
=====================
- ``CONFIG_SENSORS_MPU6050`` - Enables uORB driver support for the InvenSense
MPU6050 6-axis MotionTracker over I2C.
+- ``CONFIG_SENSORS_MPU6050_INT`` - Takes samples from the data ready interrupt
instead of reading the device on demand. Requires board support, see
`Acquisition Modes`_.
Supported Operations
====================
-The MPU6050 uORB driver supports standard sensor operations (`activate`,
`fetch`,
-`set_interval`, `batch`, and `control`). It acquires simultaneous 3-axis
accelerometer
-and 3-axis gyroscope samples, applies appropriate scale conversions, and
publishes them
-to their respective uORB topics.
+The MPU6050 uORB driver supports standard sensor operations (`activate`,
+`set_interval`, `batch`, and `control`), plus `fetch` when reading on demand.
+An instance provides either `fetch` or interrupt driven delivery, never both.
+It acquires simultaneous 3-axis accelerometer and 3-axis gyroscope samples,
+applies appropriate scale conversions, and publishes them to their respective
+uORB topics.
Example Usage (`uorb_listener`)
-------------------------------
diff --git
a/content/docs/latest/_sources/implementation/kernel_modules_vs_shared_libraries.rst.txt
b/content/docs/latest/_sources/implementation/kernel_modules_vs_shared_libraries.rst.txt
index 0334393d99..33c1d3e5f1 100644
---
a/content/docs/latest/_sources/implementation/kernel_modules_vs_shared_libraries.rst.txt
+++
b/content/docs/latest/_sources/implementation/kernel_modules_vs_shared_libraries.rst.txt
@@ -67,12 +67,15 @@ of a shared library in that environment.
In this case kernel modules really only differ from shared
libraries in their usage semantics:
-For the FLAT build, I have added the standard ``include/dllfcn.h``
-and have implemented the FLAT shared library support as a thin wrapper
-around the kernel module support:
-
-* ``dlopen()`` maps to ``insmod()``.
-* ``dlclose()`` maps to ``rmmod()``.
+For the FLAT build, the standard ``include/dlfcn.h`` interfaces are
+implemented as a thin wrapper around the same module library that the kernel
+module support uses:
+
+* ``dlopen()`` loads the library, or takes an additional reference on it if
+ it is already loaded, and returns a handle to it. See
+ `Opening a Library More Than Once`_.
+* ``dlclose()`` releases one reference. The library is unloaded, as
+ ``rmmod()`` would, only when the last handle is closed.
* ``dlsym()`` maps to ``modsym()``.
* ``dlerror()`` is only a stub at the present time.
@@ -101,6 +104,43 @@ The shared library functions no longer call the kernel
module logic but rather
implement their one top-level management logic using the lower-level routines
in the module library.
+The user space copy of the module library keeps the name of each loaded
+library whenever ``CONFIG_LIBC_DLFCN`` is enabled, since the name is the only
+way to tell that a library is already loaded. This costs ``NAME_MAX`` bytes
+per loaded library, but it makes ``dlopen()`` behave exactly as it does in the
+FLAT build.
+
+
+Opening a Library More Than Once
+================================
+
+In the FLAT and PROTECTED builds, ``dlopen()`` of a library that is already
+loaded does not load a second copy and does not fail. It returns a handle to
+the library that is already loaded and takes an additional reference on it.
+Each successful ``dlopen()`` must be matched by a ``dlclose()``; the library
+is unloaded only when the last handle is closed. Up to 255 handles may be
+outstanding on one library; beyond that ``dlopen()`` fails with ``EMFILE``.
+
+Some consequences worth keeping in mind:
+
+* A library is identified by the *basename* of the path passed to
+ ``dlopen()``. Two files with the same basename in different directories
+ are treated as the same library, and the second ``dlopen()`` will return
+ the first one.
+* There is only one instance of the library's ``.data`` and ``.bss``. Global
+ and static data are shared by every user of the library, and by every task
+ group in the system.
+* Constructors in ``.init_array`` run once, when the library is first loaded,
+ and destructors in ``.fini_array`` run once, when the last handle is
+ closed. They do not run per ``dlopen()``/``dlclose()`` pair.
+* Symbols obtained with ``dlsym()`` remain valid until the last handle is
+ closed, not until the caller's own handle is closed.
+
+Kernel modules deliberately behave differently: ``insmod()`` fails with
+``EEXIST`` if a module of that name is already installed, and ``rmmod()``
+removes it immediately. A kernel module is a singleton and is not reference
+counted.
+
Better FLAT and PROTECTED Mode Shared Libraries
===============================================
@@ -112,7 +152,7 @@ for each NuttX task group.
A task group is the moral equivalent of a Unix process.
That is how a shared library would have to work in uClinux, for example.
But that would be a substantial effort! For example, since each
-``.bss``/``.data`` would lie at a different physical addres,
+``.bss``/``.data`` would lie at a different physical address,
the ``.text`` section logic would need support
Position-Independent-Data (PID).
Embedded PID support, however, is pretty much broken on all current GCC
@@ -174,3 +214,6 @@ are loaded into memory before the programs ``main()`` logic
is called.
.. note:: There is not yet any shared library support in the KERNEL build mode.
This would be quite a large effort and not on the plan of record
at the present time.
+ ``dlopen()`` always fails and returns ``NULL`` in the KERNEL build,
+ so none of the reference counting behaviour described above applies
+ there.
diff --git
a/content/docs/latest/_sources/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst.txt
b/content/docs/latest/_sources/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst.txt
index 65d38f22a9..9b469c9c80 100644
---
a/content/docs/latest/_sources/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst.txt
+++
b/content/docs/latest/_sources/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst.txt
@@ -1118,6 +1118,161 @@ console hands over a whole line at once. The keyboard
upper half overwrites
the oldest event when the buffer is full, so a line typed at the console
would arrive with its beginning silently missing.
+nxdoom
+------
+
+**Purpose:** runs ``NXDoom``, the NuttX port of Chocolate DOOM, on the board's
+LCD, played with a USB HID keyboard and reading the game data from the microSD
+card. It brings together the LTDC framebuffer, the OTG FS USB host and the
+SDMMC peripheral, and uses the external SDRAM for the game's zone memory.
+
+.. figure:: linum-stm32h753bi-nxdoom.jpg
+ :figwidth: 60%
+ :align: center
+ :alt: DOOM running on the LINUM-STM32H753BI LCD
+
+ DOOM running on the board's 1024x600 LCD
+
+DOOM renders to a 320x200 8-bit paletted buffer. This configuration stretches
+that over the whole 1024x600 panel (``CONFIG_GAMES_NXDOOM_FILLSCREEN``) and
+runs the LTDC layer in L8 (``CONFIG_STM32_LTDC_L1_L8`` with
+``CONFIG_GAMES_NXDOOM_FB_CMAP``), so the palette indices are written to the
+framebuffer unconverted and the display applies the palette from its colour
+map as it scans out. That keeps the conversion off the CPU and
+halves the amount of data written per frame.
+
+Two further options matter on this board, both because the framebuffer and the
+heap are in external SDRAM: ``CONFIG_GAMES_NXDOOM_ROWSTAGE`` builds each row
+in internal RAM so the SDRAM only sees burst copies, and
+``CONFIG_GAMES_NXDOOM_STATIC_SCRNBUF`` keeps the buffer DOOM renders into out
+of the SDRAM altogether. Between them they are worth 2.7 times the frame rate.
+
+The game needs about 4 MiB of contiguous memory for its zone. That comes from
+the SDRAM region, which is 6 MiB when the LTDC is enabled (the last 2 MiB of
+the 8 MiB SDRAM is reserved for the framebuffer).
+
+**Requirements:**
+
+* A microSD card, formatted as FAT, holding a DOOM IWAD. The shareware
+ ``doom1.wad`` and ``freedoom1.wad`` both work, as do the commercial IWADs.
+* A USB HID keyboard on the OTG FS service connector.
+
+**Build and flash:**
+
+.. code-block:: console
+
+ $ ./tools/configure.sh linum-stm32h753bi:nxdoom
+ $ make -j
+
+Flash the resulting ``nuttx.bin`` to the board.
+
+**How to test:** copy the IWAD to the SD card, plug the card and the keyboard,
+reset the board and check that all three devices came up::
+
+ nsh> ls /dev
+ /dev:
+ console
+ fb0
+ kbda
+ mmcsd0
+ null
+ rtc0
+ ttyS0
+ zero
+
+Mount the card and start the game. ``nxdoom`` looks for the IWAD in the
+current directory, so either ``cd`` to the mount point first or point it at
+the file with ``-iwad``::
+
+ nsh> mount -t vfat /dev/mmcsd0 /mnt
+ nsh> nxdoom -iwad /mnt/doom1.wad
+ NXDoom v0.0.0
+ z_init: Init zone memory allocation daemon.
+ zone memory: Using native C allocator.
+ Using /mnt/ for configuration and saves
+ v_init: allocate screens.
+ m_load_defaults: Load system defaults.
+ saving config in /mnt/default.cfg
+ W_Init: Init WADfiles.
+ adding /mnt/doom1.wad
+ =========================================================================
+ DOOM Shareware
+ =========================================================================
+ NXDoom is free software, covered by the GNU General Public
+ License. There is NO warranty; not even for MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. You are welcome to change and distribute
+ copies under certain conditions. See the source for more information.
+ =========================================================================
+ i_init: Setting up machine state.
+ m_init: Init miscellaneous info.
+ r_init: Init DOOM refresh daemon - [...................]
+ p_init: Init Playloop state.
+ d_check_net_game: Checking network game status.
+ startskill 2 deathmatch: 0 startmap: 1 startepisode: 1
+ player 1 of 1 (1 nodes)
+ Emulating the behavior of the 'Doom 1.9' executable.
+ hu_init: Setting up heads up display.
+ st_init: Init status bar.
+
+**Copying the IWAD with zmodem:** the configuration also enables the ``rz``
+and ``sz`` commands, so the IWAD can be copied over the serial console
+instead of moving the SD card to a card reader.
+``CONFIG_SYSTEM_ZMODEM_MOUNTPOINT`` is set to ``/mnt``, so a received file
+lands on the SD card::
+
+ nsh> mount -t vfat /dev/mmcsd0 /mnt
+ nsh> rz
+
+and, from the host, with the console closed in any terminal program::
+
+ $ sz -b --zmodem -w 1024 doom1.wad < /dev/ttyACM0 > /dev/ttyACM0
+
+Note that USART1 has no RTS/CTS on this board, so there is no hardware flow
+control to throttle the sender. ``CONFIG_USART1_RXBUFSIZE`` is raised to 4096
+to compensate, and the ``-w`` window above makes the host wait for
+acknowledgements. Even so this runs at roughly 10 KiB/s, so a 4 MiB IWAD takes
+about seven minutes; a card reader is much faster if one is available.
+
+The game runs on the LCD and is played from the USB keyboard: arrow keys to
+move, Ctrl to fire, Shift to run, Alt to strafe, Space to open doors and Esc
+for the menu. Configuration and saved games are written to ``/mnt``, so the
+card must be mounted read/write.
+
+.. note::
+ The game needs key *release* events, without which a movement key would
+ never stop being held down. A keyboard device reports them by default,
+ so nothing has to be enabled for it.
+
+ Do not turn on ``CONFIG_INPUT_KEYBOARD_BYTESTREAM`` for this
+ configuration. That makes the device deliver the codec byte stream
+ instead of events, and the byte stream encodes presses only: every
+ release is dropped, and the player would keep walking after the key is
+ let go.
+
+.. note::
+ ``CONFIG_HIDKBD_NOGETREPORT`` (and the ``CONFIG_USBHOST_ASYNCH`` it needs)
+ is required. By default the HID keyboard driver asks the keyboard for its
+ input report over the control pipe with GET_REPORT. Many keyboards accept
+ that request but always answer with an empty report, and only ever deliver
+ key data on their interrupt IN endpoint. The symptom is a keyboard that
+ enumerates as ``/dev/kbda`` and reports no error at all, while no key is
+ ever seen. With this option the driver reads the interrupt endpoint
+ instead.
+
+.. note::
+ ``CONFIG_FAT_FORCE_INDIRECT`` is required. Without it the FAT layer reads
+ whole sectors straight into the caller's buffer, and the SDMMC IDMA cannot
+ reach the caller's buffer when it lives in external SDRAM. DOOM reads its
+ lumps into ``malloc()``\ ed memory, and once the internal SRAM regions fill
+ up those allocations come from SDRAM, so the failure appears part way
+ through startup rather than immediately::
+
+ r_init: Init DOOM refresh daemon - [ ]w_read_lump: only
read 0 of 5192 on lump 1070
+
+ Forcing indirect transfers routes every read through the DMA-capable
+ sector buffer that ``CONFIG_FAT_DMAMEMORY`` allocates, at the cost of one
+ extra copy per sector.
+
tone
----
diff --git a/content/docs/latest/applications/games/nxdoom/index.html
b/content/docs/latest/applications/games/nxdoom/index.html
index 29a8faa87e..cb9c52de62 100644
--- a/content/docs/latest/applications/games/nxdoom/index.html
+++ b/content/docs/latest/applications/games/nxdoom/index.html
@@ -152,6 +152,7 @@
<li class="toctree-l3 current"><a class="current reference internal"
href="#">NXDoom</a><ul>
<li class="toctree-l4"><a class="reference internal"
href="#minimum-requirements">Minimum requirements</a></li>
<li class="toctree-l4"><a class="reference internal"
href="#playing">Playing</a></li>
+<li class="toctree-l4"><a class="reference internal"
href="#tuning-the-display-for-a-board">Tuning the display for a board</a></li>
<li class="toctree-l4"><a class="reference internal" href="#other-notes">Other
Notes</a><ul>
<li class="toctree-l5"><a class="reference internal"
href="#translations">Translations</a></li>
<li class="toctree-l5"><a class="reference internal"
href="#source-comments">Source Comments</a></li>
@@ -259,16 +260,20 @@ NuttX, memory optimizations are particularly welcome.</p>
<p>Sound support, multiplayer support, support for any of the wide array of
input devices NuttX can provide are also highly welcomed.</p>
</div>
-<div class="admonition warning">
-<p class="admonition-title">Warning</p>
-<p>Currently, the only supported input device is keyboard input. However,
-NuttX’s keyboard codec is highly non-standard and therefore some things do
-not work as intended. For instance, pressing CTRL to fire does nothing since
-NuttX’s codec has no concept of CTRL. The keyboard codec will need to be
-amended before this works properly, but the port is upstreamed in the hopes
-of encouraging those changes or getting more contributors to add different
-input devices. The keyboard codec needs to be treated delicately since other
-things in the kernel depend on it.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Keyboard input is the only input device supported so far, and other ones
+are welcome.</p>
+<p>The game binds fire, run and strafe to Ctrl, Shift and Alt. Those reach
+an application only if the keyboard driver reports a modifier as a key in
+its own right, which the codec keycodes <code class="docutils literal
notranslate"><span class="pre">KEYCODE_LCTRL</span></code> through
+<code class="docutils literal notranslate"><span
class="pre">KEYCODE_RGUI</span></code> exist for.</p>
+<p>The simulator always reports them. A USB HID keyboard reports them when
+<code class="docutils literal notranslate"><span
class="pre">CONFIG_HIDKBD_REPORT_MODIFIERS</span></code> is enabled, which is
off by default,
+so a configuration that plays the game over USB has to turn it on. A
+driver that reports no modifiers at all, a matrix keyboard for instance,
+leaves those three actions on keys the game cannot see, and they have to
+be rebound to play.</p>
</div>
<section id="minimum-requirements">
<h2>Minimum requirements<a class="headerlink" href="#minimum-requirements"
title="Permalink to this heading"></a></h2>
@@ -301,6 +306,45 @@ file I tried did not run properly)</p>
</div>
<p>and replace the path with your WAD file’s path.</p>
</section>
+<section id="tuning-the-display-for-a-board">
+<h2>Tuning the display for a board<a class="headerlink"
href="#tuning-the-display-for-a-board" title="Permalink to this
heading"></a></h2>
+<p>DOOM renders a 320x200 image with 8 bits per pixel and a palette, and the
port
+scales that up and converts it to whatever the frame buffer wants. How much
+that costs depends a great deal on the board, so the following options are
+available. All of them are disabled by default, which leaves the behaviour
+unchanged, and each is worth enabling only where it pays.</p>
+<dl class="simple">
+<dt><code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_FB_CMAP</span></code></dt><dd><p>Load the DOOM
palette into the frame buffer’s colour map and blit the
+palette indices unconverted, letting the display convert them while it scans
+out. This needs a frame buffer that is 8 bits per pixel and supports
+<code class="docutils literal notranslate"><span
class="pre">FBIOPUT_CMAP</span></code>, such as an STM32 LTDC layer configured
for L8. It removes
+the conversion from the blit and halves the amount of data written per
+frame.</p>
+</dd>
+<dt><code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_FILLSCREEN</span></code></dt><dd><p>Stretch the
image over the whole display instead of scaling it by the
+largest whole number that fits. This fills a display whose size is not an
+exact multiple of 320x200, at the cost of a scale factor that is not uniform
+across the image. Without it the image is scaled by a whole number and
+centred, leaving a border.</p>
+</dd>
+<dt><code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_ROWSTAGE</span></code></dt><dd><p>Build each
output row in a staging buffer and copy it out, rather than
+writing the frame buffer a pixel at a time, so that the frame buffer only
+ever sees burst-friendly copies. Costs a few kilobytes of <code
class="docutils literal notranslate"><span class="pre">.bss</span></code>. This
is
+worth a lot when the frame buffer is external memory and the data cache is
+in write-through mode, and little otherwise.</p>
+</dd>
+<dt><code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_STATIC_SCRNBUF</span></code></dt><dd><p>Place
the buffer DOOM renders into in <code class="docutils literal
notranslate"><span class="pre">.bss</span></code> rather than taking it from the
+heap, which puts it in internal RAM on a board whose heap is mostly external
+memory. The renderer draws in vertical columns, so consecutive writes are
+one screen width apart and none of them coalesce, which makes external memory
+close to the worst case for it. Costs 64000 bytes of RAM whether the game
+runs or not.</p>
+</dd>
+</dl>
+<p>As an illustration of the effect, on an STM32H753 driving a 1024x600 panel
+whose frame buffer lives in SDRAM, <code class="docutils literal
notranslate"><span class="pre">ROWSTAGE</span></code> and <code class="docutils
literal notranslate"><span class="pre">STATIC_SCRNBUF</span></code> are
+worth 2.7 times the frame rate between them.</p>
+</section>
<section id="other-notes">
<h2>Other Notes<a class="headerlink" href="#other-notes" title="Permalink to
this heading"></a></h2>
<section id="translations">
diff --git
a/content/docs/latest/components/drivers/special/sensors/mpu6050.html
b/content/docs/latest/components/drivers/special/sensors/mpu6050.html
index b836e7789f..7fdb35ede5 100644
--- a/content/docs/latest/components/drivers/special/sensors/mpu6050.html
+++ b/content/docs/latest/components/drivers/special/sensors/mpu6050.html
@@ -299,26 +299,59 @@ topics to appear under <code class="docutils literal
notranslate"><span class="p
<p>Where <code class="docutils literal notranslate"><span
class="pre">n</span></code> is the device number passed during device
registration (e.g., 0).</p>
<div class="highlight-c notranslate"><div
class="highlight"><pre><span></span><span class="cm">/* Example uORB sensor
registration on I2C bus 0 at default address 0x68 */</span>
-<span class="kt">int</span><span class="w"> </span><span
class="n">err</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">mpu6050_register</span><span
class="p">(</span><span class="mi">0</span><span class="p">,</span><span
class="w"> </span><span class="n">i2c_master</span><span
class="p">,</span><span class="w"> </span><span
class="n">MPU6050_ADDR_LOW</span><span class="p">);</span>
+<span class="kt">int</span><span class="w"> </span><span
class="n">err</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">mpu6050_register</span><span
class="p">(</span><span class="mi">0</span><span class="p">,</span><span
class="w"> </span><span class="n">i2c_master</span><span
class="p">,</span><span class="w"> </span><span
class="n">MPU6050_ADDR_LOW</span><span class="p">,</span><span class="w">
</span><span class="nb">NULL</span><span class [...]
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span
class="n">err</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">syslog</span><span
class="p">(</span><span class="n">LOG_ERR</span><span class="p">,</span><span
class="w"> </span><span class="s">"Failed to register MPU6050:
%d</span><span class="se">\n</span><span class="s">"</span><span
class="p">,</span><span class="w"> </span><span class="n">err</span><span
class="p">);</span>
<span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
+<p>The device samples at 100 Hz.</p>
+</section>
+<section id="acquisition-modes">
+<h2>Acquisition Modes<a class="headerlink" href="#acquisition-modes"
title="Permalink to this heading"></a></h2>
+<p>The driver reads the device on demand by default: a sample is taken when the
+application reads the topic, and is timestamped at that moment.</p>
+<p>With <code class="docutils literal notranslate"><span
class="pre">CONFIG_SENSORS_MPU6050_INT</span></code> the device drives the
acquisition instead,
+through its data ready interrupt. Samples are then timestamped when they were
+measured rather than when they were asked for, and both topics are published
+from a single read, so accelerometer and gyroscope share one timestamp. This
+requires the INT pin to be wired, and the board to pass a
+<code class="docutils literal notranslate"><span class="pre">struct</span>
<span class="pre">mpu6050_config_s</span></code> whose <code class="docutils
literal notranslate"><span class="pre">attach</span></code> member connects
that pin to the
+driver:</p>
+<div class="highlight-c notranslate"><div
class="highlight"><pre><span></span><span class="k">static</span><span
class="w"> </span><span class="kt">int</span><span class="w"> </span><span
class="nf">board_mpu6050_attach</span><span class="p">(</span><span
class="n">FAR</span><span class="w"> </span><span class="k">const</span><span
class="w"> </span><span class="k">struct</span><span class="w"> </span><span
class="nc">mpu6050_config_s</span><span class="w"> </span><span
class="o">*</span [...]
+<span class="w"> </span><span
class="n">xcpt_t</span><span class="w"> </span><span class="n">isr</span><span
class="p">,</span><span class="w"> </span><span class="n">FAR</span><span
class="w"> </span><span class="kt">void</span><span class="w"> </span><span
class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+<span class="w"> </span><span class="cm">/* Configure the GPIO for a rising
edge and attach isr to it */</span>
+<span class="p">}</span>
+
+<span class="k">static</span><span class="w"> </span><span
class="k">const</span><span class="w"> </span><span
class="k">struct</span><span class="w"> </span><span
class="nc">mpu6050_config_s</span><span class="w"> </span><span
class="n">g_mpu6050_config</span><span class="w"> </span><span
class="o">=</span>
+<span class="p">{</span>
+<span class="w"> </span><span class="p">.</span><span
class="n">attach</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">board_mpu6050_attach</span><span
class="p">,</span>
+<span class="p">};</span>
+
+<span class="kt">int</span><span class="w"> </span><span
class="n">err</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">mpu6050_register</span><span
class="p">(</span><span class="mi">0</span><span class="p">,</span><span
class="w"> </span><span class="n">i2c_master</span><span
class="p">,</span><span class="w"> </span><span
class="n">MPU6050_ADDR_LOW</span><span class="p">,</span>
+<span class="w"> </span><span
class="o">&</span><span class="n">g_mpu6050_config</span><span
class="p">);</span>
+</pre></div>
+</div>
+<p>Registration fails with <code class="docutils literal notranslate"><span
class="pre">-EINVAL</span></code> if the option is enabled and no <code
class="docutils literal notranslate"><span class="pre">attach</span></code>
+is supplied, since the interrupt is the only source of samples in that
build.</p>
</section>
<section id="configuration-options">
<h2>Configuration Options<a class="headerlink" href="#configuration-options"
title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span
class="pre">CONFIG_SENSORS_MPU6050</span></code> - Enables uORB driver support
for the InvenSense MPU6050 6-axis MotionTracker over I2C.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">CONFIG_SENSORS_MPU6050_INT</span></code> - Takes samples from the
data ready interrupt instead of reading the device on demand. Requires board
support, see <a class="reference internal"
href="#acquisition-modes">Acquisition Modes</a>.</p></li>
</ul>
</section>
<section id="supported-operations">
<h2>Supported Operations<a class="headerlink" href="#supported-operations"
title="Permalink to this heading"></a></h2>
-<p>The MPU6050 uORB driver supports standard sensor operations
(<cite>activate</cite>, <cite>fetch</cite>,
-<cite>set_interval</cite>, <cite>batch</cite>, and <cite>control</cite>). It
acquires simultaneous 3-axis accelerometer
-and 3-axis gyroscope samples, applies appropriate scale conversions, and
publishes them
-to their respective uORB topics.</p>
+<p>The MPU6050 uORB driver supports standard sensor operations
(<cite>activate</cite>,
+<cite>set_interval</cite>, <cite>batch</cite>, and <cite>control</cite>), plus
<cite>fetch</cite> when reading on demand.
+An instance provides either <cite>fetch</cite> or interrupt driven delivery,
never both.
+It acquires simultaneous 3-axis accelerometer and 3-axis gyroscope samples,
+applies appropriate scale conversions, and publishes them to their respective
+uORB topics.</p>
<section id="example-usage-uorb-listener">
<h3>Example Usage (<cite>uorb_listener</cite>)<a class="headerlink"
href="#example-usage-uorb-listener" title="Permalink to this heading"></a></h3>
<p>Once registered on target hardware, the MPU6050 topics can be verified
directly from the
diff --git a/content/docs/latest/guides/fully_linked_elf.html
b/content/docs/latest/guides/fully_linked_elf.html
index b11871181c..3d858ea99f 100644
--- a/content/docs/latest/guides/fully_linked_elf.html
+++ b/content/docs/latest/guides/fully_linked_elf.html
@@ -487,7 +487,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="03ee3c94-fc1a-4c12-8d4c-d71711da9e21"
name="03ee3c94-fc1a-4c12-8d4c-d71711da9e21" type="checkbox"><label
class="sphinx_collapse__label" for="03ee3c94-fc1a-4c12-8d4c-d71711da9e21"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="7b020c9f-4c0c-4a31-990d-1ae73fe8c4ca"
name="7b020c9f-4c0c-4a31-990d-1ae73fe8c4ca" type="checkbox"><label
class="sphinx_collapse__label" for="7b020c9f-4c0c-4a31-990d-1ae73fe8c4ca"><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 b38e5f0868..5f9c9f0d9e 100644
--- a/content/docs/latest/guides/partially_linked_elf.html
+++ b/content/docs/latest/guides/partially_linked_elf.html
@@ -513,7 +513,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="12463e78-515e-4959-a850-57dbb5a67866"
name="12463e78-515e-4959-a850-57dbb5a67866" type="checkbox"><label
class="sphinx_collapse__label" for="12463e78-515e-4959-a850-57dbb5a67866"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="17259560-cd45-42ba-a0e4-9b1305e4824f"
name="17259560-cd45-42ba-a0e4-9b1305e4824f" type="checkbox"><label
class="sphinx_collapse__label" for="17259560-cd45-42ba-a0e4-9b1305e4824f"><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/implementation/index.html
b/content/docs/latest/implementation/index.html
index f1d2f4a448..f0e8783a76 100644
--- a/content/docs/latest/implementation/index.html
+++ b/content/docs/latest/implementation/index.html
@@ -318,6 +318,7 @@
<li class="toctree-l2"><a class="reference internal"
href="kernel_modules_vs_shared_libraries.html#shared-libraries">Shared
Libraries</a></li>
<li class="toctree-l2"><a class="reference internal"
href="kernel_modules_vs_shared_libraries.html#flat-build">FLAT Build</a></li>
<li class="toctree-l2"><a class="reference internal"
href="kernel_modules_vs_shared_libraries.html#protected-build">PROTECTED
Build</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="kernel_modules_vs_shared_libraries.html#opening-a-library-more-than-once">Opening
a Library More Than Once</a></li>
<li class="toctree-l2"><a class="reference internal"
href="kernel_modules_vs_shared_libraries.html#better-flat-and-protected-mode-shared-libraries">Better
FLAT and PROTECTED Mode Shared Libraries</a></li>
<li class="toctree-l2"><a class="reference internal"
href="kernel_modules_vs_shared_libraries.html#kernel-build">KERNEL
Build</a></li>
</ul>
diff --git
a/content/docs/latest/implementation/kernel_modules_vs_shared_libraries.html
b/content/docs/latest/implementation/kernel_modules_vs_shared_libraries.html
index 4226853a84..90443458b2 100644
--- a/content/docs/latest/implementation/kernel_modules_vs_shared_libraries.html
+++ b/content/docs/latest/implementation/kernel_modules_vs_shared_libraries.html
@@ -159,6 +159,7 @@
<li class="toctree-l3"><a class="reference internal"
href="#shared-libraries">Shared Libraries</a></li>
<li class="toctree-l3"><a class="reference internal" href="#flat-build">FLAT
Build</a></li>
<li class="toctree-l3"><a class="reference internal"
href="#protected-build">PROTECTED Build</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="#opening-a-library-more-than-once">Opening a Library More Than
Once</a></li>
<li class="toctree-l3"><a class="reference internal"
href="#better-flat-and-protected-mode-shared-libraries">Better FLAT and
PROTECTED Mode Shared Libraries</a></li>
<li class="toctree-l3"><a class="reference internal"
href="#kernel-build">KERNEL Build</a></li>
</ul>
@@ -280,12 +281,15 @@ in this case? Certainly a kernel module meets all of the
requirements
of a shared library in that environment.
In this case kernel modules really only differ from shared
libraries in their usage semantics:</p>
-<p>For the FLAT build, I have added the standard <code class="docutils literal
notranslate"><span class="pre">include/dllfcn.h</span></code>
-and have implemented the FLAT shared library support as a thin wrapper
-around the kernel module support:</p>
+<p>For the FLAT build, the standard <code class="docutils literal
notranslate"><span class="pre">include/dlfcn.h</span></code> interfaces are
+implemented as a thin wrapper around the same module library that the kernel
+module support uses:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span
class="pre">dlopen()</span></code> maps to <code class="docutils literal
notranslate"><span class="pre">insmod()</span></code>.</p></li>
-<li><p><code class="docutils literal notranslate"><span
class="pre">dlclose()</span></code> maps to <code class="docutils literal
notranslate"><span class="pre">rmmod()</span></code>.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">dlopen()</span></code> loads the library, or takes an additional
reference on it if
+it is already loaded, and returns a handle to it. See
+<a class="reference internal" href="#opening-a-library-more-than-once">Opening
a Library More Than Once</a>.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">dlclose()</span></code> releases one reference. The library is
unloaded, as
+<code class="docutils literal notranslate"><span
class="pre">rmmod()</span></code> would, only when the last handle is
closed.</p></li>
<li><p><code class="docutils literal notranslate"><span
class="pre">dlsym()</span></code> maps to <code class="docutils literal
notranslate"><span class="pre">modsym()</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span
class="pre">dlerror()</span></code> is only a stub at the present time.</p></li>
</ul>
@@ -308,6 +312,39 @@ library at libc/modlib.</p>
<p>The shared library functions no longer call the kernel module logic but
rather
implement their one top-level management logic using the lower-level routines
in the module library.</p>
+<p>The user space copy of the module library keeps the name of each loaded
+library whenever <code class="docutils literal notranslate"><span
class="pre">CONFIG_LIBC_DLFCN</span></code> is enabled, since the name is the
only
+way to tell that a library is already loaded. This costs <code class="docutils
literal notranslate"><span class="pre">NAME_MAX</span></code> bytes
+per loaded library, but it makes <code class="docutils literal
notranslate"><span class="pre">dlopen()</span></code> behave exactly as it does
in the
+FLAT build.</p>
+</section>
+<section id="opening-a-library-more-than-once">
+<h2>Opening a Library More Than Once<a class="headerlink"
href="#opening-a-library-more-than-once" title="Permalink to this
heading"></a></h2>
+<p>In the FLAT and PROTECTED builds, <code class="docutils literal
notranslate"><span class="pre">dlopen()</span></code> of a library that is
already
+loaded does not load a second copy and does not fail. It returns a handle to
+the library that is already loaded and takes an additional reference on it.
+Each successful <code class="docutils literal notranslate"><span
class="pre">dlopen()</span></code> must be matched by a <code class="docutils
literal notranslate"><span class="pre">dlclose()</span></code>; the library
+is unloaded only when the last handle is closed. Up to 255 handles may be
+outstanding on one library; beyond that <code class="docutils literal
notranslate"><span class="pre">dlopen()</span></code> fails with <code
class="docutils literal notranslate"><span class="pre">EMFILE</span></code>.</p>
+<p>Some consequences worth keeping in mind:</p>
+<ul class="simple">
+<li><p>A library is identified by the <em>basename</em> of the path passed to
+<code class="docutils literal notranslate"><span
class="pre">dlopen()</span></code>. Two files with the same basename in
different directories
+are treated as the same library, and the second <code class="docutils literal
notranslate"><span class="pre">dlopen()</span></code> will return
+the first one.</p></li>
+<li><p>There is only one instance of the library’s <code class="docutils
literal notranslate"><span class="pre">.data</span></code> and <code
class="docutils literal notranslate"><span class="pre">.bss</span></code>.
Global
+and static data are shared by every user of the library, and by every task
+group in the system.</p></li>
+<li><p>Constructors in <code class="docutils literal notranslate"><span
class="pre">.init_array</span></code> run once, when the library is first
loaded,
+and destructors in <code class="docutils literal notranslate"><span
class="pre">.fini_array</span></code> run once, when the last handle is
+closed. They do not run per <code class="docutils literal notranslate"><span
class="pre">dlopen()</span></code>/<code class="docutils literal
notranslate"><span class="pre">dlclose()</span></code> pair.</p></li>
+<li><p>Symbols obtained with <code class="docutils literal notranslate"><span
class="pre">dlsym()</span></code> remain valid until the last handle is
+closed, not until the caller’s own handle is closed.</p></li>
+</ul>
+<p>Kernel modules deliberately behave differently: <code class="docutils
literal notranslate"><span class="pre">insmod()</span></code> fails with
+<code class="docutils literal notranslate"><span
class="pre">EEXIST</span></code> if a module of that name is already installed,
and <code class="docutils literal notranslate"><span
class="pre">rmmod()</span></code>
+removes it immediately. A kernel module is a singleton and is not reference
+counted.</p>
</section>
<section id="better-flat-and-protected-mode-shared-libraries">
<h2>Better FLAT and PROTECTED Mode Shared Libraries<a class="headerlink"
href="#better-flat-and-protected-mode-shared-libraries" title="Permalink to
this heading"></a></h2>
@@ -317,7 +354,7 @@ for each NuttX task group.</p>
<p>A task group is the moral equivalent of a Unix process.
That is how a shared library would have to work in uClinux, for example.
But that would be a substantial effort! For example, since each
-<code class="docutils literal notranslate"><span
class="pre">.bss</span></code>/<code class="docutils literal notranslate"><span
class="pre">.data</span></code> would lie at a different physical addres,
+<code class="docutils literal notranslate"><span
class="pre">.bss</span></code>/<code class="docutils literal notranslate"><span
class="pre">.data</span></code> would lie at a different physical address,
the <code class="docutils literal notranslate"><span
class="pre">.text</span></code> section logic would need support
Position-Independent-Data (PID).
Embedded PID support, however, is pretty much broken on all current GCC
@@ -370,7 +407,10 @@ are loaded into memory before the programs <code
class="docutils literal notrans
<p class="admonition-title">Note</p>
<p>There is not yet any shared library support in the KERNEL build mode.
This would be quite a large effort and not on the plan of record
-at the present time.</p>
+at the present time.
+<code class="docutils literal notranslate"><span
class="pre">dlopen()</span></code> always fails and returns <code
class="docutils literal notranslate"><span class="pre">NULL</span></code> in
the KERNEL build,
+so none of the reference counting behaviour described above applies
+there.</p>
</div>
</section>
</section>
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index 6095576257..5ed678a240 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -195,7 +195,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: 04 August 26 at 00:52</p>
+<p>Last Updated: 05 August 26 at 00:51</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 f77402f02e..448ba0f81c 100644
Binary files a/content/docs/latest/objects.inv and
b/content/docs/latest/objects.inv differ
diff --git
a/content/docs/latest/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.html
b/content/docs/latest/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.html
index edf0c938e4..d3a0df5e91 100644
---
a/content/docs/latest/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.html
+++
b/content/docs/latest/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.html
@@ -1750,6 +1750,153 @@ console hands over a whole line at once. The keyboard
upper half overwrites
the oldest event when the buffer is full, so a line typed at the console
would arrive with its beginning silently missing.</p>
</section>
+<section id="nxdoom">
+<h3>nxdoom<a class="headerlink" href="#nxdoom" title="Permalink to this
heading"></a></h3>
+<p><strong>Purpose:</strong> runs <code class="docutils literal
notranslate"><span class="pre">NXDoom</span></code>, the NuttX port of
Chocolate DOOM, on the board’s
+LCD, played with a USB HID keyboard and reading the game data from the microSD
+card. It brings together the LTDC framebuffer, the OTG FS USB host and the
+SDMMC peripheral, and uses the external SDRAM for the game’s zone memory.</p>
+<figure class="align-center" id="id1" style="width: 60%">
+<img alt="DOOM running on the LINUM-STM32H753BI LCD"
src="../../../../../_images/linum-stm32h753bi-nxdoom.jpg" />
+<figcaption>
+<p><span class="caption-text">DOOM running on the board’s 1024x600
LCD</span><a class="headerlink" href="#id1" title="Permalink to this
image"></a></p>
+</figcaption>
+</figure>
+<p>DOOM renders to a 320x200 8-bit paletted buffer. This configuration
stretches
+that over the whole 1024x600 panel (<code class="docutils literal
notranslate"><span class="pre">CONFIG_GAMES_NXDOOM_FILLSCREEN</span></code>) and
+runs the LTDC layer in L8 (<code class="docutils literal notranslate"><span
class="pre">CONFIG_STM32_LTDC_L1_L8</span></code> with
+<code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_FB_CMAP</span></code>), so the palette indices
are written to the
+framebuffer unconverted and the display applies the palette from its colour
+map as it scans out. That keeps the conversion off the CPU and
+halves the amount of data written per frame.</p>
+<p>Two further options matter on this board, both because the framebuffer and
the
+heap are in external SDRAM: <code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_ROWSTAGE</span></code> builds each row
+in internal RAM so the SDRAM only sees burst copies, and
+<code class="docutils literal notranslate"><span
class="pre">CONFIG_GAMES_NXDOOM_STATIC_SCRNBUF</span></code> keeps the buffer
DOOM renders into out
+of the SDRAM altogether. Between them they are worth 2.7 times the frame
rate.</p>
+<p>The game needs about 4 MiB of contiguous memory for its zone. That comes
from
+the SDRAM region, which is 6 MiB when the LTDC is enabled (the last 2 MiB of
+the 8 MiB SDRAM is reserved for the framebuffer).</p>
+<p><strong>Requirements:</strong></p>
+<ul class="simple">
+<li><p>A microSD card, formatted as FAT, holding a DOOM IWAD. The shareware
+<code class="docutils literal notranslate"><span
class="pre">doom1.wad</span></code> and <code class="docutils literal
notranslate"><span class="pre">freedoom1.wad</span></code> both work, as do the
commercial IWADs.</p></li>
+<li><p>A USB HID keyboard on the OTG FS service connector.</p></li>
+</ul>
+<p><strong>Build and flash:</strong></p>
+<div class="highlight-console notranslate"><div
class="highlight"><pre><span></span><span class="gp">$
</span>./tools/configure.sh<span class="w"> </span>linum-stm32h753bi:nxdoom
+<span class="gp">$ </span>make<span class="w"> </span>-j
+</pre></div>
+</div>
+<p>Flash the resulting <code class="docutils literal notranslate"><span
class="pre">nuttx.bin</span></code> to the board.</p>
+<p><strong>How to test:</strong> copy the IWAD to the SD card, plug the card
and the keyboard,
+reset the board and check that all three devices came up:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>nsh> ls /dev
+/dev:
+ console
+ fb0
+ kbda
+ mmcsd0
+ null
+ rtc0
+ ttyS0
+ zero
+</pre></div>
+</div>
+<p>Mount the card and start the game. <code class="docutils literal
notranslate"><span class="pre">nxdoom</span></code> looks for the IWAD in the
+current directory, so either <code class="docutils literal notranslate"><span
class="pre">cd</span></code> to the mount point first or point it at
+the file with <code class="docutils literal notranslate"><span
class="pre">-iwad</span></code>:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>nsh> mount -t vfat /dev/mmcsd0 /mnt
+nsh> nxdoom -iwad /mnt/doom1.wad
+ NXDoom v0.0.0
+z_init: Init zone memory allocation daemon.
+zone memory: Using native C allocator.
+Using /mnt/ for configuration and saves
+v_init: allocate screens.
+m_load_defaults: Load system defaults.
+saving config in /mnt/default.cfg
+W_Init: Init WADfiles.
+ adding /mnt/doom1.wad
+=========================================================================
+ DOOM Shareware
+=========================================================================
+ NXDoom is free software, covered by the GNU General Public
+ License. There is NO warranty; not even for MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. You are welcome to change and distribute
+ copies under certain conditions. See the source for more information.
+=========================================================================
+i_init: Setting up machine state.
+m_init: Init miscellaneous info.
+r_init: Init DOOM refresh daemon - [...................]
+p_init: Init Playloop state.
+d_check_net_game: Checking network game status.
+startskill 2 deathmatch: 0 startmap: 1 startepisode: 1
+player 1 of 1 (1 nodes)
+Emulating the behavior of the 'Doom 1.9' executable.
+hu_init: Setting up heads up display.
+st_init: Init status bar.
+</pre></div>
+</div>
+<p><strong>Copying the IWAD with zmodem:</strong> the configuration also
enables the <code class="docutils literal notranslate"><span
class="pre">rz</span></code>
+and <code class="docutils literal notranslate"><span
class="pre">sz</span></code> commands, so the IWAD can be copied over the
serial console
+instead of moving the SD card to a card reader.
+<code class="docutils literal notranslate"><span
class="pre">CONFIG_SYSTEM_ZMODEM_MOUNTPOINT</span></code> is set to <code
class="docutils literal notranslate"><span class="pre">/mnt</span></code>, so a
received file
+lands on the SD card:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>nsh> mount -t vfat /dev/mmcsd0 /mnt
+nsh> rz
+</pre></div>
+</div>
+<p>and, from the host, with the console closed in any terminal program:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>$ sz -b --zmodem -w 1024 doom1.wad <
/dev/ttyACM0 > /dev/ttyACM0
+</pre></div>
+</div>
+<p>Note that USART1 has no RTS/CTS on this board, so there is no hardware flow
+control to throttle the sender. <code class="docutils literal
notranslate"><span class="pre">CONFIG_USART1_RXBUFSIZE</span></code> is raised
to 4096
+to compensate, and the <code class="docutils literal notranslate"><span
class="pre">-w</span></code> window above makes the host wait for
+acknowledgements. Even so this runs at roughly 10 KiB/s, so a 4 MiB IWAD takes
+about seven minutes; a card reader is much faster if one is available.</p>
+<p>The game runs on the LCD and is played from the USB keyboard: arrow keys to
+move, Ctrl to fire, Shift to run, Alt to strafe, Space to open doors and Esc
+for the menu. Configuration and saved games are written to <code
class="docutils literal notranslate"><span class="pre">/mnt</span></code>, so
the
+card must be mounted read/write.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>The game needs key <em>release</em> events, without which a movement key
would
+never stop being held down. A keyboard device reports them by default,
+so nothing has to be enabled for it.</p>
+<p>Do not turn on <code class="docutils literal notranslate"><span
class="pre">CONFIG_INPUT_KEYBOARD_BYTESTREAM</span></code> for this
+configuration. That makes the device deliver the codec byte stream
+instead of events, and the byte stream encodes presses only: every
+release is dropped, and the player would keep walking after the key is
+let go.</p>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><code class="docutils literal notranslate"><span
class="pre">CONFIG_HIDKBD_NOGETREPORT</span></code> (and the <code
class="docutils literal notranslate"><span
class="pre">CONFIG_USBHOST_ASYNCH</span></code> it needs)
+is required. By default the HID keyboard driver asks the keyboard for its
+input report over the control pipe with GET_REPORT. Many keyboards accept
+that request but always answer with an empty report, and only ever deliver
+key data on their interrupt IN endpoint. The symptom is a keyboard that
+enumerates as <code class="docutils literal notranslate"><span
class="pre">/dev/kbda</span></code> and reports no error at all, while no key is
+ever seen. With this option the driver reads the interrupt endpoint
+instead.</p>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p><code class="docutils literal notranslate"><span
class="pre">CONFIG_FAT_FORCE_INDIRECT</span></code> is required. Without it the
FAT layer reads
+whole sectors straight into the caller’s buffer, and the SDMMC IDMA cannot
+reach the caller’s buffer when it lives in external SDRAM. DOOM reads its
+lumps into <code class="docutils literal notranslate"><span
class="pre">malloc()</span></code>ed memory, and once the internal SRAM regions
fill
+up those allocations come from SDRAM, so the failure appears part way
+through startup rather than immediately:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>r_init: Init DOOM refresh daemon - [
]w_read_lump: only read 0 of 5192 on lump 1070
+</pre></div>
+</div>
+<p>Forcing indirect transfers routes every read through the DMA-capable
+sector buffer that <code class="docutils literal notranslate"><span
class="pre">CONFIG_FAT_DMAMEMORY</span></code> allocates, at the cost of one
+extra copy per sector.</p>
+</div>
+</section>
<section id="tone">
<h3>tone<a class="headerlink" href="#tone" title="Permalink to this
heading"></a></h3>
<p>This example demonstrates how to use PWM4 and Timer17 to play music using
the Tone library and the board’s buzzer.</p>
diff --git a/content/docs/latest/searchindex.js
b/content/docs/latest/searchindex.js
index 1feba94351..2927564705 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm", "_tags/arch-arm64",
"_tags/arch-armv8m", "_tags/arch-avr", "_tags/arch-cm33", "_tags/arch-example",
"_tags/arch-mips", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/arch-xtensa", "_tags/chip-a527",
"_tags/chip-a64", "_tags/chip-am62x", "_tags/chip-am67", "_tags/chip-at32uc3",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega128",
"_tags/chip-atmega1284p", "_tags/chip-atmega2560", "_tags/ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm", "_tags/arch-arm64",
"_tags/arch-armv8m", "_tags/arch-avr", "_tags/arch-cm33", "_tags/arch-example",
"_tags/arch-mips", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/arch-xtensa", "_tags/chip-a527",
"_tags/chip-a64", "_tags/chip-am62x", "_tags/chip-am67", "_tags/chip-at32uc3",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega128",
"_tags/chip-atmega1284p", "_tags/chip-atmega2560", "_tags/ [...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index b382fecee8..92eba0ae58 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>Tue, 04 Aug 2026 00:54:02 +0000</pubDate>
- <lastBuildDate>Tue, 04 Aug 2026 00:54:02 +0000</lastBuildDate>
+ <pubDate>Wed, 05 Aug 2026 00:53:03 +0000</pubDate>
+ <lastBuildDate>Wed, 05 Aug 2026 00:53:03 +0000</lastBuildDate>
<generator>Jekyll v4.4.1</generator>
<item>