본문 바로가기
C++ 200제/코딩 IT 정보

[임베디드 리눅스] 시리얼 통신 안 될 때 확인 방법, stty speed

by vicddory 2019. 1. 20.

[임베디드 리눅스] 시리얼 통신 안 될 때 확인 방법, stty speed


가끔... 잘되던 통신이 안될 때가 있다. USB 인식 실패 문제가 생기는 거다. 소스를 아무리 고쳐도 안 되거나, 케이블이나 주변의 문제는 아닌 거 같다. 그럴 경우엔 stty 명령어를 이용해 속도를 지정해 다시 시도해 보자.


먼저, 아래 그림처럼 ttyUSBn이 올라와 있는지 확인한다.


1
stty -< /dev/tty
cs


그리고, 사용할 포트의 상태를 알아보자.


1
stty -< /dev/ttyUSB0
cs


stty -a dev tty - 확인[임베디드 리눅스, 시리얼 통신과 stty speed] stty -a dev tty - 확인


빨간 박스안의 정보처럼 speed, 즉, baud rate가 0으로 잡혀있다.


상식적으론 코드 안에서 baud rate를 설정하면 저 값이 바뀌어야 하지만, 어떤 환경에선 코드의 명령어가 OS에 적용되지 않는 경우도 있다.


이럴 땐, 강제로 속도를 잡아주자.


stty speed 921600 ttyUSB0 - 속도 확인[임베디드 리눅스, 시리얼 통신과 stty speed] stty speed 921600 ttyUSB0 - 속도 확인


1
stty speed 921600 < /dev/ttyUSB0
cs


위의 명령어를 넣으면 0이 바로 출력되는데, stty speed...를 실행하면 바로 이전의 설정값이 자동으로 출력된다.


그러니 위의 그림처럼 0이 출력되는 경우는 stty 명령어가 잘 적용되었다는 의미로 받아들이면 되겠다. 이런 귀찮은 과정을 거쳐서 다시 통신을 시도해 보면 잘 될 거다.


굳이 이런 과정을 거치지 않고 코드에서 제어할 수 있어야 하는데, 종종 제어되지 않는 상황이 발생하는데 정확한 이유는 모르겠다.


[임베디드 리눅스] 시리얼 통신 안 될 때 확인 방법, stty speed

댓글