CY(4)

명칭
cy - Cyclades Cyclom-Y 시리얼 드라이버

서식
device cy0 at isa? tty irq 10 iomem 0xd4000 iosiz 0x2000 device cy1 at isa? tty irq 11 iomem 0xd6000 iosiz 0x2000

마이나 번호:

    0bMMMMMMMMMMMMMMMMxxxxxxxxOLIMMMMM
                              callOut
                               Lock
                                Initial
      MMMMMMMMMMMMMMMM           MMMMMMinor

해설
cy 드라이버는 Cyclades 의 Cyclom-Y 보드에 실려 있다 Cirrus Logic CD1400 베이스의 EIA RS-232C (CCITT V. 24) 통신 인터페이스 (포트)를 서포트합니다. 각각의 CD1440 는 4 개의 포트를 제공합니다. Cyclom-Y 보드에는 다양한 수의 CD1400 를 탑재한 모델이 있습니다. 이 드라이버는 1 살의 보드 근처 최대 8 개(살)까지의 CD1440 (32 포트)를 서포트하고 있습니다.

회선의 입출력은 이하의 속도의 어느쪽이든을 회선 마다 설정 가능합니다: 50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200 bps. 그 이후, 최대 150000 까지의 속도는, termios 인터페이스에서는 서포트 되고 있습니다만, sgttyb 호환 인터페이스에서는 서포트되고 있지 않습니다. CD1440 는 115200 bps 이상의 속도를 효율적으로 취급할 수 있을 정도의 속도는 없습니다. 1 개의 회선이라면 115200 bps 보다 기분 빠르게 송신할 수가 있습니다만, 4 개의 회선을 쌍방향으로 동시에 사용하는 경우는, CD1440 에서는 약 90000 bps 가 한계가 됩니다.

cy 드라이버에 의해 제어되는 시리얼 포트는 `착호'와 `발호'의 어느 쪽에라도 사용할 수 있습니다. 각각의 포트에 대해, 착호디바이스와 발호디바이스가 존재합니다. 발호디바이스의 마이나 번호는 대응하는 착호포트의 것보다 128 만 큰 번호가 붙어 있습니다. 일반적으로는, 착호디바이스를 사용합니다. 착호디바이스를 오픈 도중의 프로세스는, 통상은, 캐리어가 올 때까지, 한편, 발호디바이스가 활동 상태가 아니게 될 때까지 기다리게 됩니다. 발호디바이스를 사용하는 것으로, 착호디바이스로 캐리어 기다려 하고 있다 프로세스의 틈을 찔러 포트를 사용할 수가 있습니다. 발호디바이스를 오픈하려고 하는 프로세스는 캐리어 대기를 하지 않습니다. 한편, 발호디바이스를 오픈하려고 하는 프로세스는, 캐리어 대기 하고 있는 다른 프로세스를 보다 깊은 sleeve 상태로 합니다. 이것에 의해, 발호세션으로 양프로세스가 충돌하는 것은 없어집니다. 일반적인 포트로 동작해, 한편, 캐리어 기다려 하지 않고 포토를 오픈할 필요가 있으면(자) 가정하고 있는 프로그램으로 발호디바이스를 취급하는 것은 오용이며, 완전히 바보스러운 일입니다.

또 cy 드라이버는, 발호와 착호 각각의 데이터 디바이스에 대해서, 초기 상태의 제어와 락 상태의 제어를 서포트합니다. 초기 상태 디바이스의 마이나 번호는 대응하는 데이터 디바이스보다 32 만 큰 번호가 붙어 있습니다. 락 상태 디바이스의 마이나 번호는 대응하는 데이터 디바이스보다 64 만 큰 번호가 붙어 있습니다. 데이터 디바이스에 있어서의 termios 의 설정은, 처음으로 오픈할 때에 대응한다 초기 상태 디바이스보다 복제되어 이전에 오픈되고 있었을 때 상태로부터는 계승되지 않습니다. stty(1) (을)를 초기 상태 디바이스에 대해서 통상의 사용 방법으로 실행하는 것으로써, 당신이 바라는 설정에 적절한 초기 termios 상태를 프로그램 할 수 있습니다.

락 termios 상태는, 데이터 디바이스의 termios 상태의 변경을 불가능하게 하는 플래그로서 행동합니다. 예를 들면 CRTSCTS 와 같은 플래그 변수를 잠그려면 , 락 상태 디바이스에 대해 stty crtscts (으)로 합니다. 속도나 특수 캐릭터의 설정을 잠그려면 , 락 상태 디바이스의 대응하는 값을 0 이 아닌 값으로 설정하면(자) 좋습니다.

