Por que o comando AT definido?


15

Francamente, por que todos os ICs de comunicação (ou pelo menos muitos deles ou mais famosos ou populares) como Bluetooth ou WIFI ou GSM ou etc suportam o conjunto de comandos AT? por que eles não têm um pino simples para D / C (dados ou comando) para comunicações? Quais são os benefícios do uso do conjunto de comandos AT?

O conjunto de comandos AT é grande e requer tempo e espaço de memória, dificultando a comunicação enquanto você pode usar um pino D / C simples e enviar um número inteiro para definir registros ou enviar dados.


18
Uma palavra: Legado ... Todos estão fingindo ser modems compatíveis com Hayes e existem desde o início dos tempos (ou pelo menos desde os anos 80, o que é a mesma coisa). E não, isso não é realmente uma boa razão.
brhans

4
Não só legado, mas uma realmente boa idéia. Como diz o velho ditado: "O maravilhoso dos padrões é que há muitos por onde escolher". Quero que meu hardware e software funcionem com qualquer módulo de comunicação que eu esteja usando, sem ter que me preocupar se ele fala um idioma diferente (conjunto de comandos) do que eu estava usando antes.
Dwayne Reid

7
XKCD obrigatório aqui .
bitsmack

1
Em teoria, você pode desconectar seu módulo WIFI e substituí-lo por um de outro fornecedor. E como o protocolo é o mesmo, você nem precisa ajustar o código.
Paul

1
Se algo estiver errado com a comunicação / bits, você não obterá a resposta correta, ou seja: "OK". É muito fácil depurar, pois as mensagens fazem sentido de alguma forma. O manuseio, no entanto, é realmente um pouco mais difícil de implementar. Você precisa verificar as mensagens mencionadas. E leia-os de uma maneira que não é regular para um MCU. Mas, novamente, se você fizer isso uma vez, ele funcionará para outros dispositivos AT.
Paul

Respostas:


27

brhans está correto - Legado.

Na década de 1980, Hayes começou a fazer o "Smartmodem 1200". Estava obsoleto quase imediatamente e Hayes lançou o Smartmodem 2400. Naquele momento, não havia tempo para alterações no design entre os designs do modem. Como resultado, Hayes foi o primeiro a fazer dois modems de velocidade diferentes que aceitaram os mesmos comandos de programação! Qualquer software que pudesse obter um Smartmodem 1200 para discar um número de telefone também poderia discar para um Smartmodem 2400.

Na época, todo novo modem exigia meses para que um driver atualizado fosse gravado. Quando o Smartmodem 2400 foi lançado no mercado, já havia um driver ativo para o Smartmodem 1200, portanto, não havia meses de espera. De repente, outros fabricantes perceberam a vantagem de novos modems possuírem o mesmo conjunto de comandos dos modems mais antigos. Em seis meses, os fornecedores estavam oferecendo modems "compatíveis com Hayes" como a única opção. O que os processou por Hayes. Então, todos começaram a chamar seus modems de "AT Command Set compatível", mas continuaram a usar o conjunto de comandos Hayes.

Em meados dos anos 80, não foram feitos modems de consumo que não pudessem usar o conjunto de comandos AT. Como resultado, todo modem como sistema de comunicação usa comandos AT. Também existem outras vantagens - como o conjunto de comandos é ASCII, qualquer pessoa pode digitar manualmente os comandos AT em uma janela do terminal para controlar um modem. Como meu próprio modem tinha uma conexão RJ11 perigosa, eu costumava iniciar todas as sessões no Procomm Plus com:

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

Só para ter certeza de que recebi o tom de discagem. Se não o fizesse, daria uma volta e mexeria um pouco nos fios!


1
Bom ponto de depuração. Um protocolo binário puro (como o fluxo de dados da tela LCD) requer que você projete hardware / firmware para começar a falar com o dispositivo. O conjunto de comandos AT permite testar o dispositivo com zero hardware. Tudo o que você precisa é de uma porta serial (ou atualmente de um conversor USB para serial) e um emulador de terminal.
slebetman

