Ich muss wissen, warum Menschen in eingebetteten Systemen AT-Befehle verwenden?
Wenn ich gefragt habe, sagen die Leute, dass es ein Standard ist.
Meine Frage ist also: Was bedeutet "AT"? Warum sagen die Leute immer, es sei ein Standard?
Ein selten beachtetes Detail bei "AT"-Befehlen ist, dass viele Modems im "Auto-Baud/Auto-Parity"-Modus starten würden. Anfänglich würde das Modem nicht versuchen, tatsächlich irgendwelche seriellen Daten zu decodieren, sondern einfach auf einen aufeinanderfolgenden Low-Puls und High-Puls warten, deren Breiten mit der gleichen gültigen Bitperiode übereinstimmten (z. B. 3,333 ms für 300 Baud, 833 us für 1200 Baud usw .). Wenn sie das fanden, würden sie sehen, ob der nächste niedrige Impuls fünfmal so breit war. Wenn dies der Fall ist, würden sie entweder nach einem weiteren High-Low-High oder nach mindestens 1,5 Bitzeiten von High Ausschau halten. Das Auffinden eines dieser beiden würde anzeigen, dass das Modem gerade ein 0x41 oder 0xC1 (dh "A") der identifizierten Baudrate gesehen hat. Es würde ferner anzeigen, dass entweder der angeschlossene Computer entweder 8-N-1 oder 7-E-1 verwendet, oder dass er entweder 7-N-1 oder 7-O-1 verwendet. In beiden Fällen, es würde nach dem nächsten Zeichen suchen, das entweder 0x54 oder 0xD4 (dh "T") ist. Das würde es dem Modem ermöglichen, die Zeichenlänge und die Paritätseinstellungen weiter zu kategorisieren.
Beachten Sie, dass alles, was vor dem "AT" empfangen wird, ignoriert wird. Wenn Echo eingeschaltet war, würden die Daten einfach durch Spiegeln aller Zeilenübergänge ohne serielle Dekodierung an den angeschlossenen Computer zurückgesendet. Wenn ein Computer Daten vor dem "AT" mit zB 247 Baud sendete, würden sie mit dieser Geschwindigkeit zurückgesendet werden.
Heutzutage verwenden einige Geräte ein anfängliches „A“ für die automatische Baudratenerkennung, aber ansonsten ist die Tatsache, dass Befehle mit „AT“ beginnen, im Grunde eine historische Kuriosität.
Es bezieht sich auf den Hayes-Befehlssatz, der lange Zeit der Standard für die Ausgabe von Befehlen an Modems (und andere Geräte) über eine serielle Leitung war.
Anstatt dass Befehle und Daten zwei getrennte Zeilen haben, wird nur eine Zeile verwendet und um von Daten in den Befehlsmodus zu wechseln, wird eine bestimmte Sequenz gesendet, z. B. +++ gefolgt von einer Pause mit festgelegter Länge. Dann werden die nächsten Daten von der empfangenden Ausrüstung als Befehl angesehen.
Der Grund, so etwas zu verwenden, ist die Tatsache, dass es die Notwendigkeit eines weiteren Leitungspaars vermeidet, das in vielen Fällen einfach nicht verfügbar ist, insbesondere in kleinen eingebetteten Systemen.
Schauen Sie sich die Wiki-Seite und die Links unten an - dort gibt es viele Details.
Es gibt jedoch alle möglichen Erweiterungen des ursprünglichen AT-Sets, daher würde ich mich nicht auf alles verlassen, was AT erwähnt, um tatsächlich alle ursprünglichen Hayes-Befehle zu verwenden. Zum Beispiel habe ich hier einen seriellen Bluetooth-Chip, dessen IIRC seinen eigenen AT-Typensatz verwendet.
Ich bin kein Experte darin, ich erinnere mich nur daran, wie ich in den alten Tagen von DFÜ und BBS mit Befehlen herumgehackt habe.
Der "AT"-Befehlssatz sollte ein Problem lösen, bei dem Out-of-Band-Steuerinformationen über den gleichen Byte-Stream-Kanal benötigt wurden, auf dem beliebige Daten gesendet wurden. Dies war ein häufiges Problem von Modems, als es sich um externe Boxen handelte, die über ein serielles Kabel mit Computern verbunden waren.
Hayes war ein Hersteller solcher Modems und erlangte früh große Popularität. Ihre Lösung für das Out-of-Band-Problem bestand darin, dem Modem meist zweibuchstabige ASCII-Steuerbefehle mit einer speziellen Sequenz zu senden, um es in den Datendurchgangsmodus zu versetzen. Um die Wahrscheinlichkeit zu verringern, dass zufällige Dinge wie Befehle aussehen, begannen ihre Befehlssequenzen alle mit dem AT-Befehl, der für "Aufmerksamkeit" stand.
Hayes gewann so viele Marktanteile, dass andere Modemhersteller denselben Befehlssatz implementieren mussten, um kompatibel zu sein. Auf diese Weise konnten Kunden ihre Modems verwenden, ohne Software neu schreiben zu müssen, die bereits für den Betrieb eines Hayes-Modems eingerichtet war.
Heutzutage wird dieses Schema selten verwendet, aber etwas, das so allgegenwärtig war, steckt natürlich auch heute noch in dunklen Ecken herum.
Es gibt ein besonders gutes Dokument, das die Geschichte der "AT"-Befehle beschreibt, das hier zu finden ist:
http://nemesis.lonestar.org/reference/telecom/modems/at/history.html
Es enthält viele Seiten guter „Geschichte“ darüber, wie das Protokoll zustande kam.
Ich bin keiner dieser "Leute in eingebetteten Systemen", aber ich würde sagen, dass AT
Befehle immer noch verwendet werden, weil sie von einem klar definierten Standard mit geringem Overhead für Inline-Signalisierung stammen.
Das bedeutet, dass Sie denselben Kommunikationskanal sowohl für die Signalisierung (AT-Befehle zur Verwaltung der Kommunikation) als auch für die Daten (tatsächliche Daten, die Sie senden möchten) verwenden können. Der AT
Standard legt fest, wie zwischen den beiden unterschieden werden muss, damit Sie und Ihr serielles Gerät nicht verwirrt werden, wenn Sie miteinander sprechen.
AT
ist für ACHTUNG
Nun, weil es so ist. Ich würde sagen, es ist tatsächlich eine Mischung aus De -facto-Standardisierung und ein paar "echten" Standards und einigen Empfehlungen .
kinokijuf
xsari3x
Bogenmaß
why people in embedded systems use AT commands
- Ihre Frage oder die Verwendung von AT auf einer seriellen Verbindung ist nicht eingebettet. Es könnte sein, dass Sie dies auf einem eingebetteten System gesehen haben, aber sein Ursprung wird unten erklärt und ist nicht spezifisch für eingebettete Systeme. (Achten Sie darauf, Dinge nicht mit einem zu breiten Pinsel zu malen.)Kaz
modemu
: ein Unix-Programm, das ein Master/Slave-Pseudo-TTY-Gerät erstellt und ein Modem simuliert, das tatsächlich über Telnet geht. Sie „wählen“ einen Host mitATD<hostname>
. Das Lustige ist, dass das Programm fast genau zu dem Zeitpunkt herauskam, als ich es brauchte, um 1996 herum: Version 0.0.1. Seitdem brauche ich es nicht mehr. Und es ist immer noch 0.0.1! Ich habe es in Verbindung mit minicom verwendet, um Zmodem-Übertragungen über Telnet an entfernte Hosts durchzuführen, die nur auf diese Weise erreicht werden konnten.cjs