Skip to content

시리얼 포트 매핑 ​

This topic shows how to determine the mapping between USART/UART serial port device names (e.g. "ttyS0") and the associated ports on a flight controller, such as TELEM1, TELEM2, GPS1, RC SBUS, Debug console.

The instructions are used to generate serial port mapping tables in flight controller documentation. For example: Pixhawk 4 > Serial Port Mapping.

INFO

The function assigned to each port does not have to match the name (in most cases), and is set using a Serial Port Configuration. Usually the port function is configured to match the name, which is why the port labelled GPS1 will work with a GPS out of the box.

STMxxyyy의 NuttX ​

보드 설정 파일을 검사하여 STMxxyyy 아키텍처에서 NuttX 빌드에 대한 매핑 획득 방법을 설명합니다. FMUv5를 사용하지만, 다른 FMU 버전/NuttX 보드에도 유사하게 확장할 수 있습니다.

default.cmake ​

The default.px4board lists a number of serial port mappings (search for the text "SERIAL_PORTS").

From /boards/px4/fmu-v5/default.px4board:

SERIAL_PORTS
    GPS1:/dev/ttyS0
    TEL1:/dev/ttyS1
    TEL2:/dev/ttyS2
    TEL4:/dev/ttyS3

Alternatively you can launch boardconfig using make px4_fmu-v5 boardconfig and access the serial port menu

    Serial ports  --->
        (/dev/ttyS0) GPS1 tty port
        ()  GPS2 tty port
        ()  GPS3 tty port
        ()  GPS4 tty port
        ()  GPS5 tty port
        (/dev/ttyS1) TEL1 tty port
        (/dev/ttyS2) TEL2 tty port
        ()  TEL3 tty port
        (/dev/ttyS3) TEL4 tty port
        ()  TEL5 tty port

nsh/defconfig ​

The nsh/defconfig allows you to determine which ports are defined, whether they are UART or USARTs, and the mapping between USART/UART and device. You can also determine which port is used for the serial/debug console.

Open the board's defconfig file, for example: /boards/px4/fmu-v5/nuttx-config/nsh/defconfig

Search for the text "ART" until you find a section like with entries formatted like CONFIG_STM32xx_USARTn=y (where xx is a processor type and n is a port number). 예:

ttyS0 CONFIG_STM32F7_USART1=y
ttyS1 CONFIG_STM32F7_USART2=y
ttyS2 CONFIG_STM32F7_USART3=y
ttyS3 CONFIG_STM32F7_UART4=y
ttyS4 CONFIG_STM32F7_USART6=y
ttyS5 CONFIG_STM32F7_UART7=y
ttyS6 CONFIG_STM32F7_UART8=y

The entries tell you which ports are defined, and whether they are UART or USART.

DEBUG 콘솔 매핑을 가져오기 위해 SERIAL_CONSOLE에 대한 defconfig 파일을 검색합니다. Increment the device number ttySn alongside (zero based) to get the device-to-serial-port mapping.

CONFIG_UART7_SERIAL_CONSOLE=y

To get the DEBUG console mapping we search the defconfig file for SERIAL_CONSOLE. Below we see that the console is on UART7:

#define PX4IO_SERIAL_DEVICE            "/dev/ttyS6"
#define PX4IO_SERIAL_TX_GPIO           GPIO_UART8_TX
#define PX4IO_SERIAL_RX_GPIO           GPIO_UART8_RX
#define PX4IO_SERIAL_BASE              STM32_UART8_BASE

board_config.h ​

For flight controllers that have an IO board, determine the PX4IO connection from board_config.h by searching for PX4IO_SERIAL_DEVICE.

For example, /boards/px4/fmu-v5/src/board_config.h:

ttyS0 CONFIG_STM32F7_USART1=y GPS1
ttyS1 CONFIG_STM32F7_USART2=y TEL1
ttyS2 CONFIG_STM32F7_USART3=y TEL2
ttyS3 CONFIG_STM32F7_UART4=y TEL4
ttyS4 CONFIG_STM32F7_USART6=y
ttyS5 CONFIG_STM32F7_UART7=y DEBUG
ttyS6 CONFIG_STM32F7_UART8=y PX4IO

So the PX4IO is on ttyS6 (we can also see that this maps to UART8, which we already knew from the preceding section).

결합 ​

비행 콘트롤러 문서의 결과 표는 다음과 같습니다.

ttyS0 CONFIG_STM32F7_USART1=y GPS1
ttyS1 CONFIG_STM32F7_USART2=y TEL1
ttyS2 CONFIG_STM32F7_USART3=y TEL2
ttyS3 CONFIG_STM32F7_UART4=y TEL4
ttyS4 CONFIG_STM32F7_USART6=y
ttyS5 CONFIG_STM32F7_UART7=y DEBUG
ttyS6 CONFIG_STM32F7_UART8=y PX4IO

In the flight controller docs the resulting table is:

UART장치포트
UART1/dev/ttyS0GPS
USART2/dev/ttyS1TELEM1 (흐름 제어)
USART3/dev/ttyS2TELEM2 (흐름 제어)
UART4/dev/ttyS3TELEM4
USART6/dev/ttyS4RC SBUS
UART7/dev/ttyS5디버그 콘솔
UART8/dev/ttyS6PX4IO

기타 아키텍처 ​

INFO

Contributions welcome!

See Also ​