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

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new e6d8fe32ea4 Documentation/applications: document how to test 
tflite-micro.
e6d8fe32ea4 is described below

commit e6d8fe32ea471224841aae5c334c322afac55585
Author: Abhishek Mishra <[email protected]>
AuthorDate: Sun Sep 6 10:14:38 2026 +0000

    Documentation/applications: document how to test tflite-micro.
    
    Add a Testing section for sim:tflm and document Makefile tflm_hello,
    AllocateTensors, and generic ops so the in-tree docs match the apps
    TFLM changes.
    
    Assisted-by: Cursor:Grok-4.6
    Signed-off-by: Abhishek Mishra <[email protected]>
---
 .../applications/mlearning/tflite-micro/index.rst  | 91 ++++++++++++++++------
 .../platforms/sim/sim/boards/sim/index.rst         | 13 ++--
 2 files changed, 75 insertions(+), 29 deletions(-)

diff --git a/Documentation/applications/mlearning/tflite-micro/index.rst 
b/Documentation/applications/mlearning/tflite-micro/index.rst
index 23eb04f1627..4925081cba0 100644
--- a/Documentation/applications/mlearning/tflite-micro/index.rst
+++ b/Documentation/applications/mlearning/tflite-micro/index.rst
@@ -41,13 +41,14 @@ From :menuselection:`Application Configuration --> Machine 
Learning Support`:
 
 ``CONFIG_TFLITEMICRO_DEBUG``
   Keep TFLM error strings and print memory-use information
-  (``TF_LITE_SHOW_MEMORY_USE``). When disabled, ``TF_LITE_STRIP_ERROR_STRINGS``
-  is set to reduce code size.
+  (``TF_LITE_SHOW_MEMORY_USE``).
 
 ``CONFIG_TFLITEMICRO_SYSLOG``
   Route TFLM logging through NuttX syslog via ``tflm_syslog.cc``.
   ``CONFIG_TFLITEMICRO_SYSLOG_LEVEL`` selects the syslog priority
   (default ``6``, ``LOG_INFO``). See ``include/syslog.h``.
+  When neither debug nor syslog is enabled, ``TF_LITE_STRIP_ERROR_STRINGS``
+  is set to reduce code size.
 
 ``CONFIG_TFLITEMICRO_TOOL``
   Build the ``tflm`` NSH command from ``tflm_tool.cc``.
@@ -56,8 +57,8 @@ From :menuselection:`Application Configuration --> Machine 
Learning Support`:
   (defaults: priority 100, stack 4096).
 
 ``CONFIG_TFLITEMICRO_HELLOWORLD``
-  Build the ``tflm_hello`` example (CMake builds only). The example runs
-  the upstream TFLM hello-world float and INT8 sine models.
+  Build the ``tflm_hello`` example. The example runs the upstream TFLM
+  hello-world float and INT8 sine models.
   ``CONFIG_TFLITEMICRO_HELLOWORLD_PRIORITY`` and
   ``CONFIG_TFLITEMICRO_HELLOWORLD_STACKSIZE`` set the task attributes
   (defaults: priority 100, stack 4096).
@@ -68,7 +69,7 @@ Building
 The ``sim:tflm`` defconfig enables TFLM, the ``tflm`` tool, the hello-world
 example, libc++, FlatBuffers, gemmlowp, KissFFT, and Ruy.
 
-Makefile build (produces the ``tflm`` tool; hello-world is CMake-only):
+Makefile build (produces ``tflm`` and ``tflm_hello``):
 
 .. code-block:: console
 
@@ -95,8 +96,9 @@ Using the ``tflm`` tool
 =======================
 
 ``tflm`` loads a ``.tflite`` file from the filesystem, constructs a
-``tflite::MicroInterpreter``, and can invoke the model once for profiling
-or emit compiled C++ (when TFLM was built with ``TFLITE_MODEL_COMPILER``).
+``tflite::MicroInterpreter``, calls ``AllocateTensors()``, and can invoke
+the model once for profiling or emit compiled C++ (when TFLM was built
+with ``TFLITE_MODEL_COMPILER``).
 
 .. code-block:: console
 
@@ -106,24 +108,25 @@ or emit compiled C++ (when TFLM was built with 
``TFLITE_MODEL_COMPILER``).
    [ -C       ] Compile tflite model into c++ codes.
    [ -E       ] Do once evaluation (for profiling).
    [ -i <str> ] Readable model file path.
-   [ -o <str> ] Writable c++ file path.
+   [ -o <str> ] Writable c++ file path (required with -C).
    [ -p <str> ] Prefix of compiled code.
    [ -a <int> ] Arena size (mempool).
    [ -h       ] Print this message.
 
-Both ``-i`` and ``-o`` are required. Defaults are prefix ``NXAI`` and
-arena size 8192 bytes.
+``-i`` is required. ``-o`` is required only with ``-C``. Defaults are
+prefix ``NXAI`` and arena size 8192 bytes.
 
-The built-in operator resolver registers eight INT8-oriented ops:
+The built-in operator resolver registers eight generic (float and
+quantized) ops:
 
