AT 명령이 설정되는 이유는 무엇입니까?


15

솔직히, 왜 Bluetooth, WIFI 또는 GSM 등과 같은 모든 통신 IC (또는 그 중 다수 또는 가장 유명하거나 인기있는)가 AT 명령 세트를 지원합니까? 왜 통신용 D / C (Data 또는 Command)를위한 간단한 핀이 없는가? AT 명령 세트를 사용하면 어떤 이점이 있습니까?

AT 명령 세트는 커서 시간과 메모리 공간이 많이 걸리므로 간단한 D / C 핀을 사용하고 정수를 보내 레지스터를 설정하거나 데이터를 보낼 수있는 동안 통신하기가 어렵습니다.


18
한마디 : 레거시 ... 그들은 모두 Hayes 호환 모뎀으로 가장하고 있으며 새벽부터 (또는 적어도 80 년대 이후로 거의 동일합니다). 그리고 그다지 좋은 이유는 아닙니다.
brhans

4
레거시뿐만 아니라 정말 좋은 아이디어입니다. "표준에 대한 놀라운 점은 선택할 수있는 사람이 너무 많다"는 것입니다. 하드웨어와 소프트웨어가 이전에 사용하던 언어와 다른 언어 (명령 세트)를 사용 하는지 걱정할 필요 없이 사용중인 모든 통신 모듈에서 작동하기를 원합니다 .
Dwayne Reid

7
필수 XKCD는 여기에 있습니다 .
bitsmack

1
이론적으로 WIFI 모듈을 분리하고 다른 공급 업체에서 교체 할 수 있습니다. 프로토콜이 동일하기 때문에 코드를 조정할 필요조차 없습니다.
Paul

1
통신 / 비트에 문제가있을 경우 올바른 응답을 얻지 못할 것입니다. "OK"따라서 적절하게 처리하면 상당히 안정적입니다. 메시지가 어떤 식 으로든 의미가 있기 때문에 디버깅하기가 매우 쉽습니다. 그러나 처리는 실제로 구현하기가 조금 더 어렵습니다. 해당 메시지를 확인해야합니다. MCU에 규칙적이지 않은 방식으로 읽어보십시오. 그러나 다시 한 번이 작업을 수행하면 다른 AT 장치에서도 작동합니다.
Paul

답변:


27

brhans는 정확합니다-레거시.

1980 년대에 Hayes는 "Smartmodem 1200"을 만들기 시작했습니다. 거의 즉시 사용되지 않아 Hayes가 Smartmodem 2400을 돌진했습니다. 결과적으로 Hayes는 동일한 프로그래밍 명령을 받아 들인 두 개의 다른 속도 모뎀을 만든 최초의 업체입니다! Smartmodem 1200을 사용하여 전화 번호로 전화를 걸 수있는 모든 소프트웨어는 Smartmodem 2400에도 전화를 걸 수 있습니다.

당시에는 새 모뎀마다 업데이트 된 드라이버를 작성하는 데 몇 달이 걸렸습니다. Smartmodem 2400이 출시되면 Smartmodem 1200의 작동 드라이버가 이미 있었으므로 몇 달을 기다리지 않아도됩니다. 갑자기 다른 제조업체들이 구형 모뎀과 동일한 명령 세트를 가진 새로운 모뎀의 장점을 깨달았습니다. 6 개월 이내에 벤더는 "Hayes 호환"모뎀을 유일하게 선택했습니다. 헤이즈에게 고소당했습니다 모든 사람들이 모뎀을 "AT Command Set compatible"이라고 부르기 시작했지만 Hayes 명령 세트를 계속 사용했습니다.

80 년대 중반에는 AT 명령 세트를 사용할 수없는 소비자 모뎀이 만들어지지 않았습니다. 결과적으로 통신 시스템과 같은 모든 모뎀은 AT 명령을 사용합니다. 다른 장점도 있습니다. 명령 세트가 ASCII이므로 누구나 AT 명령을 터미널 창에 수동으로 입력하여 모뎀을 제어 할 수 있습니다. 내 모뎀에는 dicey RJ11 연결이 있었기 때문에 Procomm Plus의 모든 세션을 다음과 같이 시작했습니다.

AT
OK
ATH1
[dial tone]
ATDT [phone number]

발신음을 확인하기 위해. 내가하지 않으면, 나는 전선을 조금 흔들어 움직일 것입니다!


1
디버깅 가능성에 대한 좋은 지적. 순수한 바이너리 프로토콜 (예 : LCD 화면 데이터 스트림)을 사용하려면 장치와 통신을 시작하기 위해 하드웨어 / 펌웨어를 설계해야합니다. AT 명령 세트를 사용하면 하드웨어없이 장치를 테스트 할 수 있습니다. 시리얼 포트 (또는 요즘 USB- 직렬 변환기)와 터미널 에뮬레이터 만 있으면됩니다.
slebetman