1
Uma pequena queixa ... O Winmodems preservou a compatibilidade no nível de APLICATIVO com os comandos AT, mas quebrou completamente a compatibilidade no nível do SO. Antes do Winmodem, até os modems internos faziam interface com um UART 16550A padrão, cujo funcionamento era bem conhecido e com suporte transparente ao Linux (porque pareciam portas seriais ISA ou PCI normais para o sistema operacional). O Winmodems lançou uma chave de macaco nisso, movendo a lógica de nível superior (Lucent) ou literalmente tudo (HSP) para o driver. Como o host de comando AT do Winmodem era virtual, eles eram literalmente pesos de papel no Linux.
Bitbang3r

1
Sim, eu costumava digitá-las manualmente também devido a uma linha telefônica de discagem por pulso (mas todos os aplicativos de comunicação assumindo que todos tinham tom de toque). :-)
Brian Knoblauch 24/03

@lebetman: eu gosto quando os dispositivos têm opções para suportar protocolos binários ou baseados em texto, mas os comandos "AT" são uma questão separada. Em sistemas sem detecção automática de transmissão, não há vantagem em particular em "AT" como prefixo de comando, e já vi vários sistemas que prefixam comandos com "AT", mas ainda exigem a capacidade de enviar e receber caracteres fora do princípio Conjunto ASCII e códigos de controle comuns.
Supercat 24/03

1
IIRC, o Linux finalmente conseguiu drivers para alguns winmodems. Em muitos casos, via drivers de som ALSA ou OSS, porque os modems mais modificados eram essencialmente placas de som conectadas às linhas telefônicas. IIRC, havia pequenas vantagens de latência nos modelos de win, porque você não tinha seus dados presos nos buffers UART. Apenas os jogadores se importavam. Todo mundo odiava desperdiçar ciclos de sua CPU de núcleo único.
Peter Cordes

20

Você está falando apenas das desvantagens do conjunto de comandos. Considere as vantagens:

  1. Usando o conjunto de comandos AT, seu dispositivo de comunicação pode ser imediatamente colocado em qualquer rede IP através da implementação de PPP do sistema operacional. A alternativa é que, além de projetar uma interface de protocolo personalizada, você deve escrever seu próprio driver de dispositivo de rede para todos os SOs que deseja oferecer suporte antes que o SO possa usar seu dispositivo para ingressar na Internet.

  2. Qualquer engenheiro competente já conhecerá esse protocolo. Tomemos como exemplo aquele cujo trabalho diário exige que ele compreenda e implemente dezenas de protocolos seriais fora do padrão: um protocolo comum bem projetado é melhor.

  3. Embora seja verdade que o protocolo AT seja bastante complexo e precise de mais memória para ser implementado do que um protocolo criado para fins específicos de tarefa, também é o caso de alguém que optar por implementar esse protocolo evite gastar muito tempo reinventando um roda perfeitamente boa. Ele tem décadas de experiência em design para desenhar. Ele sabe que funcionará antes de comprometer o tempo de desenvolvimento. Um bom design de protocolo é surpreendentemente difícil.

    (Um dia desses, publicarei minha magnum opus, "Your Protocol Sucks", na esperança de impedir a perpetração de mais terríveis protocolos únicos considerados meio.)


1
Enquanto eu concordo com o sentimento; "bem projetado"? Três palavras: o ATScomando ...
a CVn

A maioria dos dispositivos que vi que usam os comandos "AT" não têm nada em comum entre os conjuntos de comandos, exceto os dois primeiros caracteres. Se um módulo WiFi pudesse aceitar "ATDT192,168,254,5W1234" como um comando para abrir uma conexão TCP à porta 1234 em 192.168.254.5, o software que esperava um modem poderia usar o módulo muito bem, mas ainda tenho que ver. algo assim.
Supercat 24/03

@supercat: Isso porque um modem WiFi é mais parecido com uma placa Ethernet, como pode ser visto nos padrões relevantes (série IEEE802) e no uso de endereços MAC. E enquanto a pergunta fala sobre "ICs de comunicação", não acho que os ICs da Coomon Ethernet usem o conjunto de comandos AT.
MSalters 24/03

