From c55c2511ad87546b50e493f5de0b77a18f1c7a56 Mon Sep 17 00:00:00 2001 From: Ludovic Vanasse Date: Sun, 29 Dec 2024 09:25:32 -0500 Subject: [PATCH] Doc: improve and add documentations for the guide section of the wiki * Add a migration warning to the update release system and the elf programs documentation pages. This is just to add a papertrail from where the documentation originate in case of error during the migration process. * Improve the building nuttx with app out of source tree * Add new guide pages * Building uclibc++ * Custom app directories * Debugging ELF loadable modules * Multiple NSH sessions * NSH network link management * RAM & ROM disks * Reading CAN messages * Remove device drivers with NSH --- ...uilding_nuttx_with_app_out_of_src_tree.rst | 207 ++++++++++++++++++ Documentation/guides/building_uclibcpp.rst | 84 +++++++ .../guides/custom_app_directories.rst | 165 ++++++++++++++ .../guides/debugging_elf_loadable_modules.rst | 84 +++++++ .../custom_app_dir_through_containment.png | Bin 0 -> 73556 bytes .../custom_app_dir_through_extension.png | Bin 0 -> 74181 bytes Documentation/guides/index.rst | 12 +- .../guides/multiple_nsh_sessions.rst | 86 ++++++++ .../guides/nsh_network_link_management.rst | 122 +++++++++++ Documentation/guides/ram_rom_disks.rst | 119 ++++++++++ Documentation/guides/reading_can_msgs.rst | 62 ++++++ .../guides/remove_device_drivers_nsh.rst | 101 +++++++++ .../guides/updating_release_system_elf.rst | 4 + 13 files changed, 1045 insertions(+), 1 deletion(-) create mode 100644 Documentation/guides/building_nuttx_with_app_out_of_src_tree.rst create mode 100644 Documentation/guides/building_uclibcpp.rst create mode 100644 Documentation/guides/custom_app_directories.rst create mode 100644 Documentation/guides/debugging_elf_loadable_modules.rst create mode 100644 Documentation/guides/image/custom_app_dir_through_containment.png create mode 100644 Documentation/guides/image/custom_app_dir_through_extension.png create mode 100644 Documentation/guides/multiple_nsh_sessions.rst create mode 100644 Documentation/guides/nsh_network_link_management.rst create mode 100644 Documentation/guides/ram_rom_disks.rst create mode 100644 Documentation/guides/reading_can_msgs.rst create mode 100644 Documentation/guides/remove_device_drivers_nsh.rst diff --git a/Documentation/guides/building_nuttx_with_app_out_of_src_tree.rst b/Documentation/guides/building_nuttx_with_app_out_of_src_tree.rst new file mode 100644 index 0000000000..a31d5b77f4 --- /dev/null +++ b/Documentation/guides/building_nuttx_with_app_out_of_src_tree.rst @@ -0,0 +1,207 @@ +======================================================== +Building NuttX with Applications Outside the Source Tree +======================================================== + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/Building+NuttX+with+Applications+Outside+of+the+Source+Tree + +Q: Has anyone come up with a tidy way to build NuttX with board-specific pieces outside the source tree? +======================================================================================================== + +A: Here are four approaches: +============================ + +1. Make export +-------------- + +There is a make target called ``make export``. It will build NuttX, then bundle +all of the header files, libraries, startup objects, and other build components +into a ``.zip`` file. You can move that ``.zip`` file into any build environment +you want. You can even build NuttX under a DOS CMD window. + +This ``make target`` is documented in the top-level +:doc:`Legacy README `. Search for ``Build Targets`` + + +1. Replace the apps/ Directory +------------------------------ + +You can replace the entire ``apps/`` directory. It is not a critical part of the +OS. The ``apps/`` is simply provided for you to help with your application +development. It should not dictate anything that you do. + +To use a different ``apps`` directory, simply execute ``make menuconfig`` in the +top-level ``nuttx/`` directory and redefine ``CONFIG_APPS_DIR`` in your +``.config`` file so that it points to a different, custom application directory. +Note that ``CONFIG_APPS_DIR`` is a `relative` path from the top-level +``nuttx/`` directory. + +You can copy any pieces that you like from the old ``apps/`` directory to your +custom ``apps`` directory as necessary. This is documented in +the `NuttX Porting Guide `_ +and in the `apps/README.md `_ file. + +1. Extend the apps/ Directory +----------------------------- + +If you like the random collection of stuff in the ``apps/`` directory but just +want to expand the existing components with your own, external sub-directory, +then there is an easy way to do that too: Create a symbolic link in the +``apps/`` directory that redirects to your application sub-directory (or copy +your code into a sub-directory of ``apps/``). + +.. image:: image/custom_app_dir_through_extension.png + +Makefile and Make.defs +^^^^^^^^^^^^^^^^^^^^^^ + +In order to be incorporated into the build, the directory that you link under +the ``apps/`` directory should contain: + +1. A ``Makefile`` that supports the ``clean`` and ``distclean`` targets (see + other Makefiles for examples). +2. A tiny ``Make.defs`` make file fragment that simply adds the build + directories to the variable ``CONFIGURED_APPS`` like: + +.. code-block:: shell + + CONFIGURED_APPS += my_directory1 my_directory2 + +Automatic Sub-directory Inclusion +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The ``apps/Makefile`` will always automatically check for the existence of +sub-directories containing a ``Makefile`` and a ``Make.defs`` file. The +``Makefile`` will be used only to support cleaning operations. The +``Make.defs`` file provides the set of relative paths to directories to be +built; these directories must also contain a ``Makefile``. That ``Makefile`` can +build the sources and add the object files to the ``apps/libapps.a`` archive +(see other Makefiles for examples). It should support the ``all``, ``install``, +``context``, and ``depend`` targets. + +``apps/Makefile`` does not depend on any hard-coded lists of directories. +Instead, it does a wildcard search to find all appropriate directories. This +means that to install a new application, you simply have to copy the directory +(or link it) into the ``apps/`` directory. If the new directory includes a +``Makefile`` and a ``Make.defs`` file, then it will be automatically discovered +and included in the build at ``make`` time. + +Kconfig +^^^^^^^ + +If the directory that you add also includes a ``Kconfig`` file, then it will be +automatically included in the NuttX configuration system as well. +``apps/Makefile`` uses a tool at ``apps/tools/mkkconfig.sh`` that dynamically +builds the ``apps/Kconfig`` file at pre-configuration time. + +.. note:: + + The native Windows build will use a corresponding tool called + ``apps/tools/mkconfig.bat``. + +Install script +^^^^^^^^^^^^^^ + +You could, for example, create a script called ``install.sh`` that installs a +custom application, configuration, and board-specific directory: + +1. Copy ``MyBoard`` directory to ``boards/MyBoard``. +2. Add a symbolic link to ``MyApplication`` at ``apps/external`` +3. Configure NuttX: + +.. code-block:: shell + + tools/configure.sh MyBoard:MyConfiguration + +Special ``apps/external`` Directory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use of the name ``apps/external`` is suggested because that name is included in +the ``.gitignore`` file and will save you some nuisance when working with GIT. + +4. Contain the apps/ Directory +------------------------------ + +A simple, minimally invasive approach would be to contain the ``apps/`` GIT +clone within your custom application directory. In this case, ``apps/`` would +appear as a directory under your custom application directory instead of your +application directories being inserted as sub-directories of ``apps/``. It may +even be implemented as a sub-module of your custom application directory. + +.. image:: image/custom_app_dir_through_containment.png + +Kconfig and Makefile +^^^^^^^^^^^^^^^^^^^^ + +There are only a few minimal requirements of your custom application directory. +It needs to have only its own ``Makefile`` and ``Kconfig`` file. That +``Kconfig`` would need to include the ``apps/Kconfig``. The ``Makefile`` would +similarly need to invoke the ``apps/Makefile`` for all of the relevant build +targets. For example, the ``clean`` target: + +.. code-block:: shell + + $(MAKE) -c apps clean TOPDIR=$(TOPDIR) + +Library Issues +^^^^^^^^^^^^^^ + +The contained directory will create and install a static library called +``libapps($LIBEXT)`` in the ``nuttx/staging`` directory. Your custom logic must +also appear in the ``nuttx/staging`` directory. Here are two ways that you might +do that: + +1. **Merge with ``libapps($LIBEXT)``.** + The custom application directory's ``Makefile`` could create and install the + final ``libapps($LIBEXT)`` in the ``nuttx/staging`` directory. + ``/apps/libapps($LIBEXT)`` could merge its custom object files + with ``/libapps($LIBEXT)`` and then re-install the library at + ``nuttx/staging``. +2. **Use the EXTRA_LIBS Feature.** + The build system supports two special make-related variables called + ``EXTRA_LIBS`` and ``EXTRA_LIBPATHS``. These may be defined in your + board-specific ``Make.defs`` file. ``EXTRA_LIBS`` provides the name of your + custom library. If you create ``/libcustom.a``, then the value + of ``EXTRA_LIBS`` would be ``-lcustom`` and the value of ``EXTRA_LIBPATHS`` + would be ``-L `` (assuming the GNU ld linker). + +Relative Effort and Benefits +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The contained ``apps/`` directory approach requires some more effort than the +extended ``apps/`` approach, but has the advantage that there will be no strange +behavior due to issues with ``.gitignore`` and, hence, a cleaner user +experience. + +Out-of-tree Builds +^^^^^^^^^^^^^^^^^^ + +This configuration also has the possibility of supporting out-of-tree builds +using ``fusefs``. Suppose, for example, that you have a project directory with +the contained ``apps/`` directory and, say, three platform build directories. +Using ``fusefs``, you can overlay one of the platform build directories on top +of the project directory. Then all files generated by the build will be written +into the overlaid platform build directory. When the ``fusefs`` is torn down, +the project directory will still be clean, and the build result will still be in +the platform build directory. This can then be repeated for the other two +platform build directories. + +In this case, you would probably also want to contain the ``nuttx/`` directory +in the project directory as well so that the entire system is built out-of-tree. + +Hooking External Applications into the Configuration System +----------------------------------------------------------- + +Suppose you have opted to extend the ``apps/`` directory with your custom +external application directories and would also like to support configuration +variables in your external application. No problem! Thanks to Sebastien Lorquet, +any external application that you install into the ``apps/`` (whether via a +symbolic link or via a directory copy) `will` be included in the NuttX +configuration system. + +The top-level ``Kconfig`` file in the ``apps/`` directory is automatically +generated based on the contents of each ``apps/`` sub-directory. If your +installed sub-directory contains ``Kconfig``, ``Makefile``, and ``Make.defs`` +files, then it will be incorporated into the NuttX configuration system when the +top-level ``Kconfig`` file is generated. diff --git a/Documentation/guides/building_uclibcpp.rst b/Documentation/guides/building_uclibcpp.rst new file mode 100644 index 0000000000..53fbad5de6 --- /dev/null +++ b/Documentation/guides/building_uclibcpp.rst @@ -0,0 +1,84 @@ +================= +Building uClibc++ +================= + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629550 + and is probably outdated + +A version of `uClibc++ `_ has been ported to NuttX and is available in the NuttX +uClibc++ GIT repository at `Bitbucket.org `_ . This version of uClibc++ was +adapted for NuttX by the RGMP team. + +This custom version of uClibc++ resides in the NuttX repository at: + + https://bitbucket.org/nuttx/uclibc/ + +rather than in the main NuttX source tree, due to licensing issues: NuttX is +licensed under the permissive, modified BSD License; uClibc++, on the other +hand, is licensed under the stricter GNU LGPL Version 3 license. + +General build instructions are available in the uClibc++ `README.txt `_ +file. Those instructions are not repeated here. This page documents specific +issues encountered when building this NuttX version of uClibc++ and how they +are resolved. + +Undefined Reference to ``_impure_ptr`` +====================================== + +**Problem** + +When building uClibc++, you may encounter an undefined reference to +``_impure_ptr`` similar to: + +.. code-block:: none + + LD: nuttx + .../arm-none-eabi/lib/armv7e-m\libsupc++.a(vterminate.o): In function + `__gnu_cxx::__verbose_terminate_handler()`: + vterminate.cc:(.text._ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xfc): + undefined reference to `_impure_ptr' + +**Solution** + +A definitive, elegant solution is not known, but the following workaround has +proven to work: + +1. Locate the directory where you can find ``libsupc++``: + + .. code-block:: console + + arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -print-file-name=libsupc++.a + +2. Go to that directory and save a copy of ``vterminate.o`` (in case you need + it later): + + .. code-block:: console + + cd + arm-none-eabi-ar.exe -x libsupc++.a vterminate.o + +3. Remove ``vterminate.o`` from the library. At build time, the uClibc++ + package will provide a usable replacement: + + .. code-block:: console + + arm-none-eabi-ar.exe -d libsupc++.a vterminate.o + +4. At this point, NuttX should link with no problem. If you ever want to + restore the original ``vterminate.o`` to ``libsupc++.a``, you can do so + by running: + + .. code-block:: console + + arm-none-eabi-ar.exe rcs libsupc++.a vterminate.o + +After removing ``vterminate.o`` from the standard library, the +uClibc++-provided ``vterminate.o`` becomes the active implementation and +prevents references to ``_impure_ptr`` from arising during linkage. + +.. note:: + Always exercise caution when modifying toolchain libraries. This + workaround is known to be effective but it replaces standard library + objects, which may have side effects in other toolchain usage scenarios. diff --git a/Documentation/guides/custom_app_directories.rst b/Documentation/guides/custom_app_directories.rst new file mode 100644 index 0000000000..eb3b473ccc --- /dev/null +++ b/Documentation/guides/custom_app_directories.rst @@ -0,0 +1,165 @@ +=========================================== +Custom Application Directories +=========================================== + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/Custom+Application+Directories + +Most people use the generic ``apps/`` directory with NuttX. That is convenient +and well-documented. However, it should always be remembered that NuttX is a +stand-alone, general-purpose OS and has **no dependency** on that "canned" +application directory. + +This page shows how to create your own, custom application directory from +scratch. + +Creating the Custom Application Directory +========================================= + +Below is a simple example of the **minimum** custom application directory. It +contains only three files: ``Makefile``, ``Kconfig``, and ``hello.c``. + +Makefile +-------- + +The custom application directory must include a ``Makefile`` that supports all +of the make targets expected by the NuttX build system **and** must generate an +archive called ``libapps.a`` in the top-level of the custom directory structure. +The minimal required targets for the ``Makefile`` look like this: + +.. code-block:: shell + + APPDIR = ${shell pwd} + + -include $(TOPDIR)/Make.defs + + # files + + CSRCS = hello.c + COBJS = hello.o + + ROOTDEPPATH = --dep-path . + + # Build targets + + all: libapps.a + .PHONY: dirlinks context preconfig depend clean clean_context distclean + .PRECIOUS: libapps$(LIBEXT) + + # Compile C Files + + $(COBJS): %$(OBJEXT): %.c + $(call COMPILE, $<, $@) + + # Add object files to the apps archive + + libapps.a: $(COBJS) + $(call ARCHIVE, libapps.a, $(COBJS)) + + # Create directory links + + dirlinks: + + # Setup any special pre-build context + + context: + + # Setup any special pre-configuration context + + preconfig: + + # Make the dependency file, Make.deps + + depend: Makefile $(CSRCS) + $(Q) $(MKDEP) $(ROOTDEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) >Make.dep + + # Clean the results of the last build + + clean: + $(call CLEAN) + + # Remove the build context and directory links + + clean_context: + + # Restore the directory to its original state + + distclean: clean clean_context + $(call DELFILE, Make.dep) + + # Include dependencies + + -include Make.dep + + +Kconfig +------- + +A ``Kconfig`` file must be included, but it need not contain any meaningful +configuration options. This file is where you can add application-specific +configuration settings if desired. The minimal ``Kconfig`` might look like: + +.. code-block:: shell + + # For a description of the syntax of this configuration file, + # see the file kconfig-language.txt in the NuttX tools repository. + # + +hello.c +------- + +Your custom application must compile at least one source file to generate the +required ``libapps.a`` archive. One of these source files must include the +``main()`` entry point to the application. That main function (or similarly +named entry point) is called after OS initialization completes. + +What this application initialization entry point does, how it interacts with +the rest of your application, and where the rest of you application code is +located is of no concern to the OS. Only this one entry point is needed. + +Below is a small "Hello, World!" example, where ``custom_main()`` is the +application entry point: + +.. code-block:: c + + #include + + int custom_main(int argc, char *argv[]) + { + printf("Hello, World!!\n"); + return 0; + } + +Building with the Custom Application Directory +============================================== + +In order to build with the new custom application directory, you need the +following in your NuttX configuration: + +.. code-block:: shell + + CONFIG_APPS_DIR="../custom-apps" + CONFIG_USER_ENTRYPOINT="custom_main" + +.. note:: + + You can only access the ``../custom-apps/Kconfig`` file if + ``CONFIG_APPS_DIR`` is set to ``../custom-apps`` **before** running + ``make menuconfig``. If you start with an existing configuration, you may + face a "chicken-and-egg" situation. One workaround is to manually edit + the ``.config`` file before running ``make menuconfig``. + +Alternatively, if you use the ``tools/configure.sh`` script, you can specify the +custom-apps directory from the command line: + +.. code-block:: shell + + tools/configure.sh -a ../custom_apps : + +Afterward, just build NuttX as you normally would. When you run the program that +was built with your custom application directory, you should see: + +.. code-block:: shell + + Hello, World!! diff --git a/Documentation/guides/debugging_elf_loadable_modules.rst b/Documentation/guides/debugging_elf_loadable_modules.rst new file mode 100644 index 0000000000..941048c988 --- /dev/null +++ b/Documentation/guides/debugging_elf_loadable_modules.rst @@ -0,0 +1,84 @@ +============================== +Debugging ELF Loadable Modules +============================== + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/Debugging+ELF+Loadable+Modules + +Debugging ELF modules loaded in memory can be tricky because the load address +in memory does not match the addresses in the ELF file. This challenge has long +existed for debugging uClinux programs and Linux kernel modules; the same +solution can be used with NuttX ELF files (and probably with NxFLAT modules as +well). Below is a summary of one way to approach this: + +1. Get ELF Module Load Address +============================== + +Put a change in ``nuttx/binfmt`` so that you print the address where the ELF +text was loaded into memory. + +Turning on BINFMT debug (``CONFIG_DEBUG_BINFMT=y``) should give you the same +information, although it may also provide more output than you really want. + +Alternatively, you could place a ``printf()`` at the beginning of your ``main()`` +function so that your ELF module can print its own load address. For example, +the difference between the address of ``main()`` in your object file and the +address of ``main()`` at run time reveals the actual load address. + +2. Make the ELF Module Wait for You +=================================== + +Insert an infinite loop in the ``main()`` routine of your ELF program. For +example: + +.. code-block:: c + + volatile bool waitforme; + int main (int arc, char **argv) + { + while (!waitforme); + ... + +When you start the ELF program, you will see where it was loaded in memory, and +the ELF program will remain stuck in the infinite loop. It will continue to +wait for ``waitforme`` to become true before proceeding. + +3. Start the Debugger +===================== + +Start the debugger, connect to the GDB server, and halt the program. If your +debugger is well-behaved, it should stop at the infinite loop in ``main()``. + +4. Load Offset Symbols +====================== + +Load symbols using the offset where the ELF module was loaded: + +.. code-block:: shell + + (gdb) add-symbol-file + +Here, ```` is your ELF file containing symbols, and +```` is the address where the program text was actually loaded (as +determined above). Single-step a couple of times and confirm that you are in the +infinite loop. + +5. And Debug +============ + +Set ``waitforme`` to a non-zero value. Execution should exit the infinite loop, +and now you can debug the ELF program loaded into RAM in the usual way. + +An Easier Way? +============== + +There might be an alternative that allows you to step into the ELF module +without modifying the code to include the ``waitforme`` loop. You could place a +breakpoint on the OS function ``task_start()``. That function runs before your +ELF program starts, so you should be able to single-step from the OS code +directly into your loaded ELF application—no changes to the ELF application +required. + +When you step into the application's ``main()``, you have the relocated address +of ``main()`` and can use that address (see step #1) to compute the load offset. diff --git a/Documentation/guides/image/custom_app_dir_through_containment.png b/Documentation/guides/image/custom_app_dir_through_containment.png new file mode 100644 index 0000000000000000000000000000000000000000..e7152ecbf623a9d8183aa4a8fb7a05cdccbba1ed GIT binary patch literal 73556 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 z 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 literal 0 HcmV?d00001 diff --git a/Documentation/guides/image/custom_app_dir_through_extension.png b/Documentation/guides/image/custom_app_dir_through_extension.png new file mode 100644 index 0000000000000000000000000000000000000000..f20d5f6969b68f599999ce347cd88463217e3b8c GIT binary patch literal 74181 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

