Documentation: add dummy pages for missing filesystems and drivers

This commit is contained in:
raiden00pl
2023-10-27 12:57:14 +02:00
committed by Alan Carvalho de Assis
parent 870139e45f
commit d72c6802c1
70 changed files with 546 additions and 222 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
==============
Boards support
Boards Support
==============
This page discusses the board support logic for NuttX.
@@ -0,0 +1,97 @@
======
EEPROM
======
EEPROMs are a form of Memory
Technology Device (MTD). EEPROMs are non-volatile memory like FLASH, but
differ in underlying memory technology and differ in usage in many respects:
They may not be organized into blocks (at least from the standpoint of the
user) and it is not necessary to erase the EEPROM memory before re-writing
it. In addition, EEPROMs tend to be much smaller than FLASH parts, usually
only a few kilobytes vs megabytes for FLASH. EEPROM tends to be used to
retain a small amount of device configuration information; FLASH tends
to be used for program or massive data storage. For these reasons, it may
not be convenient to use the more complex MTD interface but instead use
the simple character interface provided by the EEPROM drivers.
EEPROM Device Support
=====================
drivers/eeprom/spi_xx25xx.c
---------------------------
This is a driver for SPI EEPROMs that use the same commands as the
25AA160::
Manufacturer Device Bytes PgSize AddrLen
Microchip
25xx010A 128 16 1
25xx020A 256 16 1
25AA02UID 256 16 1
25AA02E48 256 16 1
25AA02E64 256 16 1
25xx040 512 16 1+bit
25xx040A 512 16 1+bit
25xx080 1024 16 1
25xx080A 1024 16 2
25xx080B 1024 32 2
25xx080C 1024 16 x
25xx080D 1024 32 x
25xx160 2048 16 2
25xx160A/C 2048 16 2 TESTED
25xx160B/D 2048 32 2
25xx160C 2048 16 2
25xx160D 2048 32 2
25xx320 4096 32 2
25xx320A 4096 32 2
25xx640 8192 32 2
25xx640A 8192 32 2
25xx128 16384 64 2
25xx256 32768 64 2
25xx512 65536 128 2
25xx1024 131072 256 3
Atmel
AT25010B 128 8 1
AT25020B 256 8 1
AT25040B 512 8 1+bit
AT25080B 1024 32 2
AT25160B 2048 32 2
AT25320B 4096 32 2
AT25640B 8192 32 2
AT25128B 16384 64 2
AT25256B 32768 64 2
AT25512 65536 128 2
AT25M01 131072 256 3
drivers/mtd/at24xx.c
--------------------
This is a driver for I2C-based at24cxx EEPROM (at24c32, at24c64, at24c128,
at24c256, at24c512). This driver is currently provided as an MTD driver
but could easily be modified to support the character driver interface.
File Systems
============
Most EEPROM parts are too small to be candidates for use with a file
system. The character driver interface is optimal for these small parts
because you can open and access the EEPROM part as if it were a single,
fixed size file.
It is also possible to use these character drivers with a file system.
The character driver can converted to a block device using the NuttX loop
device. The loop device can be found the file drivers/loop.c. Interface
function prototypes can be found in include/nuttx/fs/fs.h::
int losetup(FAR const char *devname, FAR const char *filename,
uint16_t sectsize, off_t offset, bool readonly);
Given a file or character devices at 'filename', losetup will create the
block device 'devname' using a bogus sector size of sectsize. 'offset' is
normally zero but can be used to provide an offset into the EEPROM where
the block driver data starts; The EEPROM block driver can also be read-
only.
There is a corresponding function that will destroy the loop device::
int loteardown(FAR const char *devname);
@@ -2,6 +2,13 @@
Block Device Drivers
====================
.. toctree::
:maxdepth: 1
eeprom.rst
ramdisk.rst
Block device drivers have these properties:
- ``include/nuttx/fs/fs.h``. All structures and APIs needed
@@ -37,107 +44,3 @@ Block device drivers have these properties:
- **Examples**. ``drivers/loop.c``,
``drivers/mmcsd/mmcsd_spi.c``, ``drivers/ramdisk.c``, etc.
``ramdisk.c``
=============
Can be used to set up a block of memory or (read-only) FLASH as
a block driver that can be mounted as a file system. See
include/nuttx/drivers/ramdisk.h.
EEPROM
======
EEPROMs are a form of Memory
Technology Device (MTD). EEPROMs are non-volatile memory like FLASH, but
differ in underlying memory technology and differ in usage in many respects:
They may not be organized into blocks (at least from the standpoint of the
user) and it is not necessary to erase the EEPROM memory before re-writing
it. In addition, EEPROMs tend to be much smaller than FLASH parts, usually
only a few kilobytes vs megabytes for FLASH. EEPROM tends to be used to
retain a small amount of device configuration information; FLASH tends
to be used for program or massive data storage. For these reasons, it may
not be convenient to use the more complex MTD interface but instead use
the simple character interface provided by the EEPROM drivers.
EEPROM Device Support
---------------------
drivers/eeprom/spi_xx25xx.c
~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is a driver for SPI EEPROMs that use the same commands as the
25AA160::
Manufacturer Device Bytes PgSize AddrLen
Microchip
25xx010A 128 16 1
25xx020A 256 16 1
25AA02UID 256 16 1
25AA02E48 256 16 1
25AA02E64 256 16 1
25xx040 512 16 1+bit
25xx040A 512 16 1+bit
25xx080 1024 16 1
25xx080A 1024 16 2
25xx080B 1024 32 2
25xx080C 1024 16 x
25xx080D 1024 32 x
25xx160 2048 16 2
25xx160A/C 2048 16 2 TESTED
25xx160B/D 2048 32 2
25xx160C 2048 16 2
25xx160D 2048 32 2
25xx320 4096 32 2
25xx320A 4096 32 2
25xx640 8192 32 2
25xx640A 8192 32 2
25xx128 16384 64 2
25xx256 32768 64 2
25xx512 65536 128 2
25xx1024 131072 256 3
Atmel
AT25010B 128 8 1
AT25020B 256 8 1
AT25040B 512 8 1+bit
AT25080B 1024 32 2
AT25160B 2048 32 2
AT25320B 4096 32 2
AT25640B 8192 32 2
AT25128B 16384 64 2
AT25256B 32768 64 2
AT25512 65536 128 2
AT25M01 131072 256 3
drivers/mtd/at24xx.c
~~~~~~~~~~~~~~~~~~~~
This is a driver for I2C-based at24cxx EEPROM (at24c32, at24c64, at24c128,
at24c256, at24c512). This driver is currently provided as an MTD driver
but could easily be modified to support the character driver interface.
File Systems
------------
Most EEPROM parts are too small to be candidates for use with a file
system. The character driver interface is optimal for these small parts
because you can open and access the EEPROM part as if it were a single,
fixed size file.
It is also possible to use these character drivers with a file system.
The character driver can converted to a block device using the NuttX loop
device. The loop device can be found the file drivers/loop.c. Interface
function prototypes can be found in include/nuttx/fs/fs.h::
int losetup(FAR const char *devname, FAR const char *filename,
uint16_t sectsize, off_t offset, bool readonly);
Given a file or character devices at 'filename', losetup will create the
block device 'devname' using a bogus sector size of sectsize. 'offset' is
normally zero but can be used to provide an offset into the EEPROM where
the block driver data starts; The EEPROM block driver can also be read-
only.
There is a corresponding function that will destroy the loop device::
int loteardown(FAR const char *devname);
@@ -0,0 +1,7 @@
=============
``ramdisk.c``
=============
Can be used to set up a block of memory or (read-only) FLASH as
a block driver that can be mounted as a file system. See
include/nuttx/drivers/ramdisk.h.
@@ -0,0 +1,3 @@
================
One Wire Drivers
================
@@ -0,0 +1,3 @@
================================
Block Driver to Character Driver
================================
@@ -0,0 +1,3 @@
====================
Constactless Devices
====================
@@ -0,0 +1,8 @@
==============
Crypto Drivers
==============
.. toctree::
:caption: Supported Drivers
se05x.rst
@@ -0,0 +1,3 @@
=============
EFUSE Drivers
=============
@@ -0,0 +1,5 @@
===========
I2S Drivers
===========
See ``include/nuttx/audio/i2s.h``.
@@ -52,20 +52,28 @@ Character device drivers have these properties:
.. toctree::
:caption: Supported Drivers
:maxdepth: 2
serial.rst
touchscreen.rst
1wire.rst
analog.rst
pwm.rst
bch.rst
can.rst
quadrature.rst
timer.rst
rtc.rst
watchdog.rst
keypad.rst
contactless.rst
crypto/index.rst
efuse.rst
i2s.rst
input/index.rst
ipcc.rst
leds/index.rst
loop.rst
math.rst
modem.rst
motor/index.rst
note.rst
foc.rst
ws2812.rst
se05x.rst
nullzero.rst
quadrature.rst
rc.rst
rf.rst
serial.rst
timers/index.rst
touchscreen.rst
@@ -0,0 +1,10 @@
=============
Input Devices
=============
.. toctree::
:caption: Supported Drivers
keypad.rst
See ``include/nuttx/input/*.h`` for registration information.
@@ -0,0 +1,3 @@
======================================================
IPCC (Inter Processor Communication Controller) Driver
======================================================
@@ -0,0 +1,8 @@
====
LEDS
====
.. toctree::
:caption: Supported Drivers
ws2812.rst
@@ -0,0 +1,6 @@
===========
Loop Device
===========
Supports the standard loop device that can be used to export a
file (or character device) as a block device.
@@ -0,0 +1,3 @@
=========================
Math Acceleration Drivers
=========================
@@ -0,0 +1,3 @@
============
Modem Device
============
@@ -0,0 +1,8 @@
=============
Motor Drivers
=============
.. toctree::
:caption: Supported Drivers
foc.rst
@@ -0,0 +1,3 @@
======================
Remote Control Devices
======================
@@ -0,0 +1,3 @@
==========
RF Devices
==========
@@ -0,0 +1,12 @@
==============
Timers Drivers
==============
.. toctree::
:caption: Supported Drivers
timer.rst
pwm.rst
watchdog.rst
rtc.rst
+116 -78
View File
@@ -30,48 +30,57 @@ Drivers in NuttX generally work in two distinct layers:
* A "lower half" which is typically hardware-specific. This is
usually implemented at the architecture or board level.
Subdirectories of `nuttx/drivers`
=================================
Subdirectories of ``nuttx/drivers``
===================================
* ``analog/``
* ``1wire/`` :doc:`character/1wire`
1wire device drivers.
* ``analog/`` :doc:`character/analog`
This directory holds implementations of analog device drivers.
This includes drivers for Analog to Digital Conversion (ADC) as
well as drivers for Digital to Analog Conversion (DAC).
See ``include/nuttx/analog/*.h`` for registration information.
* ``audio/``
* ``audio/`` :doc:`special/audio`
Audio device drivers.
See ``include/nuttx/audio/audio.h`` for interface definitions.
See also the audio subsystem at ``nuttx/audio/``.
* ``bch/``
* ``bch/`` :doc:`character/bch`
Contains logic that may be used to convert a block driver into
a character driver. This is the complementary conversion as that
performed by loop.c.
See ``include/nuttx/fs/fs.h`` for registration information.
* ``can/``
* ``can/`` :doc:`character/can`
This is the CAN drivers and logic support.
See ``include/nuttx/can/can.h`` for usage information.
* ``clk/``:doc:`special/clk`
* ``contactless/``
Clock management (CLK) device drivers.
* ``contactless/`` :doc:`character/contactless`
Contactless devices are related to wireless devices. They are not
communication devices with other similar peers, but couplers/interfaces
to contactless cards and tags.
* ``crypto/``
* ``crypto/`` :doc:`character/crypto/index`
Contains crypto drivers and support logic, including the ``/dev/urandom`` device.
Contains crypto drivers and support logic, including the
``/dev/urandom`` device.
* ``eeprom/``
* ``devicetree/`` :doc:`special/devicetree`
Device Tree support.
* ``dma/`` :doc:`special/dma`
DMA drivers support.
* ``eeprom/`` :doc:`block/eeprom`
An EEPROM is a form of Memory Technology Device (see ``drivers/mtd``).
EEPROMs are non-volatile memory like FLASH, but differ in underlying
@@ -86,90 +95,123 @@ Subdirectories of `nuttx/drivers`
interface but instead use the simple character interface provided by
the EEPROM drivers.
* ``i2c/``
* ``efuse/`` :doc:`character/efuse`
EFUSE drivers support.
* ``i2c/`` :doc:`special/i2c`
I2C drivers and support logic.
See ``include/nuttx/i2c/i2c_master.h``
* ``i2s/``
* ``i2s/`` :doc:`character/i2s`
I2S drivers and support logic.
See ``include/nuttx/audio/i2s.h``
* ``input/``
* ``input/`` :doc:`character/input/index`
This directory holds implementations of human input device (HID) drivers.
This includes such things as mouse, touchscreen, joystick,
keyboard and keypad drivers.
See ``include/nuttx/input/*.h`` for registration information.
Note that USB HID devices are treated differently. These can be found under
``usbdev/`` or ``usbhost/``.
* ``lcd/``
* ``ioexpander/`` :doc:`special/ioexpander`
Drivers for parallel and serial LCD and OLED type devices. These drivers support
interfaces as defined in ``include/nuttx/lcd/lcd.h``
IO Expander drivers.
* ``leds/``
* ``ipcc/`` :doc:`character/ipcc`
IPCC (Inter Processor Communication Controller) driver.
* ``lcd/`` :doc:`special/lcd`
Drivers for parallel and serial LCD and OLED type devices.
* ``leds/`` :doc:`character/leds/index`
Various LED-related drivers including discrete as well as PWM- driven LEDs.
* ``loop/``
* ``loop/`` :doc:`character/loop`
Supports the standard loop device that can be used to export a
file (or character device) as a block device.
See ``losetup()`` and ``loteardown()`` in ``include/nuttx/fs/fs.h``.
* ``mmcsd/``
* ``math/`` :doc:`character/math`
MATH Acceleration drivers.
* ``misc/`` :doc:`character/nullzero` :doc:`special/rwbuffer` :doc:`block/ramdisk`
Various drivers that don't fit elsewhere.
* ``mmcsd/`` :doc:`special/sdio` :doc:`special/mmcsd`
Support for MMC/SD block drivers. MMC/SD block drivers based on
SPI and SDIO/MCI interfaces are supported.
See include/nuttx/mmcsd.h and include/nuttx/sdio.h for further information.
* ``modem/`` :doc:`character/modem`
* ``mtd/``
Modem Support.
* ``motor/`` :doc:`character/motor/index`
Motor control drivers.
* ``mtd/`` :doc:`special/mtd`
Memory Technology Device (MTD) drivers. Some simple drivers for
memory technologies like FLASH, EEPROM, NVRAM, etc.
See ``include/nuttx/mtd/mtd.h``
(Note: This is a simple memory interface and should not be
confused with the "real" MTD developed at infradead.org. This
logic is unrelated; I just used the name MTD because I am not
aware of any other common way to refer to this class of devices).
* ``net/``
* ``net/`` :doc:`special/net/index`
Network interface drivers.
See also ``include/nuttx/net/net.h``
* ``notes/`` :doc:`character/note`
* ``pipes/``
Note Driver Support.
FIFO and named pipe drivers. Standard interfaces are declared in ``include/unistd.h``
* ``pipes/`` :doc:`special/pipes`
* ``power/``
FIFO and named pipe drivers.
Standard interfaces are declared in ``include/unistd.h``
Power management (PM) driver interfaces. These interfaces are used
to manage power usage of a platform by monitoring driver activity
and by placing drivers into reduce power usage modes when the
drivers are not active.
* ``power/`` :doc:`special/power/index`
* ``pwm/``
Various drivers related to power managament.
Provides the "upper half" of a pulse width modulation (PWM) driver.
The "lower half" of the PWM driver is provided by device-specific logic.
* ``rc/`` :doc:`character/rc`
See ``include/nuttx/timers/pwm.h`` for usage information.
Remote Control Device Support.
* ``sensors/``
* ``regmap/`` :doc:`special/regmap`
Regmap Subsystems Support.
* ``reset/`` :doc:`special/reset`
Reset Driver Support.
* ``rf/`` :doc:`character/rf`
RF Device Support.
* ``rptun/`` :doc:`special/rptun`
Remote Proc Tunnel Driver Support.
* ``segger/`` :doc:`special/segger`
Segger RTT drivers.
* ``sensors/`` :doc:`special/sensors`
Drivers for various sensors. A sensor driver differs little from
other types of drivers other than they are use to provide measurements
@@ -180,57 +222,53 @@ Subdirectories of `nuttx/drivers`
measure and convert voltage levels. DACs, however, are retained in
the ``analog/`` sub-directory.
* ``serial/``
* ``serial/``:doc:`character/serial`
Front-end character drivers for chip-specific UARTs.
This provide some TTY-like functionality and are commonly used (but
not required for) the NuttX system console.
See also ``include/nuttx/serial/serial.h``
* ``spi/``
* ``spi/`` :doc:`special/spi`
SPI drivers and support logic.
See ``include/nuttx/spi/spi.h``
* ``syslog/``
* ``syslog/`` :doc:`special/syslog`
System logging devices.
See ``include/syslog.h`` and ``include/nuttx/syslog/syslog.h``
* ``timers/`` :doc:`character/timers/index`
* ``timers/``
Includes support for various timer devices.
Includes support for various timer devices including:
- An "upper half" for a generic timer driver.
See ``include/nuttx/timers/timer.h`` for more information.
- An "upper half" for a generic watchdog driver.
See ``include/nuttx/timers/watchdog.h`` for more information.
- RTC drivers
* ``usbdev/``
* ``usbdev/`` :doc:`special/usbdev`
USB device drivers.
See also ``include/nuttx/usb/usbdev.h``
* ``usbhost/``
* ``usbhost/`` :doc:`special/usbhost`
USB host drivers.
See also ``include/nuttx/usb/usbhost.h``
* ``usbmisc/`` :doc:`special/usbmisc`
* ``video/``
USB Miscellaneous drivers.
* ``usbmonitor/`` :doc:`special/usbmonitor`
USB Monitor support.
* ``usrsock/`` :doc:`special/usrsock`
Usrsock Driver Support.
* ``video/`` :doc:`special/video`
Video-related drivers.
See ``include/nuttx/video/``
* ``virtio/`` :doc:`special/virtio`
* ``wireless/``
Virtio Device Support.
* ``wireless/`` :doc:`special/wireless`
Drivers for various wireless devices.
@@ -0,0 +1,6 @@
====================
Audio Device Drivers
====================
See ``include/nuttx/audio/audio.h`` for interface definitions.
See also the audio subsystem at ``nuttx/audio/``.
@@ -0,0 +1,3 @@
======================
Clock management (CLK)
======================
@@ -0,0 +1,3 @@
===================
Device Tree support
===================
@@ -0,0 +1,3 @@
===========
DMA Drivers
===========
@@ -2,8 +2,9 @@
I2C Device Drivers
==================
- ``include/nuttx/i2c/i2c.h``. All structures and APIs needed
to work with I2C drivers are provided in this header file.
- ``include/nuttx/i2c/i2c_master.h`` and ``include/nuttx/i2c/i2c_slave.h``.
All structures and APIs needed to work with I2C drivers are provided in
this header file.
- ``struct i2c_ops_s``. Each I2C device driver must implement
an instance of ``struct i2c_ops_s``. That structure defines a
@@ -22,17 +22,33 @@ following section.
.. toctree::
:caption: Supported Drivers
syslog.rst
spi.rst
i2c.rst
ethernet.rst
audio.rst
clk.rst
devicetree.rst
dma.rst
framebuffer.rst
i2c.rst
ioexpander.rst
lcd.rst
mtd.rst
sdio.rst
usbhost.rst
usbdev.rst
rwbuffer.rst
regmap.rst
reset.rst
rptun.rst
rwbuffer.rst
sensors.rst
segger.rst
spi.rst
syslog.rst
sdio.rst
usbdev.rst
usbhost.rst
usbmisc.rst
usbmonitor.rst
usrsock.rst
mmcsd.rst
net/index.rst
pipes.rst
power/index.rst
virtio.rst
video.rst
wireless.rst
@@ -0,0 +1,3 @@
==========================
IO Expander Device Drivers
==========================
@@ -0,0 +1,6 @@
====================
MMCSD Device Drivers
====================
- ``include/nuttx/mmcsd.h``. All structures and APIs needed to
work with MMCSD drivers are provided in this header file.
@@ -0,0 +1,14 @@
=========================
Network interface drivers
=========================
- ``include/nuttx/net/net.h``. All structures and APIs
needed to work with network device drivers are provided in
this header file.
.. toctree::
:caption: Supported Drivers
ethernet.rst
@@ -0,0 +1,3 @@
===========================
FIFO and named pipe drivers
===========================
@@ -0,0 +1,8 @@
=====================
Power-related Drivers
=====================
.. toctree::
:caption: Supported Drivers
pm/index.rst
@@ -85,8 +85,8 @@ All PM interfaces are declared in the file ``include/nuttx/power/pm.h``.
Called by a device driver in
order to register to receive power management event callbacks.
Refer to the :ref:`components/power:Callbacks` section for more
details.
Refer to the `Callbacks`_
section for more details.
:param callbacks:
An instance of :c:struct:`pm_callback_s`
@@ -100,8 +100,8 @@ All PM interfaces are declared in the file ``include/nuttx/power/pm.h``.
Called by a device driver in
order to unregister previously registered power management event
callbacks. Refer to the :ref:`components/power:Callbacks` section for
more details.
callbacks. Refer to the `Callbacks`_
section for more details.
**Input Parameters:**

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

@@ -0,0 +1,3 @@
============
Reset Driver
============
@@ -0,0 +1,23 @@
==========================
Remote Proc Tunnel Drivers
==========================
RPTUN driver is used for multi-cores' communication.
Supported RPTUN drivers:
- RPMSG File System
- RPMSG domain (remote) sockets
- RPMSG UART Driver
- RPMSG net Driver
- RPMSG Usersock
- RPMSG Sensor Driver
- RPMSG RTC Driver
- RPMSG MTD
- RPMSG Device
- RPMSG Block Driver
- RPMSG IO expander
- RPMSG uinput
- RPMSG clk Driver
- RPMSG syslog
- RPMSG regulator
@@ -0,0 +1,10 @@
==================
Segger RTT drivers
==================
Supported Segger drivers:
- serial over RTT - ``CONFIG_SERIAL_RTTx``,
- console over RTT - ``CONFIG_SERIAL_RTT_CONSOLE_CHANNEL``
- Segger SystemView - ``CONFIG_SEGGER_SYSVIEW``
- Note RTT - ``CONFIG_NOTE_RTT``
@@ -0,0 +1,3 @@
=========================
USB Miscellaneous Drivers
=========================
@@ -0,0 +1,3 @@
===================
USB Monitor support
===================
@@ -0,0 +1,3 @@
==============
Usrsock Driver
==============

Some files were not shown because too many files have changed in this diff Show More