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- pathwhere it will appear in the pseudo file system 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.
- TTY_LAUNCH this depends on - CONFIG_TTY_LAUNCH, this feature allow user launch a new program with a special char input.- e.g. use ctrl+R to start a nuttx shell. e.g. use ctrl+E to start user entry. - You can use - TTY_LAUNCH_CHARto customize which special char.- You can choose launch method: - TTY_LAUNCH_ENTRYor- TTY_LAUNCH_FILE, If``TTY_LAUNCH_ENTRY`` you can set program entry by- TTY_LAUNCH_ENTRYPOINT. If``TTY_LAUNCH_FILE`` you can set file path by- TTY_LAUNCH_FILEPATH.- Also, you can customize: - TTY_LAUNCH_ARGS- TTY_LAUNCH_PRIORITY- TTY_LAUNCH_STACKSIZE
- User Access. Serial drivers are, ultimately, normal character drivers 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.