-- ``CONV_2D`` (INT8)
-- ``MAX_POOL_2D`` (INT8)
-- ``QUANTIZE`` (float32 to INT8)
-- ``DEQUANTIZE`` (INT8)
-- ``MEAN`` (INT8)
+- ``CONV_2D``
+- ``MAX_POOL_2D``
+- ``QUANTIZE``
+- ``DEQUANTIZE``
+- ``MEAN``
 - ``RESHAPE``
-- ``FULLY_CONNECTED`` (INT8)
-- ``SOFTMAX`` (INT8)
+- ``FULLY_CONNECTED``
+- ``SOFTMAX``
 
 Models that need other operators must change the resolver in
 ``apps/mlearning/tflite-micro/tflm_tool.cc``.
@@ -131,7 +134,7 @@ Models that need other operators must change the resolver in
 Hello-world example
 ===================
 
-With a CMake ``sim:tflm`` image:
+With a ``sim:tflm`` image:
 
 .. code-block:: console
 
@@ -139,7 +142,52 @@ With a CMake ``sim:tflm`` image:
 
 This runs the upstream hello-world test: it profiles memory and latency,
 then loads the float and INT8 sine models that are converted to C arrays
-at build time with ``xxd``.
+at build time with ``xxd``. Success ends with::
+
+  ~~~ALL TESTS PASSED~~~
+
+Testing
+=======
+
+The ``sim:tflm`` configuration is the supported way to test TFLM on the
+host. It enables ``CONFIG_TFLITEMICRO``, ``CONFIG_TFLITEMICRO_DEBUG``,
+``CONFIG_TFLITEMICRO_TOOL``, and ``CONFIG_TFLITEMICRO_HELLOWORLD``.
+
+The host needs a C++ toolchain, ``curl``, ``unzip``, ``patch``, ``xxd``,
+and the NuttX apps tree next to ``nuttx`` (``../apps`` or
+``CONFIG_APPS_DIR``).
+
+1. Configure and build::
+
+     $ cd nuttx
+     $ make distclean
+     $ ./tools/configure.sh sim:tflm
+     $ make -j$(nproc)
+
+   The first build downloads TFLM and its math/FlatBuffers dependencies.
+   A successful link prints ``LD:  nuttx``. The apps registry must list
+   both ``tflm`` and ``tflm_hello``.
+
+2. Run the simulator and the hello-world test::
+
+     $ ./nuttx
+     nsh> tflm -h
+     nsh> tflm_hello
+
+   ``tflm -h`` prints the usage text above. ``tflm_hello`` prints
+   allocator and profiler information, then
+   ``~~~ALL TESTS PASSED~~~``.
+
+3. Optional: invoke a ``.tflite`` file from the host filesystem (the
+   sim configuration includes hostfs)::
+
+     nsh> tflm -E -i /path/to/model.tflite -a 8192
+
+   The tool fails with ``AllocateTensors failed`` if the arena is too
+   small or the model uses operators outside the eight registered ops.
+
+CMake is equivalent: ``cmake -B build -DBOARD_CONFIG=sim:tflm -GNinja``
+then ``cmake --build build`` and ``./build/nuttx``.
 
 Embedding a model in an application
 ===================================
@@ -168,8 +216,7 @@ Patches applied by NuttX
 - ``0002-quantize-int8.patch`` — ``Register_QUANTIZE_FLOAT32_INT8()``.
 - ``0003-mean-int8.patch`` — ``Register_MEAN_INT8()``.
 - ``0004-tflite-add-extern-C-to-main-function-to-avoid-c-mang.patch`` —
-  ``extern "C"`` on the hello-world ``main`` so NuttX can call it
-  (applied by the CMake fetch).
+  ``extern "C"`` on the hello-world ``main`` so NuttX can call it.
 
 See also
 ========
diff --git a/Documentation/platforms/sim/sim/boards/sim/index.rst 
b/Documentation/platforms/sim/sim/boards/sim/index.rst
index 9e53a777565..59b19ba81ca 100644
--- a/Documentation/platforms/sim/sim/boards/sim/index.rst
+++ b/Documentation/platforms/sim/sim/boards/sim/index.rst
@@ -1450,9 +1450,8 @@ tflm
 ----
 
 Builds TensorFlow Lite for Microcontrollers from
-``apps/mlearning/tflite-micro``, including the ``tflm`` command-line tool.
-A CMake build of this configuration also includes the ``tflm_hello``
-example.
+``apps/mlearning/tflite-micro``, including the ``tflm`` command-line tool
+and the ``tflm_hello`` example.
 
 .. code-block:: console
 
@@ -1466,10 +1465,10 @@ With CMake::
    $ cmake --build build
    $ ./build/nuttx
 
-From NSH, ``tflm -h`` prints the tool usage. ``tflm_hello`` (CMake image)
-runs the upstream sine-model test.
-
-See :doc:`/applications/mlearning/tflite-micro/index`.
+From NSH, ``tflm -h`` prints the tool usage. ``tflm_hello`` runs the
+upstream sine-model test and prints ``~~~ALL TESTS PASSED~~~`` on
+success. See :doc:`/applications/mlearning/tflite-micro/index` for the
+full test procedure.
 
 touchscreen
 -----------

Reply via email to