1
하나의 작은 퀴즈 ... Winmodems는 AT 명령과의 응용 프로그램 수준의 호환성을 유지했지만 OS 수준의 호환성을 완전히 깨뜨 렸습니다. Win-winmodem, 심지어 bog-standard 16550A UART를 통해 인터페이스 된 내부 모뎀조차도 Linux에 의해 잘 알려져 있고 투명하게 지원됩니다 (OS에 대한 일반 ISA 또는 PCI 직렬 포트처럼 보였기 때문에). Winmodems는 더 높은 수준의 로직 (Lucent) 또는 문자 그대로 모든 것 (HSP)을 드라이버로 이동시켜 원숭이 렌치를 던졌습니다 . Winmodem의 AT 커맨드 호스트는 가상이기 때문에 Linux에서는 문자 그대로 문진이었습니다.
Bitbang3r

1
예, 펄스 다이얼링 전화선이 있기 때문에 수동으로 입력하는 경우도있었습니다 (그러나 모든 사람이 터치 톤을 가정 한 모든 통신 앱). :-)
Brian Knoblauch

@ slebetman : 장치에 바이너리 또는 텍스트 기반 프로토콜을 지원하는 옵션이있을 때 마음에 들지만 "AT"명령은 별도의 문제입니다. 자동 전송 감지 기능이없는 시스템에서는 "AT"를 명령 접두어로 사용하는 데 특별한 이점이 없으며 "AT"로 명령을 접두사로 사용하지만 원칙 밖에서 문자를 보내고받을 수있는 기능이 필요한 여러 시스템을 보았습니다. ASCII 세트 및 공통 제어 코드
supercat

1
IIRC, Linux는 결국 일부 winmodems 용 드라이버를 얻었습니다. 대부분의 경우 제거 된 대부분의 소프트 모뎀은 본질적으로 전화선에 연결된 사운드 카드이기 때문에 ALSA 또는 OSS 사운드 드라이버를 통한 경우가 많습니다. IIRC의 경우 데이터가 UART 버퍼에 갇혀 있지 않기 때문에 winmodems에서 발생하는 지연 시간 이점이 적었습니다. 게이머 만 걱정했습니다. 다른 모든 사람들은 단일 코어 CPU에서주기를 낭비하는 것을 싫어했습니다.
Peter Cordes

20

당신은 명령 세트의 단점에 대해서만 이야기하고 있습니다. 거꾸로 생각해보십시오.

  1. AT 명령 세트를 사용하면 통신 장치를 OS의 PPP 구현을 통해 모든 IP 네트워크에 즉시 배치 할 수 있습니다 . 대안은 사용자 정의 프로토콜 인터페이스를 설계하는 것 외에도 OS가 장치를 사용하여 인터넷에 참여하기 전에 지원하려는 모든 OS에 대해 고유 한 네트워크 장치 드라이버를 작성해야한다는 것입니다.

  2. 유능한 엔지니어라면이 프로토콜을 이미 알고있을 것입니다. 수십 개의 비표준 직렬 프로토콜을 이해하고 구현해야하는 일상적인 업무를 수행하십시오. 잘 설계된 하나의 공통 프로토콜이 더 좋습니다.

  3. AT 프로토콜이 상당히 복잡하고 작업 별 목적에 맞게 구축 된 프로토콜보다 구현하는 데 더 많은 메모리를 사용하는 것이 사실이지만,이 프로토콜을 구현하기로 선택한 사람이 재발 명을 위해 많은 시간을 소비하지 않는 경우도 있습니다. 완벽하게 좋은 바퀴. 그는 수십 년에 걸친 디자인 전문 지식을 보유하고 있습니다. 그는 개발 시간을 보내기 전에 작동 할 것임을 알고 있습니다. 좋은 프로토콜 디자인은 놀랍게도 어렵습니다.

    (요즘 중 하나는 더 끔찍한 반-고려 된 일회성 프로토콜의 가해를 막기 위해 매그넘 작품 "Your Protocol Sucks"를 출판 할 것입니다.


1
나는 정서에 동의하는 동안; "잘 설계된"? 세 단어 : ATS명령 ...
CVn

필자가 본 소위 "AT"명령을 사용하는 대부분의 장치 는 처음 두 문자를 제외하고 명령 세트 사이에 공통점 이 없습니다 . WiFi 모듈이 192.168.254.5에서 포트 1234에 대한 TCP 연결을 여는 명령으로 "ATDT192,168,254,5W1234"를 승인 할 수 있다면 모뎀을 기대하는 소프트웨어가 모듈을 잘 사용할 수는 있지만 아직 한 가지를 보지 못했습니다. 그런 것.
supercat

@supercat : 관련 표준 (IEEE802 시리즈)과 MAC 주소 사용에서 볼 수 있듯이 WiFi 모뎀이 이더넷 카드와 더 유사하기 때문입니다. 그리고 질문이 "통신 IC"에 대해 이야기하는 동안 나는 coomon Ethernet IC가 AT 명령 세트를 사용한다고 생각하지 않습니다.
MSalters

@MSalters : 많은 시나리오에서 WiFi 모듈의 기본 사용법은 한 번에 하나의 TCP 연결을 설정하는 것입니다. 헤이즈 에뮬레이션은 아름답게 작동 할 수 있습니다. DOS 기반 터미널 프로그램을 텔넷 클라이언트로 사용하여 위와 같은 번호로 전화를 걸 수있는 FOSSIL 드라이버를 보았습니다 .Wi-Fi 모듈에서도 동일한 접근 방식이 아름답게 작동한다고 생각합니다. 어쨌든, 내 요점은 제품이 TCP 연결을 설정하기 위해 위와 같은 문자열을 사용했다면 그러한 사용은 상당한 호환성 / 친숙성 이점을 가질 것이지만, ...
supercat

... 요즘 "AT"로 시작하는 명령을 사용하는 대부분의 장치가 단순히 다른 장치가 "AT"로 모든 명령을 시작하는 것을보고 다른 장치가 어떤 동작을하는지 잘 모르기 때문에 적합하다고 생각합니다. 그래서.
supercat

14

질문의 다른 쪽에서 확장하겠습니다 ... 왜 인터페이스에 다른 신호 라인을 추가하지 않습니까?

이것은 진정한 25 핀 RS232 인터페이스에서 신호선의 모든 순열을 겪지 않은 사람 만 요청할 수 있습니다. TXD, RXD 및 Gnd 외에도 RTS / CTS (Ready to Send, Clear To Send) DSR / DTR (Data Set Ready, Data Terminal Ready) 및 하드웨어 Hangup 핀과 같은 다른 신호 쌍이 이미있었습니다. 다른 사람. 그리고 제조사들간에 정확히 어떤 기능을 수행했는지에 대한 명확한 보편적 합의가 이루어지지 않았습니다. 왜 처음에 두 세트의 하드웨어 핸드 쉐이킹 신호가 필요합니까? 그리고 그 위에 소프트웨어 XON / XOFF 프로토콜) (그리고 왜 Diablo 프린터가 핀 11의 핸드 쉐이킹에서 내가 아는 한 독특하게 주장 했습니까?)

