¿Por qué se establece el comando AT?

15

Francamente, ¿por qué todos los circuitos integrados de comunicación (o al menos muchos de ellos o los más famosos o populares) como Bluetooth o WIFI o GSM o etc. admiten el conjunto de comandos AT? ¿Por qué no tienen un pin simple para D / C (Datos o Comando) para las comunicaciones? ¿Cuáles son los beneficios de usar el conjunto de comandos AT?

El conjunto de comandos AT es grande y tomaría tiempo y espacio de memoria y dificulta la comunicación, mientras que en su lugar puede usar un pin D / C simple y enviar un número entero para establecer registros o enviar datos.

Roh
fuente
18
Una palabra: Legado ... Todos fingen ser módems compatibles con Hayes y lo han sido desde el principio de los tiempos (o al menos desde los años 80, que es casi lo mismo). Y no, esa no es realmente una buena razón.
Brhans
44
No solo legado, sino una muy buena idea. Como dice el viejo dicho: "Lo maravilloso de los estándares es que hay tantos para elegir". Quiero que mi hardware y software funcionen con cualquier módulo de comunicaciones que esté usando sin tener que preocuparme si habla un idioma (conjunto de comandos) diferente al que estaba usando antes.
Dwayne Reid
77
Obligatorio XKCD aquí .
Bitsmack
1
En teoría, podría desconectar su módulo WIFI y reemplazarlo con uno de otro proveedor. Y debido a que el protocolo es el mismo, ni siquiera tiene que ajustar el código.
Paul
1
Si algo va mal con la comunicación / bits, no obtendrá la respuesta correcta, es decir: "OK". Si lo maneja en consecuencia, es bastante estable. Es bastante fácil de depurar, ya que los mensajes tienen sentido de alguna manera. Sin embargo, el manejo es un poco más difícil de implementar. Tienes que verificar dichos mensajes. Y léalos, de una manera que no es regular para un MCU. Pero, de nuevo, si hace esto una vez, funcionará para otros dispositivos AT.
Paul

Respuestas:

27

Brhans es correcto - Legado.

En la década de 1980, Hayes comenzó a fabricar el "Smartmodem 1200". Estaba obsoleto casi de inmediato y Hayes se apresuró a sacar el Smartmodem 2400. En ese apuro, no hubo tiempo para alteraciones de diseño entre los diseños de módem. Como resultado, ¡Hayes fue el primero en hacer dos módems de velocidad diferentes que aceptaron los mismos comandos de programación! Cualquier software que pueda hacer que un Smartmodem 1200 marque un número de teléfono también puede marcar un Smartmodem 2400.

En ese momento, cada módem nuevo requería meses para que se escribiera un controlador actualizado. Cuando el Smartmodem 2400 salió al mercado, ya había un controlador que funcionaba para el Smartmodem 1200, por lo que no hubo meses de espera. De repente, otros fabricantes se dieron cuenta de la ventaja de los nuevos módems que tenían el mismo conjunto de comandos que los módems anteriores. En seis meses, los vendedores ofrecían módems "compatibles con Hayes" como la única opción. Lo que los demandó a Hayes. Entonces todos comenzaron a llamar a sus módems "Compatible con el conjunto de comandos AT", pero continuaron usando el conjunto de comandos Hayes.

A mediados de los 80 no se fabricaron módems de consumo que no pudieran usar el conjunto de comandos AT. Como resultado, cada módem, como el sistema de comunicaciones, utiliza comandos AT. También hay otras ventajas: como el conjunto de comandos es ASCII, cualquiera puede escribir manualmente los comandos AT en una ventana de terminal para controlar un módem. Debido a que mi propio módem tenía una conexión RJ11 incierta, solía comenzar cada sesión en Procomm Plus con:

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

Solo para asegurarme de que tengo el tono de marcar. ¡Si no lo hiciera, iría y movería los cables un poco!

