ttyUSB0의 직렬 흐름 제어 문제

ttyUSB0의 직렬 흐름 제어 문제

이는 다음과 관련이 있습니다.이전 스레드한 달쯤 전에 작성했는데 답장이 왔습니다.

오늘 저는 Belkin F5U409 USB 직렬 어댑터를 사용하여 Ubunutu 20을 실행하는 노트북에서 직렬 콘솔 로그인 프롬프트를 설정해 보았습니다. 나는 같은 문제에 직면했습니다. 더 큰 텍스트 출력이 결국 잘못된 텍스트로 분해되었습니다. 그러나 이 시간 설정으로 인해 stty ixon문제가 해결되지는 않습니다. 아래 질문의 샘플 출력을 참조하세요.

문맥상 RS232를 통해 Ubuntu 노트북에 연결하는 데 사용하는 컴퓨터는 EPSON PX-8입니다. PX-8에서는 TEL.COM이라는 터미널 에뮬레이션 소프트웨어를 사용합니다. 아래에서 PX-8에 구성한 터미널 매개변수를 참조하세요.

USB0에서 콘솔을 활성화하기 위해 systemd를 사용하고 있습니다. systemd를 사용하여 흐름 제어를 구성해야 합니까? stty 외에도 ttyUSB0에 대한 매개변수를 구성해야 하는 다른 위치가 있습니까?systemctl start [email protected]

Debian 10을 실행하는 다른 노트북에서 설정을 시도했는데 동일한 동작이 나타났습니다.

PX-8의 TEL.COM 설정:

Baud: 9600, Char Bits: 8, Parity: NONE, Stop Bits: 2, RTS: ON, Flow Control: ON

명령 기록을 출력하려고 할 때 이 문제의 예는 다음과 같습니다.

albert@t450:/$ history
    1  sudo rasp-config
    2  sudo raspi-config
    3  sudo nano /boot/cmdline.txt
    4  tail /boot/cmdline.txt
    5  sudo shutdown -r now
    6  sudo vim ~/boot/cmdline.txt
    7  cd /./boot
    8  dir
    9  sudo vim cmdline.txt
   10  sudo vim config.txt
   11  sudo shutdown -r now
   12  dfgdf
   13  vim
   14  sudo vim cmdline.txt
   15  cd /./boot
   16  sudo vim cmdline.txt
   17  sudo shutdown -r now
   18  cd /./boot
   19  sudo vim cmdline.txt
   20  sudo shutdown -r now
   21  ping 8.8.8.8
   2 xprt TEM=Vvj9s9ds9j3oin so nat1 machine
  x Rom =vos cngas-2goses9g3
-xtiet n n5
-s oiy
y

Ubuntu 시스템의 stty 구성:

albert@t450:/$ stty -a
speed 9600 baud; rows 40; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; 
kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; 
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; 
time = 0; -parenb -parodd -cmspar cs8 -hupcl cstopb cread -clocal -crtscts -ignbrk 
-brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany 
-imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 
bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop 
-echoprt echoctl echoke -flusho -extproc

이러한 매개변수는 모두 stty에 설정되어 있습니다.

ixon
ixoff 
stop = ^S
start = ^Q;
cs8 
cstopb
-parenb

답변1

벨킨 F5U109 꽤 오래된 디자인의 기기인 것 같으니 아마 F5U가 아닐까 싶습니다.409 동일한 USB 사용공급업체: 장비아이디도 비슷해요. 이 경우 ID로 인해 선택된 Linux 드라이버는mct_u232.c. 우리는 할 수 있다.h 파일~을 위한흐름 제어:

DTR/RTS 설정 외에는 흐름 제어 관련 요청이 구현되지 않습니다. 흐름 제어가 없으면 두 신호가 모두 삭제되지만 하드웨어 또는 소프트웨어 흐름 제어를 사용하면 두 신호가 모두 확인됩니다.

따라서 이 드라이버에는 XON/XOFF 소프트웨어 흐름 제어가 구현되지 않은 것으로 보이며 Windows 98에서 실행된 USB 명령을 스니핑하여 얻은 것입니다. 어쩌면 하드웨어 자체가 이 기능을 제공하지 않을 수도 있습니다.

사용자 수준에서 흐름 제어를 구현하려고 시도할 수 있지만 입력 및 출력에 선입선출이 있을 수 있으므로 이것만으로는 충분하지 않을 것입니다. 따라서 XOFF가 사용자 수준에 도달하면 여전히 문자가 너무 많은 fifo가 있을 수 있습니다. 취소합니다. 어쩌면 PX-8은 데이터를 패키징하는 데 사용할 수 있는 다른 프로토콜을 제공할까요?

추가 모뎀 라인 RTS 및 CTS(9핀 DB9의 경우 핀 7 및 8, DB25의 경우 핀 4 및 5)를 연결하여 하드웨어 흐름 제어를 계속 사용할 수 있습니다. PX-8을 터미널이 아닌 컴퓨터로 연결하는 경우 이를 교체해야 할 수도 있습니다. 가 stty crtscts필요할 수도 있습니다 -clocal.

또한 Linux는 제조업체의 적절한 문서 덕분에 널리 사용되는 FTDI 시리즈와 같은 다른 직렬 USB 장치를 더 잘 지원할 수 있습니다. FTDI 드라이버에 다음이 있는 것 같습니다.암호장치에서 XON 및 XOFF 문자를 설정하면 문자가 도착하여 커널에서 인식될 때까지 기다리지 않고도 하드웨어가 XOFF 문자 수신에 빠르게 응답할 수 있습니다. FTDI 칩의 불법 복사본이 존재하므로 완전한 호환성을 보장하려면 평판이 좋은 브랜드에서 구입하는 것이 좋습니다.

관련 정보