본문 바로가기
~2024.10

우분투 리눅스에서 시리얼 포트 확인하는 명령어

by HJfan 2024. 2. 18.

🙏 포스팅을 읽기 전 참고해 주세요 🙏

해당 블로그는 신입 개발자가 공부한 내용을 기록 용도로 운영하는 공간입니다.

최대한 오피셜한 내용을 작성하려고 노력하고 있지만, 일부 부정확한 정보가 포함되어 있을 수 있습니다.

해당 내용은 댓글이나 메일을 남겨주시면 즉시 확인 후 조치를 취하도록 하겠습니다. 감사합니다.


1️⃣ 개발 환경

Virtual BOX 7.0
Ubuntu 17.04

2️⃣ 명령어

$ dmesg | grep tty



//2024.04.21 대체 가능하다고 알려진 명령어 몇 가지 추가
//검증X setserial 정도만 활용성 있어 보임.
$ lsusb
$ /sys/class/tty/*/device/driver
$ setserial -g /dev/tty*

위 명령어를 터미널에 입력하면,  tty0~~~ ttyS3~~~ 같은 출력이 나올 것이다.

(안 나오면, 가상머신의 직렬 포트 설정 등을 확인해보자)

일반적으로 [tty0]는 시스템의 주 콘솔 장치를 가리키고, [ttyS*] 혹은 [ttyUSB*]이 본인의 시리얼 포트에 해당한다.


3️⃣ 명령어 분석

그냥 명령어를 복사&붙여넣기로 사용해도 문제는 없겠지만, 명령어를 조금 더 세부적으로 분석해 보겠다.

dmesg : "display message"라는 의미로, 시스템의 메시지 버퍼에 저장된 커널 메시지를 출력한다.

                 이 메시지들은 시스템 부팅 과정, 드라이버 로딩, 하드웨어 인식 과정 등에서 커널에 의해 생성된다.

                 dmesg를 통해 시스템의 문제 진단, 하드웨어 인식 문제 해결, 드라이버 메시지 등을 확인할 수 있다.

 

ㆍ|(파이프) : "파이프"라고 불리는 이 기호는 리눅스와 유닉스 시스템에서 사용되는 기능 중 하나로,
                   한 명령어의
출력을 다른 명령어의 입력으로 전달하는 역할을 한다. 즉, 첫 번째 명령어의
                   결과를 두 번째 명령어가
처리할 수 있도록 연결해 준다는 것이다.

 

grep : "Global Regular Expression Print"의 약자로 텍스트 검색 도구이다. 주어진 패턴 또는 표현식과  
              일치하는 행을 파일이나 다른 명령어의 줄에서 찾아 출력한다.

 

tty : 'tty'는 위 명령어에서 'grep' 명령어와 함께 사용된 패턴으로, 텍스트 터미널(TeleTYpewriter) 또는 시리얼
           포트와 관련된 디바이스를 의미한다. 리눅스와 유닉스 시스템에서는 터미널 또는 시리얼 포트와 같은 통신
          인터페이스를 파일로 추상화하여 '\dev\tty', '\dev\ttyS0', '\dev\ttyUSB0'와 같은 디바이스 파일로 나타낸다.
          위 명령어에서 'tty'는 이런 디바이스와 관련된 메시지를 필터링하기 위해 사용된다.

 

결론적으로, 'dmesg | grep tty' 명령어는 시스템의 커널 메시지 중 터미널 또는 시리얼 포트와 관련된 메세지만

필터링하여 출력하는 명령어다. 이를 통해 사용자는 시스템의 시리얼 포트 상태, 문제 발생 여부, 인식된 터미널

디바이스 등에 대한 정보를 확인할 수 있는 것이다.


4️⃣ 출력 확인

[ 0.000000] console [tty0] enabled
[ 1.426240] 00:02: ttyS3 at I/O 0x2e8 (irq = 3, base_baud = 115200) is a 16550A

본인이 위 명령어를 사용했을 때 출력된 메시지를 통해 출력된 메시지가 무엇을 의미하는 지 간단하게 살펴보겠다.
[0.00..]과 [1.42..]는 타임스탬프이다. 즉 0.00은 부팅 프로세스 시작 시점에 발생했다는 의미이다.
그리고 출력 내용 중 두 번째 줄이 바로 시스템에 시리얼 포트가 인식되었다는 것을 의미한다.

구체적으로 ttyS3는 네 번째 시리얼 포트를 의미하고(윈도우에선 COM4), I/O 0x2e8은 포트의 I/O 주소를 나타내며,
이 주소는 시스템이 포트와 통신하기 위해 사용하는 하드웨어의 주소이다.

irq = 3은 인터럽트 요청(IRQ) 번호가 3이라는 것을 의미한다고 하는데, 이 부분은 아직 이해가 안 된 상태이다.
시리얼 포트가 시스템 리소스를 요청할 때 사용하는 인터럽트 번호라고 한다.

base_baud = 115200은 해당 포트의 보드레이트(통신 속도)가 115200bps임을 의미한다.
보드레이트가 무엇인지에 대해서는 찾아보는 것을 추천한다.

마지막으로, 16550A는 이 시리얼 포트에 사용된 UART칩의 모델을 나타낸다.


📝 Reference

👉 -

👉 -

👉 -