외부 디바이스를 올바르게 선을 연결함 해 올바른 프로그램으로 통신하고 있는 한은, 거의 어떠한 초기 상태여도, 거의 잠그지 않아도 동작합니다. 그렇지 않은 경우는, 디폴트의 초기 상태를 변경해, 그 상태에 락을 건다 일로, 잘 움직이게 될 수도 있을지도 모릅니다. 특히, 버그 있는 프로그램이 (POSIX) 표준이 아닌 플래그가 변경되지 않는다 같게 하기 위해서, 표준이 아닌 플래그의 초기 상태가 접속된 디바이스에 맞도록(듯이) 설정해, 잠그어 줄 필요가 있을지도 모릅니다. 예를 들면, 상시 RTS/CTS 핸드쉐이크를 서포트하는 디바이스에서는, CRTSCTS 는 온인 채 잠그어 둘 필요가 있습니다. 또, 전혀 서포트하지 않는 디바이스에 대해 오프로 잠그어 둘 필요가 있습니다. CLOCAL 는 캐리어를 서포트하지 않는 디바이스에 대해서는 온에 잠그어야 합니다. HUPCL 는 어떠한 이유로 절단 하고 싶지 않은 경우에는 오프에 잠그어야 합니다. 일반적으로, 무엇인가가 잘못한 상태로 잠그면(자), 매우 나쁜 일이 일어납니다. 복수의 설정을 서포트하는 디바이스에는 락을 행해야 하는 것이 아닙니다. 착호포트에서의 CLOCAL 플래그는, 어떤 종류의 보안 홀을 피하기 위해서(때문에) 오프에 잠그어 두어야 합니다가, 착호포트를 무엇인가 다른 용도에 사용한다 경우에는, 이 설정을 getty 로 행해야 합니다.

관련 파일
/dev/ttyc??
    착호포트
/dev/ttyic??
/dev/ttylc??
    대응하는 착호초기 상태와 락 상태 디바이스

/dev/cuac??
    발호포트
/dev/cuaic??
/dev/cualc??
    대응하는 발호초기 상태와 락 상태 디바이스

/etc/rc.serial
    초기 상태와 락 상태 디바이스 설정의 예

이러한 디바이스명의 하나째의 물음표는 카드 번호 (0 으로 65535 를 포함한 동안의 10 진수)의 약어입니다. 2개째의 물음표는 포트 번호 ([0-9a-v]의 사이의 캐릭터)의 약어입니다.

진단

cy%d: silo overflow. 인터럽트 처리기에 문제가 있습니다.

cy%d: interrupt-level buffer overflow. 드라이버의 보텀 하프에 문제가 있습니다.

cy%d: tty-level buffer overflow. 어플리케이션에 문제가 있습니다. 모듈이 처리 다할 수 없는 속도로 입력이 행해져 일부의 입력은 잃게 되어 버렸습니다.

관련 항목
stty(1), termios(4), tty(4), comcontrol(8), pstat(8)

역사
cy 드라이버는 sio 드라이버와 NetBSD 의 cy 드라이버보다 파생해, 현재 개발 계속중입니다.

버그
BREAK 는 아직 실장되고 있지 않습니다.

시리얼 콘솔은 아직 실장되고 있지 않습니다.

늦은 시스템하에서의 고baud rate나 포트너무 가 많은 시스템, 혹은 고부하 상태의 시스템으로 crtscts 가 움직이지 않는 상황하에서는, 데이터의 탈락이 일어날지도 모릅니다.

컴파일시 밖에 설정할 수 없는 플래그가 너무 많습니다. CD1440 에는 NS16550 에 비해 약간 적은 fifo 밖에 없기 때문에 (16 이 아니고 12 바이트), NS16550 보다 많은 가상 DMA 를 필요로 합니다. 디폴트의 설정은 일반적으로는 실효로 약 30% 의 상대 코스트때에 최적화되어 지금

RxFifoThreshold: 디폴트는 6; 486DX-33 에서는, 이 값으로는 8 포트가 서로 통신할 수 있는 것은 115200 bps 이며, 11 으로 했을 경우, 8 포트가 서로 통신할 수 있는 것은 57600 bps 입니다. 반응을 일으키는 최소의 물리량을 낮게 하는 것은, FreeBSD 때문이 아니고, 실제로는 115200 bps 를 유지할 수 없는 CD1400 에 의하는 것입니다.

PollMode: Cyclom-16Y 에 필요합니다. Cyclom-8Y 에서는, 상대적으로 봐 10-20% 효율이 희생이 됩니다 (RxFifoThreshold 를 낮게 하면 좀 더 증가합니다).

SOFT_HOTCHAR: RxFifoThreshold 에 작은 값을 주었을 경우에는, SLIP 나 PPP 를 8 포트에 대해 115200 bps 로 사용할 때에 오버런을 막기 위해서(때문에) 필요합니다. 상대적으로 봐,5% 효율이 희생이 됩니다.