Perché set di comandi AT?


15

Francamente, perché tutti i circuiti integrati di comunicazione (o almeno molti di essi o i più famosi o popolari) come Bluetooth o WIFI o GSM o ecc supportano il set di comandi AT? perché non hanno un semplice pin per D / C (dati o comando) per le comunicazioni? Quali sono i vantaggi dell'utilizzo del set di comandi AT?

Il set di comandi AT è grande e richiederebbe tempo e spazio di memoria e rende difficile la comunicazione mentre è invece possibile utilizzare un semplice pin D / C e inviare un numero intero per impostare registri o inviare dati.


18
Una sola parola: Legacy ... Fingono tutti di essere modem compatibili Hayes e lo sono stati dall'alba dei tempi (o almeno dagli anni '80, che è più o meno la stessa cosa). E no, non è proprio una buona ragione.
brhans,

4
Non solo eredità, ma davvero un'ottima idea. Come dice il vecchio detto: "La cosa meravigliosa degli standard è che ce ne sono così tanti tra cui scegliere". Voglio che il mio hardware e software funzionino con qualsiasi modulo di comunicazione che sto usando senza doversi preoccupare se parla una lingua diversa (set di comandi) rispetto a quella che stavo usando prima.
Dwayne Reid,

7
XKCD obbligatorio qui .
bitsmack

1
In teoria, è possibile scollegare il modulo WIFI e sostituirlo con uno di un altro fornitore. E poiché il protocollo è lo stesso, non è nemmeno necessario modificare il codice.
Paul

1
Se qualcosa non andrà nella comunicazione / bit non otterrai la risposta giusta, ovvero: "OK" Quindi, se lo gestisci di conseguenza, è abbastanza stabile. È abbastanza facile eseguire il debug, poiché i messaggi hanno senso in qualche modo. La gestione, tuttavia, è davvero un po 'più difficile da implementare. Devi controllare per detti messaggi. E leggerli, in un modo che non è normale per un MCU. Ma ancora una volta, se lo fai una volta, funzionerà per altri dispositivi AT.
Paul,

Risposte:


27

brhans è corretto - Legacy.

Negli anni '80, Hayes iniziò a produrre la "Smartmodem 1200". Era quasi immediatamente obsoleto e Hayes si precipitò fuori da Smartmodem 2400. In quella fretta, non c'era tempo per le modifiche di progettazione tra i progetti di modem. Di conseguenza, Hayes fu il primo a realizzare due diversi modem di velocità che accettavano gli stessi comandi di programmazione! Qualsiasi software in grado di ottenere uno Smartmodem 1200 per comporre un numero di telefono potrebbe anche comporre uno Smartmodem 2400.

All'epoca, ogni nuovo modem richiedeva mesi per la scrittura di un driver aggiornato. Quando Smartmodem 2400 è arrivato sul mercato, c'era già un driver funzionante per Smartmodem 1200, quindi non ci sono mesi di attesa. Improvvisamente altri produttori hanno capito il vantaggio di nuovi modem con lo stesso set di comandi dei modem più vecchi. Entro sei mesi, i fornitori offrivano modem "Hayes compatibili" come unica scelta. Che li ha fatti citare in giudizio da Hayes. Quindi tutti hanno iniziato a chiamare i loro modem "AT Command Set compatibili", ma hanno continuato a utilizzare il set di comandi Hayes.

A metà degli anni '80 non furono prodotti modem consumer che non potevano usare il set di comandi AT. Di conseguenza ogni modem come il sistema di comunicazione utilizza i comandi AT. Ci sono anche altri vantaggi: poiché il set di comandi è ASCII, chiunque può digitare manualmente i comandi AT in una finestra del terminale per controllare un modem. Poiché il mio modem aveva una connessione RJ11 rischiosa, ero solito iniziare ogni sessione in Procomm Plus con:

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

Solo per essere sicuro di avere il tono di selezione. Se non lo facessi, andrei in giro a muovere un po 'i fili!


1
Buon punto sulla debugabilità. Un protocollo binario puro (come il flusso di dati dello schermo LCD) richiede la progettazione di hardware / firmware per iniziare persino a parlare con il dispositivo. Il set di comandi AT consente di testare il dispositivo con zero hardware. Tutto ciò che serve è una porta seriale (o in questi giorni un convertitore da USB a seriale) e un emulatore di terminale.
Slebetman,

