라즈베리파이

라즈베리파이 UART

기하 2022. 6. 21. 22:06

https://wikidocs.net/7974

 

15. UART

# UART 구성 라즈베리 파이에는 두 가지 UART, 즉 [PL011](http://infocenter.arm.com/help/index.jsp?topic=/com.ar ...

wikidocs.net

 

라즈베리 파이에는 두 가지 UART, 즉 PL011과 미니 UART가 있습니다.

 

PL011은 광범위하게 16550 호환 가능한 UART이며

미니 UART는 기능이 적습니다.

 

라즈베리 파이의 모든 UART는 3.3V 전용입니다.

5V 시스템에 연결하면 손상이 발생합니다.

 

어댑터를 사용하여 5V 시스템에 연결할 수 있습니다.

또는 저가형 USB-3.3V 직렬 어댑터를 다양한 서드 파티에서 구입할 수 있습니다.

 

Pi Zero, 1, 2, 3 - 두 개의 UART

라즈베리 파이 제로, 1, 2, 3에는 다음과 같은 두 UART가 있습니다.

이   름 유  형
UART0 PL011
UART1 mini UART

 

Pi 4 - 여섯 개의 UART

라즈베리 파이 4에는 PL011이 4개가  더 있는데, 기본으로 비활성화되어 있습니다.

다음은 파이 4의 전체 UART 목록입니다.

 

UART0 PL011
UART1 미니 UART
UART2 PL011
UART3 PL011
UART4 PL011
UART5 PL011

기본 UART

라즈베리 파이에서는 GPIO 14(전송) 및 15(수신)에 존재하도록 하나의 UART가 선택됩니다.

이것이 기본 UART입니다. 기본적으로 이것은 리눅스 콘솔이 있을 수있는 UART이기도 합니다.

GPIO 14는 GPIO 헤더의 핀 8이고 GPIO 15는 핀 10입니다.

보조 UART

보조 UART는 일반적으로 GPIO 커넥터에 없습니다.

기본적으로 보조 UART는이 컨트롤러가 포함된 모델에서 결합된

무선 LAN/블루투스 컨트롤러의 블루투스 측에 연결됩니다.

구성

기본적으로 UART0 만 활성화됩니다.

다음 표에는 처음 두 UART의 할당이 요약되어 있습니다.

 

                            모델                          첫 번째 PL011(UART0)      미니 UART

라즈베리 파이 제로 기본 보조
라즈베리 파이 제로 W 보조(블루투스) 기본
라즈베리 파이 1 기본 보조
라즈베리 파이 2 기본 보조
라즈베리 파이 3 보조(블루투스) 기본
라즈베리 파이 4 보조(블루투스) 기본

참고: 미니 UART는 기본 또는 보조 UART로 지정되어 있는지 여부에 관계없이

기본적으로 비활성화되어 있습니다.

 

라즈베리 파이 OS의 리눅스 장치:

 

리눅스장치 설명
/dev/ttyS0 mini UART
/dev/ttyAMA0 첫번째 PL011(UART0)
/dev/serial0 기본 UART
/dev/swrial1 보조 UART

참고: /dev/serial0 /dev/serial1 /dev/ttyS0 또는 /dev/ttyAMA0을 가리키는 심볼릭 링크입니다.

 

미니 UART와 CPU 코어 주파수

미니 UART를 사용하려면 고정 VPU 코어 클록 주파수를 사용하도록 라즈베리 파이를 구성해야 합니다.

이는 미니 UART 클럭이 VPU 코어 클럭에 연결되어 있으므로

코어 클럭 주파수가 변경되면 UART 전송 속도도 변경되기 때문입니다. 

config.txt에 enable_uart와 core_freq 설정을 추가해 미니 UART의 작동을 변경할 수 있습니다.

다음 표에는 가능한 조합이 요약되어 있습니다.

enable_uart 플래그의 기본 상태는 어느 것이 기본 UART 인지에 따라 다릅니다.

리눅스 직렬 콘솔 비활성화

기본적으로 기본 UART는 리눅스 콘솔에 할당됩니다.

다른 목적으로 기본 UART를 사용하려면 라즈베리 파이 OS를 재구성해야합니다.

이것은 raspi-config을 사용해 수행할 수 있습니다.

  1. raspi-config 시작: sudo raspi-config
  2. Select option 3 - Interface Options.
  3. Select option P6 - Serial Port.
  4. Would you like a login shell to be accessible over serial?이라고 물으면 'No'로 대답합니다.
  5. Would you like the serial port hardware to be enabled?라고 물으면 'Yes'로 대답합니다.
  6. raspi-config를 종료하고 파이를 리부트하면 변경이 적용됩니다.

