This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/nuttx-website.git
The following commit(s) were added to refs/heads/asf-site by this push: new 327d41095 Publishing web: 405a7126bab3fbbeef1bb95fabd1561c86029fc1 docs: ac3b0adb42cc0bb53a44d4052aaa425464dd83a2 327d41095 is described below commit 327d410958642d14ba2328b9d95decf2054786dc Author: raiden00pl <raide...@railab.me> AuthorDate: Thu Mar 13 00:28:52 2025 +0000 Publishing web: 405a7126bab3fbbeef1bb95fabd1561c86029fc1 docs: ac3b0adb42cc0bb53a44d4052aaa425464dd83a2 --- 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.2.0/index.html | 2 +- content/docs/12.2.0/searchindex.js | 2 +- content/docs/12.2.1/index.html | 2 +- .../xtensa/esp32/boards/esp32-audio-kit/index.html | 2 +- .../xtensa/esp32/boards/esp32-devkitc/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 +- .../applications/boot/nxboot/index.rst.txt | 122 ++++++++++++------- .../applications/system/uorb/index.rst.txt | 2 +- .../latest/applications/boot/nxboot/index.html | 129 ++++++++++++++------- .../latest/applications/system/uorb/index.html | 6 +- content/docs/latest/genindex.html | 8 +- content/docs/latest/index.html | 2 +- content/docs/latest/objects.inv | Bin 140397 -> 140408 bytes content/docs/latest/searchindex.js | 2 +- content/feed.xml | 4 +- 39 files changed, 207 insertions(+), 128 deletions(-) diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html index 61091a2b3..95d605d1a 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: 12 March 25 at 00:13</p> +<p>Last Updated: 13 March 25 at 00:14</p> <div class="toctree-wrapper compound"> <p class="caption"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html index 0574bac1c..d1614c987 100644 --- a/content/docs/10.0.1/index.html +++ b/content/docs/10.0.1/index.html @@ -241,7 +241,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: 12 March 25 at 00:14</p> +<p>Last Updated: 13 March 25 at 00:14</p> <div class="toctree-wrapper compound"> <p class="caption"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html index c35aeef8d..681282e3f 100644 --- a/content/docs/10.1.0/index.html +++ b/content/docs/10.1.0/index.html @@ -241,7 +241,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: 12 March 25 at 00:14</p> +<p>Last Updated: 13 March 25 at 00:14</p> <div class="toctree-wrapper compound"> <p class="caption"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/10.2.0/index.html b/content/docs/10.2.0/index.html index 1ad3a986e..ef43cf4c1 100644 --- a/content/docs/10.2.0/index.html +++ b/content/docs/10.2.0/index.html @@ -242,7 +242,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: 12 March 25 at 00:14</p> +<p>Last Updated: 13 March 25 at 00:15</p> <div class="toctree-wrapper compound"> <p class="caption"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/10.3.0/index.html b/content/docs/10.3.0/index.html index 1ad3a986e..ef43cf4c1 100644 --- a/content/docs/10.3.0/index.html +++ b/content/docs/10.3.0/index.html @@ -242,7 +242,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: 12 March 25 at 00:14</p> +<p>Last Updated: 13 March 25 at 00:15</p> <div class="toctree-wrapper compound"> <p class="caption"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/11.0.0/index.html b/content/docs/11.0.0/index.html index bbad8bcc7..ef43cf4c1 100644 --- a/content/docs/11.0.0/index.html +++ b/content/docs/11.0.0/index.html @@ -242,7 +242,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: 12 March 25 at 00:15</p> +<p>Last Updated: 13 March 25 at 00:15</p> <div class="toctree-wrapper compound"> <p class="caption"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.0.0/index.html b/content/docs/12.0.0/index.html index 5aa0ffd5b..08d2931e1 100644 --- a/content/docs/12.0.0/index.html +++ b/content/docs/12.0.0/index.html @@ -167,7 +167,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: 12 March 25 at 00:15</p> +<p>Last Updated: 13 March 25 at 00:15</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.0.0/searchindex.js b/content/docs/12.0.0/searchindex.js index 90feec240..d581f775f 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 a86eac7e5..50969de60 100644 --- a/content/docs/12.1.0/index.html +++ b/content/docs/12.1.0/index.html @@ -167,7 +167,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: 12 March 25 at 00:16</p> +<p>Last Updated: 13 March 25 at 00:16</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.1.0/searchindex.js b/content/docs/12.1.0/searchindex.js index 5898d61ae..66c78b54c 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.2.0/index.html b/content/docs/12.2.0/index.html index 25bc4fa1c..438c4a1fc 100644 --- a/content/docs/12.2.0/index.html +++ b/content/docs/12.2.0/index.html @@ -168,7 +168,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: 12 March 25 at 00:16</p> +<p>Last Updated: 13 March 25 at 00:16</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.2.0/searchindex.js b/content/docs/12.2.0/searchindex.js index 1c2834194..76a3a83b0 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 25bc4fa1c..5c8aa2825 100644 --- a/content/docs/12.2.1/index.html +++ b/content/docs/12.2.1/index.html @@ -168,7 +168,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: 12 March 25 at 00:16</p> +<p>Last Updated: 13 March 25 at 00:17</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html index 98aa78ecb..e07ca20c1 100644 --- a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html +++ b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html @@ -349,7 +349,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.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html index 874b7c3a5..09730ba82 100644 --- a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html +++ b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html @@ -446,7 +446,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.1/searchindex.js b/content/docs/12.2.1/searchindex.js index d0e5b7c68..8ce767fb0 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 be49998f9..e7498e5e6 100644 --- a/content/docs/12.3.0/index.html +++ b/content/docs/12.3.0/index.html @@ -168,7 +168,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: 12 March 25 at 00:17</p> +<p>Last Updated: 13 March 25 at 00:17</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.3.0/searchindex.js b/content/docs/12.3.0/searchindex.js index ce8d1c543..bf92c8a03 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 4f997f282..47277c554 100644 --- a/content/docs/12.4.0/index.html +++ b/content/docs/12.4.0/index.html @@ -175,7 +175,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: 12 March 25 at 00:18</p> +<p>Last Updated: 13 March 25 at 00:18</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 3b3cb08a2..30d161a9c 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 75f8ec162..ea4defca1 100644 --- a/content/docs/12.5.0/index.html +++ b/content/docs/12.5.0/index.html @@ -175,7 +175,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: 12 March 25 at 00:19</p> +<p>Last Updated: 13 March 25 at 00:19</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.5.0/searchindex.js b/content/docs/12.5.0/searchindex.js index 7a76cfd6e..20b8bd98d 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 fc5aed404..001974eb8 100644 --- a/content/docs/12.5.1/index.html +++ b/content/docs/12.5.1/index.html @@ -175,7 +175,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: 12 March 25 at 00:20</p> +<p>Last Updated: 13 March 25 at 00:20</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.5.1/searchindex.js b/content/docs/12.5.1/searchindex.js index 8a86d2f9c..f0eb04fde 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 041cb2b24..4b43b4153 100644 --- a/content/docs/12.6.0/index.html +++ b/content/docs/12.6.0/index.html @@ -176,7 +176,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: 12 March 25 at 00:22</p> +<p>Last Updated: 13 March 25 at 00:22</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 5a0d99280..d350b5d40 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 53aa8352e..6d72c4acf 100644 --- a/content/docs/12.7.0/index.html +++ b/content/docs/12.7.0/index.html @@ -175,7 +175,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: 12 March 25 at 00:23</p> +<p>Last Updated: 13 March 25 at 00:23</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/12.7.0/searchindex.js b/content/docs/12.7.0/searchindex.js index b51953db1..7d6353111 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 8a775f469..a4e03c43d 100644 --- a/content/docs/12.8.0/index.html +++ b/content/docs/12.8.0/index.html @@ -175,7 +175,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: 12 March 25 at 00:25</p> +<p>Last Updated: 13 March 25 at 00:25</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 c60034101..25f0c3911 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/latest/_sources/applications/boot/nxboot/index.rst.txt b/content/docs/latest/_sources/applications/boot/nxboot/index.rst.txt index 2fc0e9cb7..f1baba3e5 100644 --- a/content/docs/latest/_sources/applications/boot/nxboot/index.rst.txt +++ b/content/docs/latest/_sources/applications/boot/nxboot/index.rst.txt @@ -6,13 +6,13 @@ NuttX Bootloader (nxboot) can be used to provide update and recovery capabilities for NuttX based devices. The bootloader implements an algorithm that uses three partitions/areas: primary, secondary and tertiary. Primary area is used to run the image and thus is usually -located in program memory. Secondary and tertiary areas are used +located in a program memory. Secondary and tertiary areas are used to store update image or recovery image and can be located on external flash memory for example. -Please note that this bootloader is new and it is possible some of its -characteristics might be changed/enhanced/fix as it is further used and -tested. These might include slight changes in API and image format. +The images for the bootloader have version located in their headers. Note +that bootloader/image characteristics may differ for different version +and a portable application should take this into account. Algorithm Description --------------------- @@ -29,38 +29,38 @@ wear while keeping the recovery/revert possibility. Not confirmed image is reverted to recovery image if reboot occurs. The bootable image consists of a header :c:struct:`nxboot_img_header` -containing magic, size of the image excluding the header, CRC32 of the -image excluding the header and firmware version. The header is located -prior to the image itself and has a configurable size -``CONFIG_NXBOOT_HEADER_SIZE``. One erase page is also reserved at the -end of the partition (the entire partition, not the image!). This page -has two write blocks/pages with each one holding a flag. The first page -from the end holds image confirmation flag, the second one holds the flag -informing this image was already updated. These flags are written by the -bootloader and are used to detect which partition is update/recovery -and whether the image is confirmed or not. - -There are two variants of bootable image. The first is the image that is -expected to be flashed directly into the primary area via physical programmer -as STlink or JTAG. This image does not use CRC32 for validation and does -not contain tail with the flags described above. It has an inverted -magic value compared to the update image. This should not be used -for OTA update, but only for the initial upload of the software to the -device. - -The update image has a valid precalculated CRC32 and standard magic value. -The image is expected to be uploaded to the board either via programmer -or some protocol (Ethernet, CAN, etc.) to the external flash. The primary -flash can be used as well, but this halts the program execution during write -operations, so it is not recommended if external flash can be used. The -uploaded image is detected by the bootloader during the next boot and update -occurs. The program responsible for uploading the update image to the -partition has to erase the last erase page in this partition to ensure -all flags are unset. +containing magic value, header version, header size, CRC32 of the image +including some parts of the header, size of the image excluding the header, +platform identifier, pointer to extended headers and and firmware version. +The header is located prior to the image itself and has a configurable size +``CONFIG_NXBOOT_HEADER_SIZE``. The CRC is calculated from the entire image +including header except for magic, header version and header size fields. +Extended headers are currently not supported, but the header already has +a reserved space for a pointer to it. + +The image compatible with nxboot bootloader can be uploaded both directly +to the primary area via physical programer as STlink or JTAG and to the +update partition via some external application (over Ethernet, USB, CAN, etc.). +The update and recovery slots can be located in the the primary flash as +well, but this halts the program execution during write operations, so it is +not recommended if external flash can be used. The uploaded image is detected +by the bootloader during the next boot and update occurs. + +Bootloader has an internal magic value that is used to detect updated images. +Once update occurs, the image is copied from update to primary partition with +the internal magic value and the first erase page of the update slot is erased. +The image with internal magic value is considered valid only if its recovery +exists, therefore the image confirmation is done by writing the first erase +page (copying by write page size from primary) back to the update slot. It is +recommended to use :c:func:`nxboot_confirm` API to confirm the image. This +approach wears the first sector of the update partition a bit more, but +avoids image's tails completely and simplifies both internal and API logic. The application can use function :c:func:`nxboot_get_state` to determine what partition is update and recovery and thus where the update image -should be stored. +should be stored. It is also possible to use function :c:func:`nxboot_open_update_partition` +that determines the correct partition for updates and returns the opened +file descriptor. This is a recommended approach as it avoids possible mistakes. Hardware Requirements --------------------- @@ -96,6 +96,11 @@ Following configuration options are available: - ``CONFIG_NXBOOT_HEADER_SIZE``: Size of the image header. Note that this size should be aligned with the program memory write page size! +- ``CONFIG_NXBOOT_PLATFORM_IDENTIFIER```: + 64 bits large platform identifier. This is a unique platform identifier + used by the bootloader to verify whether the image should be run on a + given platform. An update (or even a firmware uploaded via a programmer) + is rejected if the value in image's header doesn't match this option. - ``CONFIG_NXBOOT_BOOTLOADER``: This option builds and links a bootloader application. This application should be an entry function for NuttX. It checks for possible @@ -136,16 +141,13 @@ nxboot compatible image. python3 apps/boot/nxboot/tools/nximage.py \ --version "VERSION" \ --header_size CONFIG_NXBOOT_HEADER_SIZE \ - --primary \ + --identifier CONFIG_NXBOOT_PLATFORM_IDENTIFIER \ nuttx.bin image.img -It takes input parameters ``--version`` with your image's version and -``--header_size`` with the configured size of the header. Option -``--primary`` generates the primary. This option should be used only -for image intended to be flashed directly to program memory (with -flashing tool like STlink). It must not be set for image intended to be used -as update image. The input file is a binary ``nuttx.bin``, output with added -header is ``image.img``. +It takes input parameters ``--version`` with your image's version, +``--header_size`` with the configured size of the header and ``--identifier``. +with the platform identifier. The input file is a binary ``nuttx.bin``, output +with added header is ``image.img``. Image version adheres to `Semantic Versioning 2.0.0 <https://semver.org/spec/v2.0.0.html>`__ without the usage of build metadata. The used format is @@ -166,7 +168,7 @@ Enabling ``CONFIG_BOOT_NXBOOT`` option provides following NXboot API. .. c:struct:: nxboot_img_version .. code-block:: c - #define NXBOOT_HEADER_PRERELEASE_MAXLEN 110 + #define NXBOOT_HEADER_PRERELEASE_MAXLEN 94 struct nxboot_img_version { @@ -180,20 +182,39 @@ Enabling ``CONFIG_BOOT_NXBOOT`` option provides following NXboot API. char pre_release[NXBOOT_HEADER_PRERELEASE_MAXLEN]; }; +.. c:struct:: nxboot_hdr_version +.. code-block:: c + + struct nxboot_hdr_version + { + /* Header major version */ + uint8_t major; + /* Header minor version */ + uint8_t minor; + }; + .. c:struct:: nxboot_img_header .. code-block:: c #define NXBOOT_HEADER_MAGIC 0x534f584e - #define NXBOOT_HEADER_MAGIC_INV 0xaca0abb1 + #define NXBOOT_HEADER_MAGIC_INT 0xaca0abb0 struct nxboot_img_header { /* Header magic */ uint32_t magic; + /* Version of the header */ + struct nxboot_hdr_version hdr_version; + /* Size of the header */ + uint16_t header_size; + /* CRC of the image, exceluding the previous header fields. */ + uint32_t crc; /* Image size (excluding the header) */ uint32_t size; - /* CRC32 of image (excluding the header) */ - uint32_t crc32; + /* Platform identifier */ + uint64_t identifier; + /* Address of optional extended headers */ + uint32_t extd_hdr_ptr; /* Image version */ struct nxboot_img_version img_version; }; @@ -226,6 +247,8 @@ Enabling ``CONFIG_BOOT_NXBOOT`` option provides following NXboot API. int recovery; /* True if recovery image contains valid recovery */ bool recovery_valid; + /* True if image in a primary slot has a recovery (even non valid) */ + bool recovery_present; /* True if primary slot is confirmed */ bool primary_confirmed; /* True if update slot has a valid image */ @@ -243,6 +266,15 @@ Enabling ``CONFIG_BOOT_NXBOOT`` option provides following NXboot API. :return: 0 on success, -1 and sets errno on failure. +.. c:function:: int nxboot_open_update_partition(void) + + Gets the current bootloader state and opens the partition to which an + update image should be stored. It returns the valid file descriptor to + this partition, the user is responsible for writing to it and closing + if afterwards. + + :return: Valid file descriptor on success, -1 and sets errno on failure. + .. c:function:: int nxboot_get_confirm(void) Confirms the image currently located in primary partition and marks diff --git a/content/docs/latest/_sources/applications/system/uorb/index.rst.txt b/content/docs/latest/_sources/applications/system/uorb/index.rst.txt index 59eb963a8..9922a4493 100644 --- a/content/docs/latest/_sources/applications/system/uorb/index.rst.txt +++ b/content/docs/latest/_sources/applications/system/uorb/index.rst.txt @@ -28,7 +28,7 @@ For example, if the accelerometer sensor has a sampling rate of 50Hz and a maximum publication delay of 100ms, the hardware generates an interrupt every 100ms, publishing 5 data points each time (100/(1000/50)). -**Two Tpyes** +**Two Types** ^^^^^^^^^^^^^ Additionally, NuttX categorizes topics into two types: diff --git a/content/docs/latest/applications/boot/nxboot/index.html b/content/docs/latest/applications/boot/nxboot/index.html index a79338130..3315ec076 100644 --- a/content/docs/latest/applications/boot/nxboot/index.html +++ b/content/docs/latest/applications/boot/nxboot/index.html @@ -201,12 +201,12 @@ capabilities for NuttX based devices. The bootloader implements an algorithm that uses three partitions/areas: primary, secondary and tertiary. Primary area is used to run the image and thus is usually -located in program memory. Secondary and tertiary areas are used +located in a program memory. Secondary and tertiary areas are used to store update image or recovery image and can be located on external flash memory for example.</p> -<p>Please note that this bootloader is new and it is possible some of its -characteristics might be changed/enhanced/fix as it is further used and -tested. These might include slight changes in API and image format.</p> +<p>The images for the bootloader have version located in their headers. Note +that bootloader/image characteristics may differ for different version +and a portable application should take this into account.</p> <section id="algorithm-description"> <h2>Algorithm Description<a class="headerlink" href="#algorithm-description" title="Permalink to this heading"></a></h2> <p>The update is performed with a simple copy from update area to primary @@ -219,35 +219,35 @@ makes the update significantly faster and more considerable to flash wear while keeping the recovery/revert possibility.</p> <p>Not confirmed image is reverted to recovery image if reboot occurs.</p> <p>The bootable image consists of a header <a class="reference internal" href="#c.nxboot_img_header" title="nxboot_img_header"><code class="xref c c-struct docutils literal notranslate"><span class="pre">nxboot_img_header</span></code></a> -containing magic, size of the image excluding the header, CRC32 of the -image excluding the header and firmware version. The header is located -prior to the image itself and has a configurable size -<code class="docutils literal notranslate"><span class="pre">CONFIG_NXBOOT_HEADER_SIZE</span></code>. One erase page is also reserved at the -end of the partition (the entire partition, not the image!). This page -has two write blocks/pages with each one holding a flag. The first page -from the end holds image confirmation flag, the second one holds the flag -informing this image was already updated. These flags are written by the -bootloader and are used to detect which partition is update/recovery -and whether the image is confirmed or not.</p> -<p>There are two variants of bootable image. The first is the image that is -expected to be flashed directly into the primary area via physical programmer -as STlink or JTAG. This image does not use CRC32 for validation and does -not contain tail with the flags described above. It has an inverted -magic value compared to the update image. This should not be used -for OTA update, but only for the initial upload of the software to the -device.</p> -<p>The update image has a valid precalculated CRC32 and standard magic value. -The image is expected to be uploaded to the board either via programmer -or some protocol (Ethernet, CAN, etc.) to the external flash. The primary -flash can be used as well, but this halts the program execution during write -operations, so it is not recommended if external flash can be used. The -uploaded image is detected by the bootloader during the next boot and update -occurs. The program responsible for uploading the update image to the -partition has to erase the last erase page in this partition to ensure -all flags are unset.</p> +containing magic value, header version, header size, CRC32 of the image +including some parts of the header, size of the image excluding the header, +platform identifier, pointer to extended headers and and firmware version. +The header is located prior to the image itself and has a configurable size +<code class="docutils literal notranslate"><span class="pre">CONFIG_NXBOOT_HEADER_SIZE</span></code>. The CRC is calculated from the entire image +including header except for magic, header version and header size fields. +Extended headers are currently not supported, but the header already has +a reserved space for a pointer to it.</p> +<p>The image compatible with nxboot bootloader can be uploaded both directly +to the primary area via physical programer as STlink or JTAG and to the +update partition via some external application (over Ethernet, USB, CAN, etc.). +The update and recovery slots can be located in the the primary flash as +well, but this halts the program execution during write operations, so it is +not recommended if external flash can be used. The uploaded image is detected +by the bootloader during the next boot and update occurs.</p> +<p>Bootloader has an internal magic value that is used to detect updated images. +Once update occurs, the image is copied from update to primary partition with +the internal magic value and the first erase page of the update slot is erased. +The image with internal magic value is considered valid only if its recovery +exists, therefore the image confirmation is done by writing the first erase +page (copying by write page size from primary) back to the update slot. It is +recommended to use <a class="reference internal" href="#c.nxboot_confirm" title="nxboot_confirm"><code class="xref c c-func docutils literal notranslate"><span class="pre">nxboot_confirm()</span></code></a> API to confirm the image. This +approach wears the first sector of the update partition a bit more, but +avoids image’s tails completely and simplifies both internal and API logic.</p> <p>The application can use function <a class="reference internal" href="#c.nxboot_get_state" title="nxboot_get_state"><code class="xref c c-func docutils literal notranslate"><span class="pre">nxboot_get_state()</span></code></a> to determine what partition is update and recovery and thus where the update image -should be stored.</p> +should be stored. It is also possible to use function <a class="reference internal" href="#c.nxboot_open_update_partition" title="nxboot_open_update_partition"><code class="xref c c-func docutils literal notranslate"><span class="pre">nxboot_open_update_partition()</span></code></a> +that determines the correct partition for updates and returns the opened +file descriptor. This is a recommended approach as it avoids possible mistakes.</p> </section> <section id="hardware-requirements"> <h2>Hardware Requirements<a class="headerlink" href="#hardware-requirements" title="Permalink to this heading"></a></h2> @@ -292,6 +292,14 @@ program memory write page size!</p> </dl> </li> <li><dl class="simple"> +<dt><code class="docutils literal notranslate"><span class="pre">CONFIG_NXBOOT_PLATFORM_IDENTIFIER`</span></code>:</dt><dd><p>64 bits large platform identifier. This is a unique platform identifier +used by the bootloader to verify whether the image should be run on a +given platform. An update (or even a firmware uploaded via a programmer) +is rejected if the value in image’s header doesn’t match this option.</p> +</dd> +</dl> +</li> +<li><dl class="simple"> <dt><code class="docutils literal notranslate"><span class="pre">CONFIG_NXBOOT_BOOTLOADER</span></code>:</dt><dd><p>This option builds and links a bootloader application. This application should be an entry function for NuttX. It checks for possible update/revert operation, performs it and boot the correct image.</p> @@ -334,17 +342,14 @@ nxboot compatible image.</p> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python3<span class="w"> </span>apps/boot/nxboot/tools/nximage.py<span class="w"> </span><span class="se">\</span> <span class="w"> </span>--version<span class="w"> </span><span class="s2">"VERSION"</span><span class="w"> </span><span class="se">\</span> <span class="w"> </span>--header_size<span class="w"> </span>CONFIG_NXBOOT_HEADER_SIZE<span class="w"> </span><span class="se">\</span> -<span class="w"> </span>--primary<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--identifier<span class="w"> </span>CONFIG_NXBOOT_PLATFORM_IDENTIFIER<span class="w"> </span><span class="se">\</span> <span class="w"> </span>nuttx.bin<span class="w"> </span>image.img </pre></div> </div> -<p>It takes input parameters <code class="docutils literal notranslate"><span class="pre">--version</span></code> with your image’s version and -<code class="docutils literal notranslate"><span class="pre">--header_size</span></code> with the configured size of the header. Option -<code class="docutils literal notranslate"><span class="pre">--primary</span></code> generates the primary. This option should be used only -for image intended to be flashed directly to program memory (with -flashing tool like STlink). It must not be set for image intended to be used -as update image. The input file is a binary <code class="docutils literal notranslate"><span class="pre">nuttx.bin</span></code>, output with added -header is <code class="docutils literal notranslate"><span class="pre">image.img</span></code>.</p> +<p>It takes input parameters <code class="docutils literal notranslate"><span class="pre">--version</span></code> with your image’s version, +<code class="docutils literal notranslate"><span class="pre">--header_size</span></code> with the configured size of the header and <code class="docutils literal notranslate"><span class="pre">--identifier</span></code>. +with the platform identifier. The input file is a binary <code class="docutils literal notranslate"><span class="pre">nuttx.bin</span></code>, output +with added header is <code class="docutils literal notranslate"><span class="pre">image.img</span></code>.</p> <p>Image version adheres to <a class="reference external" href="https://semver.org/spec/v2.0.0.html">Semantic Versioning 2.0.0</a> without the usage of build metadata. The used format is MAJOR.MINOR:PATCH-prerelease. The image version is important for the update @@ -363,7 +368,7 @@ Configuration options:</p> <span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxboot_img_version</span></span></span><a class="headerlink" href="#c.nxboot_img_version" title="Permalink to this definition"></a><br /></dt> <dd></dd></dl> -<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#define NXBOOT_HEADER_PRERELEASE_MAXLEN 110</span> +<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#define NXBOOT_HEADER_PRERELEASE_MAXLEN 94</span> <span class="k">struct</span><span class="w"> </span><span class="nc">nxboot_img_version</span> <span class="p">{</span> @@ -379,21 +384,43 @@ Configuration options:</p> </pre></div> </div> <dl class="c struct"> +<dt class="sig sig-object c" id="c.nxboot_hdr_version"> +<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxboot_hdr_version</span></span></span><a class="headerlink" href="#c.nxboot_hdr_version" title="Permalink to this definition"></a><br /></dt> +<dd></dd></dl> + +<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">nxboot_hdr_version</span> +<span class="p">{</span> +<span class="w"> </span><span class="cm">/* Header major version */</span> +<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">major</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* Header minor version */</span> +<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">minor</span><span class="p">;</span> +<span class="p">};</span> +</pre></div> +</div> +<dl class="c struct"> <dt class="sig sig-object c" id="c.nxboot_img_header"> <span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxboot_img_header</span></span></span><a class="headerlink" href="#c.nxboot_img_header" title="Permalink to this definition"></a><br /></dt> <dd></dd></dl> <div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#define NXBOOT_HEADER_MAGIC 0x534f584e</span> -<span class="cp">#define NXBOOT_HEADER_MAGIC_INV 0xaca0abb1</span> +<span class="cp">#define NXBOOT_HEADER_MAGIC_INT 0xaca0abb0</span> <span class="k">struct</span><span class="w"> </span><span class="nc">nxboot_img_header</span> <span class="p">{</span> <span class="w"> </span><span class="cm">/* Header magic */</span> <span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">magic</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* Version of the header */</span> +<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">nxboot_hdr_version</span><span class="w"> </span><span class="n">hdr_version</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* Size of the header */</span> +<span class="w"> </span><span class="kt">uint16_t</span><span class="w"> </span><span class="n">header_size</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* CRC of the image, exceluding the previous header fields. */</span> +<span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">crc</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Image size (excluding the header) */</span> <span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">size</span><span class="p">;</span> -<span class="w"> </span><span class="cm">/* CRC32 of image (excluding the header) */</span> -<span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">crc32</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* Platform identifier */</span> +<span class="w"> </span><span class="kt">uint64_t</span><span class="w"> </span><span class="n">identifier</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* Address of optional extended headers */</span> +<span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">extd_hdr_ptr</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Image version */</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">nxboot_img_version</span><span class="w"> </span><span class="n">img_version</span><span class="p">;</span> <span class="p">};</span> @@ -432,6 +459,8 @@ Configuration options:</p> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">recovery</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* True if recovery image contains valid recovery */</span> <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">recovery_valid</span><span class="p">;</span> +<span class="w"> </span><span class="cm">/* True if image in a primary slot has a recovery (even non valid) */</span> +<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">recovery_present</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* True if primary slot is confirmed */</span> <span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">primary_confirmed</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* True if update slot has a valid image */</span> @@ -458,6 +487,20 @@ state of the bootloader.</p> </dl> </dd></dl> +<dl class="c function"> +<dt class="sig sig-object c" id="c.nxboot_open_update_partition"> +<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxboot_open_update_partition</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxboot_open_update_partition" title="Permalink to this definition"></a><br /></dt> +<dd><p>Gets the current bootloader state and opens the partition to which an +update image should be stored. It returns the valid file descriptor to +this partition, the user is responsible for writing to it and closing +if afterwards.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>Valid file descriptor on success, -1 and sets errno on failure.</p> +</dd> +</dl> +</dd></dl> + <dl class="c function"> <dt class="sig sig-object c" id="c.nxboot_get_confirm"> <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxboot_get_confirm</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxboot_get_confirm" title="Permalink to this definition"></a><br /></dt> diff --git a/content/docs/latest/applications/system/uorb/index.html b/content/docs/latest/applications/system/uorb/index.html index f18886c3c..3d8f6ac16 100644 --- a/content/docs/latest/applications/system/uorb/index.html +++ b/content/docs/latest/applications/system/uorb/index.html @@ -205,7 +205,7 @@ <li class="toctree-l3"><a class="reference internal" href="../uniqueid/index.html"><code class="docutils literal notranslate"><span class="pre">uniqueid</span></code> “uniqueid” command</a></li> <li class="toctree-l3 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">uorb</span></code> uorb(micro object request broker)</a><ul> <li class="toctree-l4"><a class="reference internal" href="#roles"><strong>Roles</strong></a></li> -<li class="toctree-l4"><a class="reference internal" href="#two-tpyes"><strong>Two Tpyes</strong></a></li> +<li class="toctree-l4"><a class="reference internal" href="#two-types"><strong>Two Types</strong></a></li> <li class="toctree-l4"><a class="reference internal" href="#device-nodes"><strong>Device Nodes</strong></a></li> <li class="toctree-l4"><a class="reference internal" href="#code-location"><strong>Code Location</strong></a></li> <li class="toctree-l4"><a class="reference internal" href="#introduction-to-key-data-structures"><strong>Introduction to Key Data Structures</strong></a></li> @@ -299,8 +299,8 @@ being the batch latency.</p> and a maximum publication delay of 100ms, the hardware generates an interrupt every 100ms, publishing 5 data points each time (100/(1000/50)).</p> </section> -<section id="two-tpyes"> -<h2><strong>Two Tpyes</strong><a class="headerlink" href="#two-tpyes" title="Permalink to this heading"></a></h2> +<section id="two-types"> +<h2><strong>Two Types</strong><a class="headerlink" href="#two-types" title="Permalink to this heading"></a></h2> <p>Additionally, NuttX categorizes topics into two types: <strong>notification</strong> topics and <strong>general</strong> topics.</p> <p>Subscribers to <strong>notification</strong> topics are not concerned with the presence diff --git a/content/docs/latest/genindex.html b/content/docs/latest/genindex.html index 4638c025a..9919e73be 100644 --- a/content/docs/latest/genindex.html +++ b/content/docs/latest/genindex.html @@ -889,21 +889,25 @@ <li><a href="applications/boot/nxboot/index.html#c.nxboot_get_confirm">nxboot_get_confirm (C function)</a> </li> <li><a href="applications/boot/nxboot/index.html#c.nxboot_get_state">nxboot_get_state (C function)</a> +</li> + <li><a href="applications/boot/nxboot/index.html#c.nxboot_hdr_version">nxboot_hdr_version (C struct)</a> </li> <li><a href="applications/boot/nxboot/index.html#c.nxboot_img_header">nxboot_img_header (C struct)</a> </li> <li><a href="applications/boot/nxboot/index.html#c.nxboot_img_version">nxboot_img_version (C struct)</a> +</li> + <li><a href="applications/boot/nxboot/index.html#c.nxboot_open_update_partition">nxboot_open_update_partition (C function)</a> </li> <li><a href="applications/boot/nxboot/index.html#c.nxboot_perform_update">nxboot_perform_update (C function)</a> </li> <li><a href="applications/boot/nxboot/index.html#c.nxboot_state">nxboot_state (C struct)</a> </li> <li><a href="applications/boot/nxboot/index.html#c.nxboot_update_type">nxboot_update_type (C enum)</a> -</li> - <li><a href="components/nxgraphics/nxcursor.html#c.nxcursor_enable">nxcursor_enable (C function)</a> </li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="components/nxgraphics/nxcursor.html#c.nxcursor_enable">nxcursor_enable (C function)</a> +</li> <li><a href="components/nxgraphics/nxcursor.html#c.nxcursor_setimage">nxcursor_setimage (C function)</a> </li> <li><a href="components/nxgraphics/nxcursor.html#c.nxcursor_setposition">nxcursor_setposition (C function)</a> diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html index 5d921d6da..3a1386020 100644 --- a/content/docs/latest/index.html +++ b/content/docs/latest/index.html @@ -175,7 +175,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: 12 March 25 at 00:27</p> +<p>Last Updated: 13 March 25 at 00:26</p> <div class="toctree-wrapper compound"> <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> <ul class="current"> diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv index a5d7095e4..715ad95d8 100644 Binary files a/content/docs/latest/objects.inv and b/content/docs/latest/objects.inv differ diff --git a/content/docs/latest/searchindex.js b/content/docs/latest/searchindex.js index 0f4908f80..975f51229 100644 --- a/content/docs/latest/searchindex.js +++ b/content/docs/latest/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/feed.xml b/content/feed.xml index f671c666a..12323a80d 100644 --- a/content/feed.xml +++ b/content/feed.xml @@ -5,8 +5,8 @@ <description></description> <link>/</link> <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/> - <pubDate>Wed, 12 Mar 2025 00:29:09 +0000</pubDate> - <lastBuildDate>Wed, 12 Mar 2025 00:29:09 +0000</lastBuildDate> + <pubDate>Thu, 13 Mar 2025 00:28:38 +0000</pubDate> + <lastBuildDate>Thu, 13 Mar 2025 00:28:38 +0000</lastBuildDate> <generator>Jekyll v4.3.2</generator> <item>