@MSalters: Em muitos cenários, o uso principal de um módulo WiFi será estabelecer uma conexão TCP por vez; A emulação de Hayes poderia funcionar lindamente para isso. Eu vi um driver FOSSIL que permitia que programas de terminal baseados em DOS fossem usados ​​como clientes de telnet, fazendo com que eles "discassem" números como os acima, e eu pensaria que a mesma abordagem funcionaria perfeitamente com os módulos WiFi. Em qualquer caso, meu ponto é que, se um produto usado uma corda como o acima para estabelecer uma conexão TCP, tal uso teriam benefícios significativos compatibilidade / familiaridade, mas ...
supercat

... Suspeito que a maioria dos dispositivos hoje em dia que usam comandos iniciados com "AT" o façam simplesmente porque seus criadores viram muitos outros dispositivos iniciando todos os comandos com "AT" e seguiram o exemplo, sem nenhuma idéia do porquê desses outros dispositivos assim.
Supercat 24/03

14

Vou expandir do outro lado da questão ... por que não adicionar outra linha de sinalização à interface?

Isso só pode ser solicitado por alguém que não passou por todas as permutações de linhas de sinalização em uma interface RS232 de 25 pinos genuína. Além do TXD, RXD e Gnd, já havia vários outros pares de sinais, RTS / CTS (pronto para enviar, limpar para enviar) DSR / DTR (pronto para conjunto de dados, pronto para terminal de dados) e um pino Hangup de hardware. E outros. E nenhum acordo universal claro entre os fabricantes exatamente o que funcionou - por que você precisou de dois conjuntos de sinais de handshake de hardware em primeiro lugar? E o protocolo XON / XOFF do software, além disso) (e por que as impressoras Diablo insistem - exclusivamente até onde eu sei - no aperto de mãos no pino 11?)

Alguns equipamentos exigiam uma interface completa. Alguns ficaram felizes com TXD / RXD / Gnd. Alguns poderiam ser enganados ao trabalhar colocando os pinos 4 e 6 em curto (retornando assim o seu próprio RTS ao CTS). E alguns que deveriam ter sido DCE eram DTE ou vice-versa e só conversavam com qualquer outra coisa através de um cabo "modem nulo" com cada par de conexões trocadas.

Para simplificar tudo isso, o IBM PC introduziu uma nova interface de 9 pinos para o RS232. Ou seja, toda a sua coleção de cabos existente estava obsoleta e você teve que começar de novo ...

Tudo isso dificultou a vida, mesmo sem considerar que as duas extremidades podem ter sido definidas com diferentes taxas de transmissão ...

Isso deu suporte a todo um setor construído em torno de caixas de interrupção RS232, cabos e ferramentas de teste / depuração.

Adicionar outro sinal, nesse contexto, provavelmente não voaria ...


9

O primeiro modem Hayes a usar comandos "AT" escolheu "A" como o primeiro caractere de seu prefixo de comando, porque precisava suportar várias taxas de transmissão, e o "A" na linha se parece com: -------_-_____-x---------- que possui uma proporção de 5: 1 entre os tempos 'baixo' mais longos e mais curtos (o "x" pode ser alto ou baixo, dependendo das configurações de paridade). Nenhuma taxa mais lenta que 1200 baud pode gerenciar um tempo "curto" de 833us ou menos, e nenhuma taxa mais rápida que 2400 pode gerenciar um tempo "longo" de 4,16ms ou mais; portanto, um modem pode assumir com segurança que se vir algo que pareça como um "A" de 1200 bauds, é (e da mesma forma com 300 bauds etc.). O "T" tem a paridade oposta ao "A", portanto, se o segundo caractere se parecer com um "T",

Os dispositivos ou drivers que usam comandos "AT" que funcionam de maneira semelhante ou analogica aos comandos do modem Hayes (por exemplo, aceitar ATDTW192,168,254,123W4567como um comando para conectar-se à porta 4567 de 192.168.254.123) fazem isso para compatibilidade com o software que espera conversar com um estilo antigo modem ou dispositivo compatível. Existem muitos dispositivos, no entanto, que usam comandos começando com "AT" na teoria de que "conjunto de comandos AT" parece ser um chavão de marketing útil, mesmo que os dispositivos não sejam capazes de detecção automática da taxa de transmissão e tenham comandos diferentes qualquer coisa em qualquer outro dispositivo. O uso de "AT" como prefixo de comando em tais contextos não agrega valor de compatibilidade e não serve a nenhum propósito útil; designers fazem isso porque viram outros designers fazerem isso,

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.