리눅스용 초기 콘솔(earlycon) 활성화

리눅스 커널은 부팅 프로세스에서 상대적으로 초기에 UART를 시작하지만

인프라의 일부 중요한 부분이 설정된 후에도 여전히 오래 걸립니다.

초기 단계의 실패는 해당 시점의 커널 로그 메시지에 액세스하지 않고 진단하기 어려울 수 있습니다.

"earlycon" 메커니즘은 바로 이 문제를 해결하기 위해 만들었습니다.

earlycon 사용을 지원하는 콘솔은 간단한 동기 출력을 허용하는 추가 인터페이스를 커널에 제공합니다.

printk는 문자가 UART로 출력 될 때까지 반환되지 않습니다.

 

커널 명령줄 매개 변수로 earlycon 활성화

- 어느 UART가 기본인지에 따라, 다음 중 하나를 cmdline.txt에 추가합니다.

# 파이 4와 컴퓨트 모듈 4(BCM2711)
earlycon=uart8250,mmio32,0xfe215040
earlycon=pl011,mmio32,0xfe201000

# 파이 2, 파이 3, 컴퓨트 모듈 3(BCM2836 & BCM2837)
earlycon=uart8250,mmio32,0x3f215040
earlycon=pl011,mmio32,0x3f201000

# 파이 1, 파이 제로, 컴퓨트 모듈(BCM2835)
earlycon=uart8250,mmio32,0x20215040
earlycon=pl011,mmio32,0x20201000

보드율은 115200으로 설정됩니다.

주의: 잘못된 초기 콘솔을 선택하면 파이가 부팅되지 않을 수 있습니다.

UART와 장치 트리

커널 깃허브 트리에 다양한 UART 장치 트리 오버레이 정의가 있습니다.

가장 유용한 오버레이는 disable-bt miniuart-bt입니다.

 

disable-bt는

블루투스 장치를 비활성화하고 첫 번째 PL011(UART0)을 기본 UART로 만듭니다.

또한 반드시 모뎀을 초기화하는 시스템 서비스를 비활성화하여, 

sudo systemctl disable hciuart를 사용해 UART에 연결하지 않게 해야 합니다.

 

miniuart-bt는

미니 UART를 사용하도록 블루투스 기능을 전환하고

첫 번째 PL011(UART0)을 기본 UART로 만듭니다.

이로 인해 사용 가능한 최대 전송 속도가 감소 할 수 있습니다(아래의 미니 UART 제한 사항 참조).

 

또한 force_turbo=1 또는core_freq=250 중 하나를 사용해

VPU 코어 클록을 고정 주파수로 설정해야합니다.

 

오버레이 uart2, uart3, uart4, uart5를 사용해

파이 4에서 4 개의 추가 UART를 활성화합니다.

폴더에 다른 UART 관련 오버레이가 있습니다.

 

장치 트리 오버레이에 대한 자세한 내용을 보려면 

/boot/overlays/README를 참조하거나 

dtoverlay -h 오버레이 이름을 실행해 설명과 사용 정보를 얻을 수 있습니다.

 

장치 트리 오버레이 사용 방법에 대한 전체 지침은이 페이지를 참조하세요.

간단히 말해서, 장치 트리 오버레이를 적용하려면 config.txt 파일에 행을 추가합니다.

파일명의 -overlay.dts 부분이 제거됨에 유의하세요. 예를 들면 다음과 같습니다.

dtoverlay=disable-bt

PL011과 미니 UART의 관련 차이점

미니 UART에는 더 작은 FIFO가 있습니다.

흐름 제어가 부족하여 더 높은 전송 속도에서 문자를 잃기 쉽습니다.

또한 주로 VPU 클럭 속도에 대한 전송 속도 링크로 인해 일반적으로 PL011보다 성능이 떨어집니다.

 

PL011에 비해 미니 UART의 특정 결함은 다음과 같습니다.

- 끊김 감지 없음

- 프레임 오류 감지 없음

- 패리티 비트 없음

- 수신 제한 시간 인터럽트 없음

- DCD, DSR, DTR, RI 신호 없음

 

미니 UART에 대한 추가 문서는 이곳의 SoC 주변 장치 문서에서 찾을 수 있습니다.