1
Un piccolo cavillo ... Winmodems ha preservato la compatibilità a livello di APPLICAZIONE con i comandi AT, ma ha completamente rotto la compatibilità a livello di sistema operativo. Pre-Winmodem, anche i modem interni si interfacciavano attraverso un UART 16550A standard di tipo palustre i cui meccanismi erano ben noti e supportati in modo trasparente da Linux (perché sembravano le normali porte seriali ISA o PCI al sistema operativo). Winmodems ha lanciato una chiave inglese spostando la logica di livello superiore (Lucent) o letteralmente tutto (HSP) nel driver. Poiché l'host di comando AT di Winmodem era virtuale, erano letteralmente dei fermacarte sotto Linux.
Bitbang3r,

1
Sì, ero solito digitarli anche manualmente a causa di una linea telefonica a selezione di impulsi (ma tutte le app di comunicazione supponevano che tutti avessero un tocco). :-)
Brian Knoblauch,

@slebetman: Mi piace quando i dispositivi hanno opzioni per supportare protocolli binari o basati su testo, ma i comandi "AT" sono un problema separato. Nei sistemi senza rilevamento automatico del baud, "AT" non ha un vantaggio particolare come prefisso di comando e ho visto un numero di sistemi con prefisso "AT" ma che richiedono comunque la possibilità di inviare e ricevere caratteri al di fuori del principio Set ASCII e codici di controllo comuni.
supercat

1
IIRC, Linux alla fine ha ottenuto i driver per alcuni winmodem. In molti casi, tramite driver audio ALSA o OSS, perché i softmodem più ridotti erano essenzialmente schede audio collegate alle linee telefoniche. IIRC, c'erano vantaggi di latenza piccoli da winmodems, perché non avevi i tuoi dati bloccati nei buffer UART. Solo ai giocatori importava. Tutti gli altri odiavano sprecare cicli dalla propria CPU single-core.
Peter Cordes,

20

Stai parlando solo degli aspetti negativi del set di comandi. Considera i lati positivi:

  1. Utilizzando il set di comandi AT, il dispositivo di comunicazione può essere immediatamente inserito in qualsiasi rete IP tramite l' implementazione PPP del sistema operativo . L'alternativa è che oltre a progettare un'interfaccia di protocollo personalizzata, è necessario scrivere il proprio driver di dispositivo di rete per ogni sistema operativo che si desidera supportare prima che tale sistema operativo possa utilizzare il dispositivo per accedere a Internet.

  2. Qualsiasi ingegnere competente conoscerà già questo protocollo. Prendilo da uno il cui lavoro quotidiano gli impone di comprendere e implementare dozzine di protocolli seriali non standard: un protocollo comune ben progettato è meglio.

  3. Mentre è vero che il protocollo AT è abbastanza complesso e richiede più memoria per essere implementato rispetto a un protocollo specifico per attività specifiche, è anche vero che chi sceglie di implementare questo protocollo evita di spendere un sacco di tempo reinventando un ruota perfettamente buona. Ha decenni di esperienza nel design da cui attingere. Sa che funzionerà prima di dedicargli il tempo di sviluppo. Una buona progettazione del protocollo è sorprendentemente difficile.

    (Uno di questi giorni pubblicherò il mio magnum opus, "Il tuo protocollo fa schifo", nella speranza di impedire la perpetrazione di protocolli una tantum più terribili una tantum.)


1
Mentre sono d'accordo con il sentimento; "ben-ingegnerizzato"? Tre parole: il ATScomando ...
un CVn il

La maggior parte dei dispositivi che ho visto che usano i cosiddetti comandi "AT" non hanno nulla in comune tra i loro set di comandi a parte i primi due caratteri. Se un modulo WiFi potesse accettare "ATDT192,168,254,5W1234" come comando per aprire una connessione TCP alla porta 1234 a 192.168.254.5, allora il software che si aspetta un modem potrebbe usare il modulo bene, ma devo ancora vederlo niente del genere.
supercat

@supercat: Questo perché un modem WiFi è più simile a una scheda Ethernet, come si può vedere dagli standard pertinenti (serie IEEE802) e dall'uso degli indirizzi MAC. E mentre la domanda parla di "IC di comunicazione" non credo che gli IC di Coomon Ethernet utilizzino il set di comandi AT.
Salterio il

