Pourquoi le jeu de commandes AT?

15

Franchement, pourquoi tous les CI de communication (ou au moins un grand nombre d'entre eux ou les plus célèbres ou les plus populaires) tels que Bluetooth ou WIFI ou GSM ou etc. prennent-ils en charge l'ensemble de commandes AT? pourquoi n'ont-ils pas une simple broche pour D / C (données ou commande) pour les communications? Quels sont les avantages de l'utilisation du jeu de commandes AT?

Le jeu de commandes AT est volumineux et prendrait du temps et de l'espace mémoire et il est difficile de communiquer alors que vous pouvez utiliser à la place une simple broche D / C et envoyer un entier pour définir des registres ou envoyer des données.

Roh
la source
18
Un mot: Legacy ... Ils prétendent tous être des modems compatibles Hayes et ce depuis la nuit des temps (ou du moins depuis les années 80, ce qui est à peu près la même chose). Et non, ce n'est pas vraiment une bonne raison.
brhans
4
Non seulement l'héritage, mais une très bonne idée. Comme le dit le vieil adage: "Ce qui est merveilleux avec les normes, c'est qu'il y a tellement de choix". Je veux que mon matériel et mes logiciels fonctionnent avec le module de communication que j'utilise sans avoir à me soucier s'il parle une langue différente (jeu de commandes) que celle que j'utilisais auparavant.
Dwayne Reid
7
XKCD obligatoire ici .
bitsmack
1
En théorie, vous pouvez débrancher votre module WIFI et le remplacer par un autre fournisseur. Et parce que le protocole est le même, vous n'avez même pas besoin d'ajuster le code.
Paul
1
Si quelque chose ne va pas avec la communication / bits, vous n'obtiendrez pas la bonne réponse, c'est-à-dire: "OK" Donc, si vous le gérez en conséquence, c'est assez stable. C'est assez facile à déboguer, car les messages ont du sens d'une certaine manière. Cependant, la manipulation est en effet un peu plus difficile à mettre en œuvre. Vous devez vérifier ces messages. Et lisez-les, d'une manière qui n'est pas régulière pour un MCU. Mais là encore, si vous le faites une fois, cela fonctionnera pour d'autres appareils AT.
Paul

Réponses:

27

brhans a raison - Legacy.

Dans les années 80, Hayes a commencé à fabriquer le "Smartmodem 1200". Il était obsolète presque immédiatement et Hayes a précipité le Smartmodem 2400. Dans cette ruée, il n'y avait pas de temps pour des modifications de conception entre les conceptions du modem. En conséquence, Hayes a été le premier à fabriquer deux modems de vitesse différents qui ont accepté les mêmes commandes de programmation! Tout logiciel pouvant obtenir un Smartmodem 1200 pour composer un numéro de téléphone peut également composer un Smartmodem 2400.

À l'époque, chaque nouveau modem nécessitait des mois pour qu'un pilote mis à jour soit écrit. Lorsque le Smartmodem 2400 est arrivé sur le marché, il y avait déjà un pilote fonctionnel pour le Smartmodem 1200, donc pas de mois d'attente. Tout à coup, d'autres fabricants ont réalisé l'avantage que les nouveaux modems avaient le même jeu de commandes que les anciens modems. En six mois, les fournisseurs proposaient le choix entre des modems «compatibles Hayes». Ce qui les a poursuivis en justice par Hayes. Tout le monde a donc commencé à appeler leurs modems «compatibles avec le jeu de commandes AT», mais a continué à utiliser le jeu de commandes Hayes.

Au milieu des années 80, aucun modem grand public n'avait été créé qui ne pouvait pas utiliser l'ensemble de commandes AT. En conséquence, chaque modem comme le système de communication utilise des commandes AT. Il existe également d'autres avantages: le jeu de commandes étant ASCII, n'importe qui peut saisir manuellement les commandes AT dans une fenêtre de terminal pour contrôler un modem. Parce que mon propre modem avait une connexion RJ11 risquée, j'avais l'habitude de démarrer chaque session dans Procomm Plus avec:

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

Juste pour être sûr d'avoir la tonalité. Si je ne le faisais pas, je ferais le tour et tortillerais un peu les fils!

carveone
la source
1
Bon point sur le débogage. Un protocole binaire pur (comme le flux de données de l'écran LCD) nécessite que vous conceviez du matériel / micrologiciel pour même commencer à parler à l'appareil. Le jeu de commandes AT vous permet de tester l'appareil avec zéro matériel. Tout ce dont vous avez besoin est un port série (ou de nos jours un convertisseur USB vers série) et un émulateur de terminal.
slebetman
1
Un petit problème ... Winmodems a conservé la compatibilité au niveau de l'application avec les commandes AT, mais a complètement rompu la compatibilité au niveau du système d'exploitation. Avant le Winmodem, même les modems internes interfacés via un UART 16550A standard dont les fonctionnements étaient bien connus et pris en charge de manière transparente par Linux (car ils ressemblaient à des ports série ISA ou PCI normaux au système d'exploitation). Winmodems y a jeté une clé à molette en déplaçant la logique de niveau supérieur (Lucent) ou littéralement tout (HSP) dans le pilote. Étant donné que l'hôte de commande AT du Winmodem était virtuel, ils étaient littéralement des presse-papiers sous Linux.
Bitbang3r
1
Oui, j'avais l'habitude de les taper manuellement également en raison de la présence d'une ligne téléphonique à impulsion (mais toutes les applications de communication supposaient que tout le monde avait la tonalité). :-)
Brian Knoblauch
@slebetman: J'aime bien quand les appareils ont des options pour prendre en charge les protocoles binaires ou basés sur du texte, mais les commandes "AT" sont un problème distinct. Dans les systèmes sans détection automatique de bauds, il n'y a aucun avantage particulier à "AT" comme préfixe de commande, et j'ai vu un certain nombre de systèmes qui préfixent les commandes avec "AT" mais nécessitent toujours la possibilité d'envoyer et de recevoir des caractères en dehors du principe Ensemble ASCII et codes de contrôle communs.
supercat
1
IIRC, Linux a finalement obtenu des pilotes pour certains winmodems. Dans de nombreux cas, via des pilotes audio ALSA ou OSS, car les softmodems les plus dépouillés étaient essentiellement des cartes son connectées à des lignes téléphoniques. IIRC, il y avait de petits avantages de latence à tirer des winmodems, car vous n'aviez pas vos données coincées dans les tampons UART. Seuls les joueurs s'en souciaient. Tout le monde détestait les cycles de gaspillage de leur processeur monocœur.
Peter Cordes
20

Vous ne parlez que des inconvénients de l'ensemble de commandes. Considérez les avantages:

  1. En utilisant le jeu de commandes AT, votre appareil de communication peut être immédiatement mis sur n'importe quel réseau IP via l' implémentation PPP du système d'exploitation . L'alternative est qu'en plus de concevoir une interface de protocole personnalisée, vous devez écrire votre propre pilote de périphérique réseau pour chaque système d'exploitation que vous souhaitez prendre en charge avant que ce système d'exploitation puisse utiliser votre périphérique pour se connecter à Internet.

  2. Tout ingénieur compétent connaîtra déjà ce protocole. Prenez-le de celui dont le travail de jour l'oblige à comprendre et à mettre en œuvre des dizaines de protocoles série non standard: un protocole commun bien conçu est préférable.

  3. S'il est vrai que le protocole AT est assez complexe et prend plus de mémoire à mettre en œuvre qu'un protocole spécifique à une tâche, il est également vrai que quelqu'un qui choisit de mettre en œuvre ce protocole évite de passer beaucoup de temps à réinventer un roue parfaitement bonne. Il a des décennies d'expertise en matière de conception. Il sait que cela fonctionnera avant de lui consacrer du temps de développement. Une bonne conception de protocole est étonnamment difficile.

    (Un de ces jours, je vais publier mon magnum opus, "Your Protocol Sucks", dans l'espoir d'empêcher la perpétration de protocoles ponctuels plus terribles à moitié considérés.)

Warren Young
la source
1
Alors que je suis d'accord avec le sentiment; "bien conçu"? Trois mots: la ATScommande ...
un CVn
La majorité des appareils que j'ai vus qui utilisent des commandes dites "AT" n'ont rien de commun entre leurs jeux de commandes, à part les deux premiers caractères. Si un module WiFi pouvait accepter "ATDT192,168,254,5W1234" comme une commande pour ouvrir une connexion TCP au port 1234 à 192.168.254.5, alors le logiciel qui attend un modem pourrait utiliser le module très bien, mais je n'ai pas encore vu un faire quelque chose comme ça.
supercat
@supercat: En effet, un modem WiFi s'apparente davantage à une carte Ethernet, comme le montrent les normes pertinentes (série IEEE802) et l'utilisation des adresses MAC. Et tandis que la question parle de "CI de communication", je ne pense pas que les CI Ethernet coomon utilisent l'ensemble de commandes AT.
MSalters
@MSalters: Dans de nombreux scénarios, l'utilisation principale d'un module WiFi sera d'établir une connexion TCP à la fois; L'émulation Hayes pourrait parfaitement fonctionner pour cela. J'ai vu un pilote FOSSIL qui permettrait aux programmes de terminaux DOS d'être utilisés comme clients Telnet en leur faisant "composer" des numéros comme ceux ci-dessus, et je pense que la même approche fonctionnerait à merveille avec les modules WiFi. Dans tous les cas, mon point est que si un produit utilise une chaîne comme celle ci-dessus pour établir une connexion TCP, une telle utilisation aurait des avantages de compatibilité / familiarité importants, mais ...
supercat
... Je soupçonne que la majorité des appareils de nos jours qui utilisent des commandes commençant par "AT" le font simplement parce que leurs créateurs ont vu de nombreux autres appareils démarrer toutes leurs commandes avec "AT" et ont emboîté le pas sans aucune idée pourquoi ces autres appareils feraient donc.
supercat
14

Je vais développer de l'autre côté de la question ... pourquoi ne pas simplement ajouter une autre ligne de signalisation à l'interface?

Cela ne peut être demandé que par quelqu'un qui n'a pas vécu toutes les permutations des lignes de signalisation sur une véritable interface RS232 à 25 broches. En plus de TXD, RXD et Gnd, il y avait déjà plusieurs autres paires de signaux, RTS / CTS (Ready to Send, Clear To Send) DSR / DTR (Data Set Ready, Data Terminal Ready) et une broche de raccrochage matérielle. Et d'autres. Et aucun accord universel clair entre les fabricants ne précisait exactement ce qui fonctionnait - pourquoi aviez-vous d'abord besoin de deux ensembles de signaux de négociation matériels? Et le protocole logiciel XON / XOFF en plus de cela) (Et pourquoi les imprimantes Diablo ont-elles insisté - uniquement pour autant que je sache - sur la prise de contact sur la broche 11?)

Certains équipements nécessitaient une interface complète. Certains étaient satisfaits de TXD / RXD / Gnd. Certains pourraient être trompés en travaillant en court-circuitant les broches 4 et 6 (rebouclant ainsi leur propre RTS à CTS). Et certains qui auraient dû être DCE étaient DTE ou vice-versa et ne parlaient à rien d'autre via un câble "null modem" avec chaque paire de connexions échangées.

Ensuite, pour simplifier tout cela, le PC IBM a introduit une nouvelle interface 9 broches pour RS232. Ce qui signifie que toute votre collection de câbles existante était obsolète et que vous deviez recommencer ...

Tout cela a rendu la vie difficile même sans tenir compte du fait que les deux extrémités peuvent avoir été réglées à des vitesses de transmission différentes ...

Cela a soutenu une industrie entière construite autour de boîtiers de dérivation RS232, de câbles et d'outils de test / débogage.

Ajouter un autre signal, dans ce contexte, n'allait probablement pas voler ...

Brian Drummond
la source
9

Le premier modem Hayes à utiliser les commandes "AT" a choisi "A" comme premier caractère de son préfixe de commande car il devait prendre en charge plusieurs débits en bauds, et le "A" sur la ligne ressemble à: -------_-_____-x----------qui a un rapport de 5: 1 entre les temps «bas» les plus longs et les plus courts (le «x» peut être haut ou bas selon les paramètres de parité). Aucun débit plus lent que 1200 bauds ne peut gérer un temps "court" de 833us ou moins, et aucun débit plus rapide que 2400 ne peut gérer un temps "long" de 4,16 ms ou plus, donc un modem peut sans risque supposer que s'il voit quelque chose qui ressemble comme un "A" à 1200 bauds, il l'est (et de même avec 300 bauds, etc.). Le "T" a la parité opposée au "A", donc si le deuxième caractère ressemble à un "T",

Les périphériques ou pilotes qui utilisent des commandes "AT" qui fonctionnent de manière similaire ou analogue aux commandes du modem Hayes (par exemple, acceptant ATDTW192,168,254,123W4567comme commande pour se connecter au port 4567 de 192.168.254.123) le font pour la compatibilité avec les logiciels qui s'attendent à parler à un style ancien. modem ou appareil compatible. Cependant, il existe de nombreux appareils qui utilisent des commandes commençant par "AT" selon la théorie selon laquelle "l'ensemble de commandes AT" semble être un mot à la mode marketing utile, même si les appareils ne sont pas capables de détection automatique du débit en bauds et ont des commandes contrairement à quoi que ce soit sur tout autre appareil. L'utilisation de "AT" comme préfixe de commande dans de tels contextes n'ajoute aucune valeur de compatibilité et ne sert à rien; les concepteurs le font parce qu'ils ont vu d'autres concepteurs le faire,

supercat
la source