Carveone
fuente
1
Buen punto sobre debugability. Un protocolo binario puro (como el flujo de datos de la pantalla LCD) requiere que diseñe hardware / firmware para incluso comenzar a hablar con el dispositivo. El conjunto de comandos AT le permite probar el dispositivo con cero hardware. Todo lo que necesita es un puerto serie (o en la actualidad un convertidor USB a serie) y un emulador de terminal.
slebetman
1
Una pequeña objeción ... Winmodems conservó la compatibilidad de nivel de APLICACIÓN con los comandos AT, pero rompió por completo la compatibilidad de nivel de sistema operativo. Antes del Winmodem, incluso los módems internos interactuaban a través de un UART 16550A estándar de pantano cuyo funcionamiento era conocido y compatible de forma transparente con Linux (porque se parecían a los puertos serie ISA o PCI normales para el sistema operativo). Winmodems lanzó una llave inglesa al mover la lógica de nivel superior (Lucent) o literalmente todo (HSP) al conductor. Como el host de comando AT del Winmodem era virtual, eran literalmente pisapapeles bajo Linux.
Bitbang3r
1
Sí, solía escribirlos manualmente también debido a que tenía una línea telefónica de marcación por pulso (pero todas las aplicaciones de comunicación suponiendo que todos tenían tonos). :-)
Brian Knoblauch
@Slebetman: Me gusta cuando los dispositivos tienen opciones para admitir protocolos binarios o basados ​​en texto, pero los comandos "AT" son un tema aparte. En los sistemas sin detección automática de baudios, no hay una ventaja particular para "AT" como prefijo de comando, y he visto varios sistemas que prefijan comandos con "AT" pero aún requieren la capacidad de enviar y recibir caracteres fuera del principio Conjunto ASCII y códigos de control comunes.
supercat
1
IIRC, Linux finalmente obtuvo controladores para algunos winmodems. En muchos casos, a través de controladores de sonido ALSA u OSS, porque los softmodems más simples eran esencialmente tarjetas de sonido conectadas a líneas telefónicas. IIRC, se obtuvieron pequeñas ventajas de latencia de winmodems, porque no tenía sus datos atascados en los buffers UART. Solo a los jugadores les importaba. Todos los demás odiaban los ciclos de pérdida de su CPU de un solo núcleo.
Peter Cordes
20

Estás hablando solo de las desventajas del conjunto de comandos. Considere las ventajas:

  1. Al utilizar el conjunto de comandos AT, su dispositivo de comunicación se puede poner inmediatamente en cualquier red IP a través del PPP del sistema operativo implementación . La alternativa es que, además de diseñar una interfaz de protocolo personalizada, debe escribir su propio controlador de dispositivo de red para cada sistema operativo que desee admitir antes de que ese sistema operativo pueda usar su dispositivo para conectarse a Internet.

  2. Cualquier ingeniero competente ya conocerá este protocolo. Tómelo de alguien cuyo trabajo diario requiere que comprenda e implemente docenas de protocolos seriales no estándar: un protocolo común bien diseñado es mejor.

  3. Si bien es cierto que el protocolo AT es bastante complejo y requiere más memoria para implementar que un protocolo específico para una tarea específica, también es el caso de que alguien que elija implementar este protocolo evite perder mucho tiempo reinventando un Rueda perfectamente buena. Tiene décadas de experiencia en diseño para aprovechar. Sabe que funcionará antes de dedicarle tiempo de desarrollo. El buen diseño del protocolo es sorprendentemente difícil.

    (Uno de estos días, voy a publicar mi obra maestra, "Su protocolo apesta", con la esperanza de evitar la perpetración de protocolos únicos y terribles a medias.)

Warren Young
fuente
1
Si bien estoy de acuerdo con el sentimiento; "bien diseñado"? Tres palabras: el ATScomando ...
un CVn
La mayoría de los dispositivos que he visto que usan los llamados comandos "AT" no tienen nada en común entre sus conjuntos de comandos aparte de los dos primeros caracteres. Si un módulo WiFi puede aceptar "ATDT192,168,254,5W1234" como un comando para abrir una conexión TCP al puerto 1234 en 192.168.254.5, entonces el software que espera un módem podría usar el módulo bien, pero todavía tengo que ver uno Cualquier cosa como eso.
supercat
@supercat: Eso se debe a que un módem WiFi es más parecido a una tarjeta Ethernet, como se puede ver en los estándares relevantes (serie IEEE802) y el uso de direcciones MAC. Y aunque la pregunta habla sobre "IC de comunicación", no creo que los IC de Coomon Ethernet utilicen el conjunto de comandos AT.
MSalters
@MSalters: en muchos escenarios, el uso principal para un módulo WiFi será establecer una conexión TCP a la vez; La emulación de Hayes podría funcionar maravillosamente para eso. He visto un controlador FOSSIL que permitiría que los programas de terminal basados ​​en DOS se usen como clientes telnet al hacer que "marquen" números como los anteriores, y creo que ese mismo enfoque funcionaría perfectamente con los módulos WiFi. En cualquier caso, mi punto es que si un producto utiliza una cadena como la anterior para establecer una conexión TCP, dicho uso tendría importantes beneficios de compatibilidad / familiaridad, pero ...
supercat
... Sospecho que la mayoría de los dispositivos en estos días que usan comandos que comienzan con "AT" lo hacen simplemente porque sus creadores vieron muchos otros dispositivos que comienzan todos sus comandos con "AT" y siguieron su ejemplo sin saber por qué esos otros dispositivos harían entonces.
supercat
14