일부 장비에는 전체 인터페이스가 필요합니다. 일부는 TXD / RXD / Gnd에 만족했습니다. 일부는 핀 4와 6을 단락시켜 작동하도록 속일 수 있습니다 (따라서 자체 RTS를 CTS로 루프백 함). 그리고 DCE였던 일부는 DTE이거나 그 반대였으며 각 쌍의 연결이 교환 된 "널 모뎀"케이블을 통해서만 다른 것과 대화 할 수있었습니다.

그런 다음이 모든 것을 단순화하기 위해 IBM PC는 RS232를위한 새로운 9 핀 인터페이스를 도입했습니다. 기존의 모든 케이블 컬렉션이 더 이상 사용되지 않아 다시 시작해야 함을 의미합니다.

양쪽 모두 다른 전송 속도로 설정되었을 수도 있다는 점을 고려하지 않아도 인생을 어려워했습니다.

이는 RS232 브레이크 아웃 박스, 케이블 및 테스트 / 디버깅 툴을 중심으로 구축 된 전체 산업을 지원했습니다.

이 맥락에서 다른 신호를 추가하면 아마 날지 않을 것입니다 ...


9

"AT"명령을 사용하는 첫 번째 Hayes 모뎀은 여러 전송 속도를 지원해야하므로 명령 접두어의 첫 문자로 "A"를 선택했으며 라인의 "A"는 다음과 같습니다.-------_-_____-x---------- 사이 : 1 비율로 5이있는 가장 길고 가장 짧은 '낮음'시간 ( "x"는 패리티 설정에 따라 높거나 낮을 수 있음). 1200 보드보다 느린 속도는 833us 이하의 "짧은"시간을 관리 할 수 ​​없으며 2400보다 빠른 속도는 4.16ms 이상의 "긴"시간을 관리 할 수 ​​없으므로 모뎀은 보이는 것이 보이는 경우 안전하게 가정 할 수 있습니다 1200-baud "A"와 마찬가지로 (300 보드 등). "T"는 "A"와 반대의 패리티를 가지므로 두 번째 문자가 "T"처럼 보이는 경우,

Hayes 모뎀 명령과 유사하거나 유사하게 작동하는 "AT"명령을 사용하는 장치 또는 드라이버 (예 : ATDTW192,168,254,123W4567192.168.254.123의 포트 4567에 연결하기위한 명령으로 수락 )는 이전 스타일과 통신 할 것으로 예상되는 소프트웨어와의 호환성을 위해 모뎀 또는 호환 장치. 그러나 "AT"로 시작하는 명령을 사용하는 많은 장치가 있지만, "AT 명령 세트"는 자동 보드 속도 감지 기능이없고 명령과 달리 명령이 있지만 "AT 명령 세트"가 유용한 마케팅 용어 인 것 같습니다. 다른 기기의 모든 것 이러한 문맥에서 "AT"를 명령 접두어로 사용하면 호환성 값이 추가되지 않으며 유용한 목적이 없습니다. 디자이너들은 다른 디자이너들이하는 것을 보았 기 때문에

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.