30 lines
1.1 KiB
ReStructuredText
30 lines
1.1 KiB
ReStructuredText
|
=====================
|
||
|
Serial Device Drivers
|
||
|
=====================
|
||
|
|
||
|
- ``include/nuttx/serial/serial.h``. All structures and APIs
|
||
|
needed to work with serial drivers are provided in this header
|
||
|
file.
|
||
|
|
||
|
- ``struct uart_ops_s``. Each serial device driver must
|
||
|
implement an instance of ``struct uart_ops_s``. That structure
|
||
|
defines a call table with the following methods:
|
||
|
|
||
|
- ``int uart_register(FAR const char *path, FAR uart_dev_t *dev);``.
|
||
|
A serial driver may register itself by calling
|
||
|
``uart_register()``, passing it the ``path`` where it will
|
||
|
appear in the `pseudo-file-system <#NxFileSystem>`__ and it's
|
||
|
initialized instance of ``struct uart_ops_s``. By convention,
|
||
|
serial device drivers are registered at paths like
|
||
|
``/dev/ttyS0``, ``/dev/ttyS1``, etc. See the
|
||
|
``uart_register()`` implementation in ``drivers/serial.c``.
|
||
|
|
||
|
- **User Access**. Serial drivers are, ultimately, normal
|
||
|
`character drivers <#chardrivers>`__ and are accessed as other
|
||
|
character drivers.
|
||
|
|
||
|
- **Examples**: ``arch/arm/src/stm32/stm32_serial.c``,
|
||
|
``arch/arm/src/lpc214x/lpc214x_serial.c``,
|
||
|
``arch/z16/src/z16f/z16f_serial.c``, etc.
|
||
|
|