Me expandiré al otro lado de la pregunta ... ¿por qué no simplemente agregar otra línea de señalización a la interfaz?

Eso solo puede preguntarlo alguien que no haya vivido todas las permutaciones de las líneas de señalización en una interfaz RS232 de 25 pines genuina. Además de TXD, RXD y Gnd, ya había varios otros pares de señales, RTS / CTS (Listo para enviar, Borrar para enviar) DSR / DTR (Conjunto de datos listo, Terminal de datos listo) y un pin de colgar de hardware. Y otros. Y no existe un acuerdo universal claro entre los fabricantes, ¿qué funcionó exactamente? ¿Por qué necesitó dos conjuntos de señales de comunicación de hardware en primer lugar? Y el protocolo XON / XOFF de software además de eso) (¿Y por qué las impresoras Diablo insistieron, únicamente hasta donde yo sé, en el apretón de manos en el pin 11?)

Algunos equipos requieren una interfaz completa. Algunos estaban contentos con TXD / RXD / Gnd. Algunos podrían ser engañados para que trabajen acortando los pines 4 y 6 (lo que hace retroceder su propio RTS a CTS). Y algunos que deberían haber sido DCE eran DTE o viceversa y solo hablarían con cualquier otra cosa a través de un cable de "módem nulo" con cada par de conexiones intercambiadas.

Luego, para simplificar todo esto, la PC de IBM introdujo una nueva interfaz de 9 pines para RS232. Es decir, toda su colección de cables existente era obsoleta y tenía que comenzar de nuevo ...

Todo lo cual hizo la vida difícil, incluso sin considerar que ambos extremos pueden haber sido configurados a diferentes velocidades de transmisión ...

Esto apoyó a toda una industria construida alrededor de cajas de conexión RS232, cables y herramientas de prueba / depuración.

Agregar otra señal, en este contexto, probablemente no iba a volar ...

Brian Drummond
fuente
9

El primer módem Hayes en usar los comandos "AT" eligió "A" como el primer carácter de su prefijo de comando porque necesitaba soportar múltiples velocidades de transmisión, y la "A" en la línea se ve así: -------_-_____-x---------- que tiene una relación de 5: 1 entre los tiempos 'bajos' más largos y más cortos (la "x" puede ser alta o baja dependiendo de la configuración de paridad). Ninguna velocidad más lenta que 1200 baudios puede manejar un tiempo "corto" de 833us o menos, y ninguna velocidad más rápida que 2400 puede manejar un tiempo "largo" de 4.16ms o más, por lo que un módem puede asumir con seguridad que si ve algo que se ve como una "A" de 1200 baudios, es (y del mismo modo con 300 baudios, etc.). La "T" tiene la paridad opuesta a la "A", por lo que si el segundo personaje parece una "T",

Los dispositivos o controladores que usan comandos "AT" que funcionan de manera similar o análoga a los comandos de módem Hayes (por ejemplo, aceptar ATDTW192,168,254,123W4567como un comando para conectarse al puerto 4567 de 192.168.254.123) lo hacen por compatibilidad con el software que espera hablar con un viejo estilo módem o dispositivo compatible. Sin embargo, hay muchos dispositivos que utilizan comandos que comienzan con "AT" en la teoría de que "conjunto de comandos AT" parece ser una palabra de moda útil de marketing, a pesar de que los dispositivos no son capaces de detección automática de velocidad de transmisión y tienen comandos diferentes cualquier cosa en cualquier otro dispositivo. El uso de "AT" como prefijo de comando en dichos contextos no agrega ningún valor de compatibilidad y no tiene ningún propósito útil; los diseñadores lo hacen porque han visto a otros diseñadores hacerlo,

Super gato
fuente