저는 임베디드 Linux 플랫폼을 사용하고 있으며 커널은 2.6입니다. stty 명령을 사용하여 ttyS* 고급을 구성하고 있습니다. 문제는 하드웨어 흐름 제어를 켜려는 경우입니다.
stty -F /dev/ttySA0 crtscts
다른 장치와 통신할 수 없습니다(흐름 제어도 활성화됨 - 선택됨). /proc/tty/driver/sc16is7x2(직렬 장치)에 다음이 있음을 발견했습니다.
serinfo:1.0 driver revision:
0: uart:sc16is752 port:00000001 irq:53 tx:155 rx:0 DSR|CD|RI
1: uart:sc16is752 port:00000002 irq:53 tx:10 rx:0 DSR|CD|RI
그리고 동일한 하드웨어를 사용하는(그리고 하드웨어 흐름 제어가 작동하는) 다른 플랫폼에는 다음과 같은 것이 있습니다.
serinfo:1.0 driver revision:
0: uart:sc16is752 port:00000001 irq:53 tx:155 rx:0 CTS|DSR|CD|RI
1: uart:sc16is752 port:00000002 irq:53 tx:10 rx:0 CTS|DSR|CD|RI
따라서 차이점은 "CTS|DSR|CD|RI"와 "DSR|CD|RI"입니다. 이 "DSR|CD|RI"가 하드웨어 흐름 제어를 사용할 수 없는 문제가 될 수 있습니까?
답변1
두 가지 가능한 문제가 있습니다:
하나는 케이블이 잘못되었다는 것입니다. 하드웨어 흐름 제어 신호가 올바르게 전달되지 않으면 하드웨어 흐름 제어가 작동하지 않습니다.
또 다른 하나는 한쪽 끝이나 다른 쪽 끝에서 소프트웨어를 잘못 구성한 것입니다. 하드웨어 흐름 제어는 양쪽 끝의 소프트웨어에서 활성화되어야 합니다. 그리고 양쪽 끝의 소프트웨어는 해당 포트를 열어야 합니다.