티스토리 뷰

목차

    반응형

    [임베디드 리눅스] 시리얼 통신 안 될 때 확인 방법, 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

    반응형