@MSalters: in molti scenari, l'utilizzo principale per un modulo WiFi sarà quello di stabilire una connessione TCP alla volta; L'emulazione di Hayes potrebbe funzionare magnificamente per questo. Ho visto un driver FOSSIL che avrebbe permesso di utilizzare i programmi terminal basati su DOS come client telnet avendo loro "numeri" come quelli sopra, e penso che lo stesso approccio funzionerebbe magnificamente con i moduli WiFi. In ogni caso, il mio punto è che se un prodotto utilizzava una stringa come sopra per stabilire una connessione TCP, tale utilizzo avrebbe significativi vantaggi in termini di compatibilità / familiarità, ma ...
supercat

... Sospetto che oggigiorno la maggior parte dei dispositivi che usano i comandi che iniziano con "AT" lo faccia semplicemente perché i loro creatori hanno visto molti altri dispositivi avviare tutti i loro comandi con "AT" e hanno seguito l'esempio senza alcuna idea del perché quegli altri dispositivi avrebbero fatto così.
supercat

14

Espanderò dall'altra parte della domanda ... perché non aggiungere semplicemente un'altra linea di segnalazione all'interfaccia?

Ciò può essere richiesto solo da qualcuno che non ha vissuto tutte le permutazioni delle linee di segnalazione su una vera interfaccia RS232 a 25 pin. Oltre a TXD, RXD e Gnd, c'erano già diverse altre coppie di segnali, RTS / CTS (Pronto per l'invio, Cancella per inviare) DSR / DTR (Set di dati pronto, Terminale di dati pronto) e un pin di Hangup hardware. E altri. E nessun chiaro accordo universale tra i produttori esattamente cosa ha fatto quale funzione - perché hai bisogno di due serie di segnali hardware di handshaking in primo luogo? E il protocollo XON / XOFF del software oltre a ciò) (E perché le stampanti Diablo insistono - per quanto ne so in modo univoco - sull'handshaking sul pin 11?)

Alcune apparecchiature richiedono un'interfaccia completa. Alcuni erano contenti di TXD / RXD / Gnd. Alcuni potrebbero essere ingannati nel lavorare cortocircuitando i pin 4 e 6 (riportando quindi il proprio RTS in CTS). E alcuni che avrebbero dovuto essere DCE erano DTE o viceversa e avrebbero parlato con qualsiasi altra cosa tramite un cavo "null modem" con ogni coppia di connessioni scambiate.

Quindi, per semplificare tutto ciò, il PC IBM ha introdotto una nuova interfaccia a 9 pin per RS232. Significa che tutta la tua collezione esistente di cavi era obsoleta e dovevi ricominciare ...

Tutto ciò ha reso la vita difficile anche senza considerare che entrambe le estremità potrebbero essere state impostate su baud rate diversi ...

Ciò ha supportato un intero settore costruito attorno a breakout box RS232, cavi e strumenti di test / debugging.

L'aggiunta di un altro segnale, in questo contesto, probabilmente non volerà ...


9

Il primo modem Hayes a utilizzare i comandi "AT" ha scelto "A" come primo carattere del suo prefisso di comando perché doveva supportare più baud rate, e la "A" sulla linea è simile: -------_-_____-x----------che ha un rapporto 5: 1 tra i tempi "bassi" più lunghi e più brevi (la "x" può essere alta o bassa a seconda delle impostazioni di parità). Nessuna velocità inferiore a 1200 baud può gestire un tempo "breve" di 833us o inferiore, e nessuna velocità superiore a 2400 può gestire un tempo "lungo" di 4,16ms o più, quindi un modem può tranquillamente supporre che se vede qualcosa che sembra come una "A" da 1200 baud, lo è (e allo stesso modo con 300 baud, ecc.). La "T" ha la parità opposta dalla "A", quindi se il secondo personaggio sembra una "T",

I dispositivi o i driver che utilizzano i comandi "AT" che funzionano in modo simile o analogo ai comandi del modem Hayes (ad esempio, accettando ATDTW192,168,254,123W4567come comando per connettersi alla porta 4567 del 192.168.254.123) lo fanno per compatibilità con software che prevede di parlare con un vecchio stile modem o dispositivo compatibile. Ci sono molti dispositivi, tuttavia, che utilizzano comandi che iniziano con "AT" sulla teoria secondo cui "set di comandi AT" sembra essere una parola d'ordine di marketing utile, anche se i dispositivi non sono in grado di rilevare automaticamente il baud rate e hanno comandi diversi qualsiasi cosa su qualsiasi altro dispositivo. L'uso di "AT" come prefisso di comando in tali contesti non aggiunge alcun valore di compatibilità e non ha scopi utili; i designer lo fanno perché hanno visto altri designer farlo,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.