`+X=Y&WKc0Q)T6ipw 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 mynsh /dev/ttyS2 & + +This should cause a new NSH session to appear on ``ttyS2``. That session will +persist until you do the following from the new session: + +.. code-block:: none + + nsh> exit + +Then the new session, i.e., ``my_main()`` will exit. + +If you were to do something like: + +.. code-block:: none + + nsh> mynsh /dev/console + +then you would get nested NSH sessions on the same console. The first session +would halt and wait for the second session to take control of the console until +it exits. Then the first session will take over console again. + +NuTTY +===== + +In a previous discussion, there was talk about implementing the moral equivalent +of getty in NuttX (of course, it would be called "nutty"). A simple +implementation of nutty would work like this: + +1. It would wait on ``poll()`` on every (configured) serial device. +2. Whenever it is awakened, it would start something like ``my_main()`` above + on the active serial port. +3. NSH has an option to enable logins, but it would be better to remove the + existing login information from NSH and centralize it in nutty. + +That way, you could connect to any TTY, hit enter, and you would get an NSH +session. Hmm... it is not clear how nutty would get the TTY back after the +session is closed. That part may require some additional thought. + +Other Ideas +=========== + +There are other ways to get multiple NSH sessions: + +- Telnet already supports multiple sessions. +- Implement the existing NSH as an ELF program, then you can get multiple NSH + sessions with ``posix_spawn`` by simply redirecting I/O. +- Using the tiny NxWM window managers, multiple NSH windows are already + supported. diff --git a/Documentation/guides/nsh_network_link_management.rst b/Documentation/guides/nsh_network_link_management.rst new file mode 100644 index 0000000000..3100f7ba7d --- /dev/null +++ b/Documentation/guides/nsh_network_link_management.rst @@ -0,0 +1,122 @@ +=========================== +NSH Network Link Management +=========================== + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/NSH+Network+Link+Management + +In the past, if the network was not connected when NuttX started, two problems +could arise: + +1. It could take a very long time for the NSH prompt to appear because of the + sequential initialization (for example, when the network cable is not + connected). +2. After NuttX came up, installing the network cable would not enable the + network; the only way to recover networking was to connect the cable and + reset the board. + +Network link management capability has now been added to NSH to address these +problems. + +Configuration Options +===================== + +A simple feature can be enabled to move network initialization to a separate +thread so that it is no longer performed sequentially. With this feature, the +network bringup occurs asynchronously, and the NSH prompt appears immediately +(although the network may not be available until some time later). That feature +is enabled with the following setting and is the first prerequisite for the full +NSH link management feature: + +- ``CONFIG_NSH_NETINIT_THREAD``. Refer to the help text in the Kconfig file for + this option (``apps/nshlib/Kconfig``). Additional information about this + setting is included there. + +The logic that implements NSH network management is provided in +``apps/nshlib/nsh_netinit.c``. The behavior of that logic depends on multiple +configuration settings. First, there are some additional prerequisites that +must be satisfied: + +- ``CONFIG_NETDEV_PHY_IOCTL`` + Enable PHY IOCTL commands in the Ethernet device driver. Special IOCTL + commands must be provided by the Ethernet driver to support certain PHY + operations needed for link management. These operations are not complex and + are implemented for Atmel SAM4/4, SAMA5 families, and for the STMicro STM32. + See ``nuttx/arch/arm/src/sam34/sam_emac.c``, + ``nuttx/arch/arm/src/sam34/sam_emaca.c``, ``sam_emacb.c``, and ``sam_gmac.c``, + and ``nuttx/arch/arm/src/stm32/stm32_eth.c``. +- ``CONFIG_ARCH_PHY_INTERRUPT`` + This is not a user-selectable option. Rather, it is set when selecting a board + that supports PHY interrupts. In most architectures, the PHY interrupt is not + directly associated with the Ethernet driver. Instead, the PHY interrupt is + provided through some board-specific GPIO, and the board-specific logic must + provide support for that GPIO interrupt. Specifically, the board logic must: + + 1. Provide the function ``arch_phy_irq()`` as described and prototyped in + ``nuttx/include/nuttx/arch.h``. + 2. Select ``CONFIG_ARCH_PHY_INTERRUPT`` in the board configuration file to + advertise that ``arch_phy_irq()`` is supported. + + Examples can be found at: + + - ``nuttx/boards/arm/sama5/sama5d3x-ek/src/sam_ethernet.c`` + - ``nuttx/boards/arm/sama5/sama5d3-xplained/src/sam_ethernet.c`` + - ``nuttx/boards/arm/sama5/sama5d4-ek/src/sam_ethernet.c`` +- Other requirements: UDP support must be enabled (``CONFIG_NET_UDP``), and + signals must not be disabled (``CONFIG_DISABLE_SIGNALS``). + +With all these prerequisites in place, NSH network management can be enabled on +the NSH network initialization thread by selecting these additional options: + +- ``CONFIG_NSH_NETINIT_MONITOR`` + By default, the network initialization thread brings up the network (or + fails while trying) then exits, freeing all resources it used. If this option + is selected, however, the network initialization thread will persist + indefinitely to monitor the network status. Should the network go down (for + example, if the cable is removed), the thread will monitor the link status + and attempt to bring the network back up. In this scenario, the resources + required for network initialization are never released. + +If the network monitor is selected, additional options control its behavior: + +- ``CONFIG_NSH_NETINIT_SIGNO`` + The network monitor logic receives signals when there is a change in link + status. This setting can be used to customize the signal number to avoid + conflicts. +- ``CONFIG_NSH_NETINIT_RETRYMSEC`` + When the network is down, the initialization thread will periodically attempt + to bring the network back up. Because this can be time-consuming, the retry + operation is performed only at the interval specified by this value, in + milliseconds. +- ``CONFIG_NSH_NETINIT_THREAD_STACKSIZE`` + The stack size for the network initialization thread. +- ``CONFIG_NSH_NETINIT_THREAD_PRIORITY`` + The network initialization thread priority. + +Overview of the Operation +========================= + +Below is a summary of how the NSH management thread operates: + +1. During initialization, the thread opens a UDP socket for IOCTL operations + and connects a signal handler. +2. It enters a loop. At the beginning of each loop iteration, the thread + uses an IOCTL command to register (or re-register) with the Ethernet device + to receive a signal whenever the PHY reports a link up or link down + interrupt. Re-registration is necessary because the notification disarms + after each PHY interrupt. +3. The thread reads the link status from both the PHY and the Ethernet device. + If they disagree, the network monitor uses an IOCTL command to bring the + Ethernet driver up or down to match the current state of the network. If the + network is lost, the monitor brings the Ethernet driver down; if the network + is regained, the monitor brings the Ethernet driver back up and re-establishes + the connection. +4. If the PHY and the Ethernet driver agree on the link state, no action is + performed. +5. At the end of the loop, the network monitor waits for a PHY interrupt or a + timeout. When either occurs, control returns to the top of the loop, and the + process repeats. +6. If a PHY interrupt happens, a signal is delivered to the task and handled by + the network monitor’s signal handler, which posts a semaphore to immediately + re-awaken the network monitor from its wait. diff --git a/Documentation/guides/ram_rom_disks.rst b/Documentation/guides/ram_rom_disks.rst new file mode 100644 index 0000000000..1507307ddf --- /dev/null +++ b/Documentation/guides/ram_rom_disks.rst @@ -0,0 +1,119 @@ +======================= +RAM Disks and ROM Disks +======================= + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/RAM+Disks+and+ROM+Disks + +NSH mkrd Command +================ + +The typical way to create a RAM disk is by using the NuttShell (NSH) ``mkrd`` +command. The syntax is: + +.. code-block:: shell + + mkrd [-m ] [-s ] + +This command creates a RAM disk consisting of ```` sectors, each of +size ```` (or 512 bytes if ```` is not specified). The +RAM disk is then registered as ``/dev/ram``. If ```` is not +specified, ``mkrd`` attempts to register the RAM disk as ``/dev/ram0``. + +Internally, the NSH ``mkrd`` command is a simple wrapper around the OS +``boardctl()`` interface, using the ``BOARDIOC_MKRD`` command. “Under the hood,” +this ``boardctl()`` command performs the following: + +1. Allocates kernel-space memory with ``kmm_malloc()`` of size ```` + times ```` +2. Zeros the allocated memory, and +3. Calls the OS-internal function ``ramdisk_register()`` to create the RAM disk. + +NSH ROMFS /etc Support +====================== + +A ROM disk is a block device created from a read-only file system image stored +in FLASH or other ROM. There is no NSH command available to create a ROM disk +at runtime. However, it is possible to enable ROM disk support in NSH using the +``CONFIG_NSH_ROMFSETC`` option, as described in the section on NSH start-up +scripts in the `NSH User Guide `_. + +Any application is able to create a ROM disk using the ``boardctl()`` interface +with the ``BOARDIOC_ROMDISK`` command. + +Creating RAM Disks in Board Bring-Up Logic +========================================== + +RAM disks may be created in board-specific initialization logic that runs in +supervisor mode. That logic might look as follows: + +.. code-block:: c + + int board_ramdisk(int minor, unsigned int sectsize, unsigned int nsectors) + { + size_t allocsize = (size_t)sectsize * (size_t)nsectors; + FAR uint8_t *buffer; + + /* Allocate the memory backing up the ramdisk */ + + buffer = (FAR uint8_t *)kmm_zalloc(allocsize); + if (buffer == NULL) + { + return -ENOMEM; + } + + /* Then register the ramdisk */ + + ret = ramdisk_register(minor, buffer, nsectors, sectsize, + RDFLAG_WRENABLED | RDFLAG_FUNLINK); + if (ret < 0) + { + kmm_free(buffer); + } + + return ret; + } + +Alternatively, this could be replaced by a call to the OS internal function +``mkrd()``. + +Creating ROM Disks in Board Bring-Up Logic +========================================== + +.. note:: + + Currently, the ``romdisk_register()`` function is only available within the + OS. Certain logic in ``apps/`` directly calls ``romdisk_register()``, which + violates the portable POSIX OS interface. The correct approach for an + application is to create a ROM disk via ``boardctl(BOARDIOC_ROMDISK)`` as + described above. Calling ``romdisk_register()`` directly is not only a + violation of the NuttX portable interface, but also is not allowed in + PROTECTED or KERNEL build modes. + +ROM disks, i.e., read-only disks in FLASH, can be created by board bring-up +logic in a way similar to RAM disks, with the following caveats: + +- The FLASH region is not allocated; the FLASH address, the sector size, and the + number of sectors must already be known. +- The ``romdisk_register()`` function is used instead of ``ramdisk_register()``. + +A simple example could look like: + +.. code-block:: c + + int board_romdisk(int minor, FAR uint8_t *buffer, unsigned int sectsize, + unsigned int nsectors) + { + /* Register the romdisk */ + + return romdisk_register(minor, buffer, nsectors, sectsize); + } + +Calling ``romdisk_register()`` is equivalent to calling ``ramdisk_register()`` +with the final parameter ``flags == 0``. + +Most ROM disks use the ROMFS file system, although CROMFS is another option. +Creating ROMFS file system images involves several steps. Tools are available +to simplify the process of building ROMFS images, but that topic is outside the +scope of this Wiki page. \ No newline at end of file diff --git a/Documentation/guides/reading_can_msgs.rst b/Documentation/guides/reading_can_msgs.rst new file mode 100644 index 0000000000..2e956a98ae --- /dev/null +++ b/Documentation/guides/reading_can_msgs.rst @@ -0,0 +1,62 @@ +==================== +Reading CAN Messages +==================== + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/Reading+CAN+Messages + +Twice now, there have been complaints or issues about reading messages from the +CAN driver. The usual concern is that the driver is somehow losing or dropping +CAN messages. In these cases, it is often discovered that the CAN driver is +being used incorrectly and, as is human nature, the driver itself is blamed for +the problem. + +When reading from the CAN driver, multiple messages may be returned, depending +on two factors: + +1. The size of the returned CAN messages. +2. The size of the buffer provided to receive CAN messages. + +It should never be assumed that a single message will be returned; making this +assumption can lead to lost CAN messages under conditions in which the read +buffer can hold more than one small message. The following example shows how to +properly handle the CAN read operation: + +.. code-block:: c + + #define BUFLEN 128 /* Some arbitrary size for the CAN RX buffer */ + + FAR struct can_msg_s *msg; + char rxbuffer[BUFLEN]; + ssize_t nread; + int nbytes; + int msglen + int i; + + /* Read messages into the RX buffer */ + + nread = read(fd, rxbuffer, BUFLEN); + + /* Check for read errors */ + ... + + /* Process each message in the RX buffer */ + + for (i = 0; i <= nread - CAN_MSGLEN(0); i += msglen) + { + /* Get the next message from the RX buffer */ + + msg = (FAR struct can_msg_s *)&rxbuffer[i]; + nbytes = can_dlc2bytes(msg->cm_hdr.ch_dlc); + msglen = CAN_MSGLEN(nbytes); + + DEBUGASSERT(i + msglen < BUFLEN); + + /* Process the next CAN message */ + ... + } + +By looping over the read buffer and parsing out each CAN message, it is +possible to avoid losing messages that are stored contiguously in the input +buffer. diff --git a/Documentation/guides/remove_device_drivers_nsh.rst b/Documentation/guides/remove_device_drivers_nsh.rst new file mode 100644 index 0000000000..96505d55f9 --- /dev/null +++ b/Documentation/guides/remove_device_drivers_nsh.rst @@ -0,0 +1,101 @@ +================================ +Removing Device Drivers with NSH +================================ + +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/Removing+Device+Drivers+with+NSH + +NuttX and Unix-like Operating Systems Compared +============================================== + +There are many things that are called device drivers. In this context, the +discussion is limited to **character device drivers**. In NuttX, character +device drivers are represented by device driver nodes in the top-level :doc:`pseudo +filesystem `. + +Standard Unix-like operating systems also support device driver nodes, which +superficially resemble NuttX device driver nodes: Both look like files and +usually reside under the top-level ``/dev`` directory. Both can be accessed +with standard POSIX file system commands such as ``open()``, ``close()``, +``read()``, ``write()``, and so forth. However, the similarity ends there. + +The payload of a standard Unix-like operating system device driver node is a +device major and minor number. These major and minor device numbers are used to +look up the actual device driver interface using internal OS logic and data +structures. A NuttX device node, by contrast, directly holds the device driver +interface with no intervening lookup. This design is less flexible, but it is +more efficient and conserves limited resources in an embedded system. + +In standard Unix-like operating systems, the device node can simply be deleted +using the shell command ``rm`` or the programmatic interface ``unlink()``. The +node is removed, and nothing special happens to the underlying device driver +(except that it may no longer be accessible). + +In NuttX, if the device node were removed in the same way, the entire device +interface would also be removed, effectively breaking the driver. Internally, +NuttX supports a function called ``unregister_driver()`` that can be invoked +to remove a device driver. Therefore, removing the device driver node must +behave as though ``unregister_driver()`` were called. + +The unlink() Method +=================== + +How is this accomplished in NuttX? It is done via a special device driver +method called ``unlink()``. + +NuttX device drivers are implemented via a vtable of function pointers. That +vtable defines the interface between the pseudo-file system and the device +driver. This vtable is the structure ``struct file_operations`` defined in +``[nuttx]/include/nuttx/fs/fs.h``. It provides several interfaces that closely +match the standard POSIX interfaces—``open()``, ``close()``, ``read()``, +``write()``, etc.—and also includes a method called ``unlink()``. This +``unlink()`` method is called by the NuttX VFS when a user removes a device +driver node. + +.. note:: + + Removal of device driver nodes is only permitted if + ``CONFIG_DISABLE_PSEUDOFS_OPERATIONS`` is **not** defined. All pseudo-file + system operations may be suppressed to reduce the FLASH footprint in systems + with extremely limited resources. + +Removing a Device Node from NSH +=============================== + +Below is a summary of what happens when a device node is deleted using the NSH +``rm`` command: + +1. The user enters the ``rm`` command. The NSH parser recognizes the command + and transfers control to the NSH function ``cmd_rm()``. + +2. ``cmd_rm()`` verifies the command, then calls the standard POSIX + ``unlink()`` interface. The logic in the VFS ``unlink()`` function in + ``[nuttx]/fs/vfs/fs_unlink.c`` is then executed. + +3. The VFS ``unlink()`` detects that the target to be removed is a device node + in the top-level pseudo-file system. It calls the device driver's + ``unlink()`` method. It also removes the device node from the + pseudo-filesystem. However, the underlying resources required to support + the device driver interface may remain until the device driver frees those + resources. + +4. When the device driver's ``unlink()`` method is called, it determines if + the device resources can be freed immediately. If so, it frees those + resources. If, for example, there are still open references to the device + driver, it may defer freeing the resources until the last client has closed + the device driver and there are no open references. In such a case, it may + set a flag indicating that the device driver has been unlinked. + +5. If freeing of device driver resources has been deferred, that flag will be + examined later. For instance, when the last client of the device driver + closes its reference to the driver, it checks whether the unlink operation + was deferred. If so, it frees any remaining device driver resources at that + time. + +.. warning:: + + Some character device driver instances do not implement the ``unlink()`` + method. If problems arise when attempting to remove character drivers as + described in this Wiki page, a missing ``unlink()`` method is the most + likely cause. diff --git a/Documentation/guides/updating_release_system_elf.rst b/Documentation/guides/updating_release_system_elf.rst index 7b83e909d5..9969a54fc1 100644 --- a/Documentation/guides/updating_release_system_elf.rst +++ b/Documentation/guides/updating_release_system_elf.rst @@ -2,6 +2,10 @@ Updating a Release System with ELF Programs =========================================== +.. warning:: + Migrated from: + https://cwiki.apache.org/confluence/display/NUTTX/Updating+a+Release+System+with+ELF+Programs + .. warning:: Migrated from: https://cwiki.apache.org/confluence/display/NUTTX/Updating+a+Release+System+with+ELF+Programs