This is an automated email from the ASF dual-hosted git repository. xiaoxiang 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 641e8daaef0 docs/contributing: Add board documentation template. 641e8daaef0 is described below commit 641e8daaef07826bad46f27d09ee0a6d78df6624 Author: Matteo Golin <matteo.go...@gmail.com> AuthorDate: Fri May 16 20:19:31 2025 -0400 docs/contributing: Add board documentation template. Introduced a template for board support documentation to help standardize the documentation requirements for NuttX. Also added a small section to the documentation contributing guidelines where templates can be listed. This is part of item 9 in issue #16278 to improve NuttX quality. Signed-off-by: Matteo Golin <matteo.go...@gmail.com> --- Documentation/contributing/doc_templates/board.rst | 233 +++++++++++++++++++++ .../contributing/doc_templates/example-board.jpg | Bin 0 -> 569010 bytes Documentation/contributing/documentation.rst | 10 + 3 files changed, 243 insertions(+) diff --git a/Documentation/contributing/doc_templates/board.rst b/Documentation/contributing/doc_templates/board.rst new file mode 100644 index 00000000000..4e605950db3 --- /dev/null +++ b/Documentation/contributing/doc_templates/board.rst @@ -0,0 +1,233 @@ +=========================== +Board Documentation Example +=========================== + +.. tags:: chip:example, arch:example, vendor:example + +.. At the very top of the page, place your tags section! You should include any + tags which maybe applicable to your board, such as the chip it uses, its + architecture, any peripherals (i.e. ``ethernet``), etc. + +.. figure:: example-board.jpg + :scale: 30 % + :align: center + :alt: An alternative caption which appears for screen readers or when the image doesn't render + + This is the image caption. Replace with your board's image and its name! + +After your tags, write a short description about the board. This should include +the vendor, what it's generally used for, or some major feature about it (i.e. a +board made specifically for greenhouse monitoring). You can also link to an +external webpage here, like the vendor documentation page for the board. + +Features +======== + +.. Here you should list some of the key features of the board. Some examples are + included below to get you started, or look at other existing board docs. Much + of this information could be copied from the vendor website. + +* Chip name here +* Key chip feature 1 (FPU) +* Key chip feature 2 (4 core) +* Number of accessible GPIO pins +* On-board sensor +* Number of accessible UART interfaces +* WiFi support +* etc. + +If there are any unsupported features in your NuttX implementation of this +board, mention them here. + +.. warning:: + + If something is partially implemented but experimental, add a warning about + it. Don't frustrate users by saying that "SPI is supported" if you only + support 2/3 SPI interfaces, or can't configure frequency, etc. + +.. todo:: + + If you want help with implementing something important (i.e. a WiFi driver + for a WiFi chip), then you can also add a TODO asking contributors for help. + +.. note:: + + Do not list a ton of features specific to the chip that the board uses. That + is for the chip documentation to cover (as well as list unimplemented chip + features). I.e don't list "this board has I2C" if it's not user accessible + and is instead just used for communicating with peripherals. + +Buttons and LEDs +================ + +If the board has any user buttons, describe them here. + +If the board has any LEDs, describe them here. If there's a particular LED that +your NuttX implementation uses to show status, you can explain that further +here. Example: "The red LED labelled 'LED1' will flash at 1Hz to indicate a +kernel panic". + +Some Important Feature +====================== + +You can add sections just like this one to describe important features that your +board has support for. An example might be networking support (does it use WiFi, +what frequency, what chip, which protocols, any limitations, etc.). + +Pin Mapping +=========== + +Tell the user what the default pin mapping of the board is. This is especially +critical if your board uses some chip that typically has ``n`` number of GPIO +pins, but some of them are now reserved for a board peripheral (i.e. the RP2040 +has two SPI interfaces, but now one of them is reserved because it's connected +to an on-board Ethernet chip). + +You'll want to make a table similar to this one. At least include the pin +number, the GPIO number (if it's different from the pin number) and some comment +about the pin's functionality. + +===== ========== ========== +Pin Signal Notes +===== ========== ========== +1 GPIO0 Default TX for UART0 serial console +2 GPIO1 Default RX for UART0 serial console +3 Ground +4 GPIO2 +5 GPIO3 +6 GPIO4 Default SDA for I2C0 +7 GPIO5 Default SCL for I2C0 +8 Ground +9 GPIO6 Default SDA for I2C1 +10 GPIO7 Default SCL for I2C1 +11 VCC 3V3 +===== ========== ========== + +Power Supply +============ + +Any important information about power supply. If you want you can link to the +vendor documentation. It should be sufficient to explain the valid input voltage +range and mention any special quirks about the power system here. + +If the board logic has some power management implementation, you can explain it +here, too. + +Installation +============ + +Here, tell the user how to install any tools they'll need for building NuttX on +this board. You don't need to re-explain installing NuttX, but you will need to +list information about how to get any extra tool-chains. + +Wherever possible, link to existing documentation. Your board is based on some +chip, and the tool-chains that need be installed are the same for all boards +using this chip? Link to the documentation page of that chip where the install +instructions are. Your board needs OpenOCD to flash it? Link to the OpenOCD +installation guide. + +.. Note: you can link to existing docs using the :doc:`text <path/to/docpage>` + directive. Don't include the `.rst` at the end of the file path. + +If there are any easy commands you can give the user, create a console code +block like this one: + +.. code:: console + + $ mkdir somedir + $ cd some-dir + $ git clone --recursive <somerepo> + $ make build + $ make install + +The user can copy paste these commands to make the setup process easier. Please +keep in mind that NuttX supports building on more than just Linux systems, so +include any extra installation information for other OSes if +applicable/possible. + +Building NuttX +============== + +Tell the user how to build NuttX for the board. This should include any special +process that isn't just using ``./tools/configure.sh`` and running ``make``. + +.. If the build process is the same for all boards with this chip, link to the + chip documentation page. + +If your board has any specific configuration options in Kconfig that the user +should know about, describe them! + +* ``CONFIG_ENABLE_COOL_FEATURE``: Enables this board's coolest feature +* ``CONFIG_SOMETHING_ELSE``: Enable something else on the board + +Flashing +======== + +Explain to the user how to flash the NuttX image to the board. If there are +multiple methods, list them all. + +.. If the flashing information is the same for all boards with this chip, link + to the chip documentation page. You might only need to tell the user what + connector on the board they need to use. + +If your flashing procedure has steps, number them! + +1. Prepare an SD card +2. Copy files to SD card +3. Insert SD card +4. Power on + +Configurations +============== + +Boards come with one or more configuration pre-sets to get the user going. +Typically they include some kind of shell interface to NSH and when the board +has a major feature (like WiFi or a specific sensor) there is a configuration to +leverage that as well. + +You should mention the board "identifier" (name) for the ``tools/configure.sh`` +command so the user knows how to access the configurations. + +.. code:: console + + $ ./tools/configure.sh <your-board-name>:<config-name> + +nsh +--- + +Under sub-headings, list out the configurations that are available. A common one +is ``nsh``, which provides some basic access to the NSH shell over UART. + +The configuration description should tell the user everything they need to use +it. What baud rate is the shell? What interface? Do they need a special debug +probe to interact with it? Should an LED come on? + +Tell the user about any applications you included that are specific to the +configuration. In this case, they have NSH to play with. Maybe they can run +:doc:`getprime </applications/testing/getprime/index>` to benchmark the +processing speed? Link to the docs for these applications as much as possible. + +usbnsh +------ + +Same thing, but USB-based shell. + +wifi +---- + +Some headline feature, in this case WiFi. Tell the user how to play with it +using the examples or applications you included in the configuration. + +License Exceptions +================== + +If the board depends on any code that wasn't written by NuttX contributors, and +it's subject to a different license, you should identify that here. List +the file names and state the applicable license. + +* ``some/file/driver.c``: BSD licensed driver code +* ``some/file/blob.bin``: GPLv3 licensed driver binary for some proprietary chip + +.. If any of these license exceptions are specific to chip support code, not + just this one board, then link back to the chip documentation page instead of + duplicating. diff --git a/Documentation/contributing/doc_templates/example-board.jpg b/Documentation/contributing/doc_templates/example-board.jpg new file mode 100644 index 00000000000..2cde5daeb00 Binary files /dev/null and b/Documentation/contributing/doc_templates/example-board.jpg differ diff --git a/Documentation/contributing/documentation.rst b/Documentation/contributing/documentation.rst index 5193eaf9a3a..b63f9f7122b 100644 --- a/Documentation/contributing/documentation.rst +++ b/Documentation/contributing/documentation.rst @@ -68,6 +68,16 @@ changes such as documenting parts of NuttX which are not yet covered or even wri The contribution workflow is the same as for the code, so check the :doc:`/contributing/workflow` to understand how your changes should be upstreamed. +Some templates are available below for standard documentation types, such as board support documentation or certain +drivers, etc. These templates can be viewed here in the browser as an HTML render, but when writing your own +documentation from these templates you will want to copy their corresponding ``.rst`` file and modify it. + +.. toctree:: + :caption: Documentation templates + :glob: + + doc_templates/* + Writing ReStructure Text with Sphinx ====================================