Mengapa AT set perintah?

15

Terus terang, Mengapa semua IC komunikasi (atau setidaknya banyak dari mereka atau paling terkenal atau populer) seperti Bluetooth atau WIFI atau GSM atau dll mendukung set perintah AT? mengapa mereka tidak memiliki pin sederhana untuk D / C (Data atau Command) untuk komunikasi? Apa manfaat menggunakan set perintah AT?

Set perintah AT besar dan akan memakan waktu dan ruang memori dan membuatnya sulit untuk berkomunikasi sementara Anda dapat menggunakan pin D / C sederhana dan mengirim integer untuk mengatur register atau mengirim data.

Roh
sumber
18
Satu kata: Legacy ... Mereka semua berpura-pura menjadi modem yang kompatibel dengan Hayes dan telah sejak awal waktu (atau setidaknya sejak tahun 80-an, yang merupakan hal yang hampir sama). Dan tidak, itu bukan alasan yang bagus.
brhans
4
Bukan hanya warisan, tetapi ide yang sangat bagus. Seperti kata pepatah lama: "Hal yang luar biasa tentang standar adalah bahwa ada begitu banyak untuk dipilih". Saya ingin perangkat keras dan perangkat lunak saya bekerja dengan modul komunikasi apa pun yang saya gunakan tanpa harus khawatir apakah itu berbicara bahasa yang berbeda (set perintah) dari yang saya gunakan sebelumnya.
Dwayne Reid
7
XKCD wajib di sini .
bitsmack
1
Secara teori, Anda bisa mencabut modul WIFI Anda dan menggantinya dengan satu dari vendor lain. Dan karena protokolnya sama, Anda bahkan tidak perlu menyesuaikan kode.
Paul
1
Jika ada sesuatu yang salah dengan komunikasi / bit Anda tidak akan mendapatkan respon yang tepat yaitu: "OK" Jadi jika Anda menanganinya, itu cukup stabil. Cukup mudah untuk di-debug, karena beberapa pesan masuk akal. Namun, penanganannya memang sedikit lebih sulit untuk diterapkan. Anda harus memeriksa pesan tersebut. Dan membacanya, dengan cara yang tidak biasa untuk MCU. Tetapi sekali lagi, jika Anda melakukan ini sekali, itu akan berfungsi untuk perangkat AT lainnya.
Paul

Jawaban:

27

brhans benar - Legacy.

Pada 1980-an, Hayes mulai membuat "Smartmodem 1200". Itu usang segera dan Hayes bergegas keluar Smartmodem 2400. Dalam terburu-buru itu, tidak ada waktu untuk perubahan desain antara desain modem. Alhasil, Hayes adalah yang pertama membuat dua modem kecepatan berbeda yang menerima perintah pemrograman yang sama! Perangkat lunak apa pun yang bisa mendapatkan Smartmodem 1200 untuk menghubungi nomor telepon juga bisa menghubungi Smartmodem 2400.

Pada saat itu, setiap modem baru memerlukan berbulan-bulan untuk dituliskan driver yang diperbarui. Ketika Smartmodem 2400 hadir di pasaran, sudah ada driver yang berfungsi untuk Smartmodem 1200 sehingga tidak perlu menunggu selama berbulan-bulan. Tiba-tiba pabrikan lain menyadari keuntungan dari modem baru yang memiliki perintah yang sama dengan modem yang lebih lama. Dalam enam bulan, vendor menawarkan modem "Hayes compatible" sebagai satu-satunya pilihan. Yang membuat mereka dituntut oleh Hayes. Jadi semua orang mulai memanggil modem mereka "AT Command Set kompatibel", tetapi terus menggunakan set perintah Hayes.

Pada pertengahan 80-an tidak ada modem konsumen dibuat yang tidak dapat menggunakan set perintah AT. Akibatnya setiap modem seperti sistem komunikasi menggunakan perintah AT. Ada keuntungan lain juga - karena set perintah adalah ASCII, siapa pun dapat mengetik perintah AT secara manual ke jendela terminal untuk mengontrol modem. Karena modem saya sendiri memiliki koneksi RJ11 yang tidak pasti, saya biasa memulai setiap sesi di Procomm Plus dengan:

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

Hanya untuk memastikan saya mendapat nada sambung. Jika tidak, saya akan berkeliling dan sedikit menggoyangkan kabel!

mengukir
sumber
1
Poin bagus tentang debugability. Protokol biner murni (seperti datastream layar LCD) mengharuskan Anda merancang perangkat keras / firmware untuk mulai berbicara dengan perangkat. Set perintah AT memungkinkan Anda menguji perangkat dengan nol perangkat keras. Yang Anda butuhkan hanyalah port serial (atau hari ini konverter USB ke serial) dan emulator terminal.
slebetman
1
Satu masalah kecil ... Winmodem mempertahankan kompatibilitas tingkat APLIKASI dengan perintah AT, tetapi benar-benar merusak kompatibilitas tingkat OS. Pra-Winmodem, bahkan modem internal dihubungkan melalui UART bog-standar 16550A yang kerjanya terkenal dan didukung secara transparan oleh Linux (karena mereka terlihat seperti ISA atau port serial PCI normal untuk OS). Winmodem melemparkan kunci inggris ke dalam itu dengan memindahkan logika level yang lebih tinggi (Lucent) atau secara harfiah segalanya (HSP) ke dalam driver. Karena commandhost AT Winmodem adalah virtual, mereka benar-benar pemberat kertas di Linux.
Bitbang3r
1
Yap, saya juga mengetik secara manual karena memiliki saluran telepon panggilan pulsa (tetapi semua aplikasi kom dengan asumsi semua orang memiliki nada sentuh). :-)
Brian Knoblauch
@slebetman: Saya suka jika perangkat memiliki opsi untuk mendukung protokol berbasis biner atau teks, tetapi perintah "AT" adalah masalah yang terpisah. Dalam sistem tanpa deteksi baud otomatis, tidak ada keuntungan khusus untuk "AT" sebagai awalan perintah, dan saya telah melihat sejumlah sistem yang awalan perintah dengan "AT" tetapi masih memerlukan kemampuan untuk mengirim dan menerima karakter di luar prinsip. Set ASCII dan kode kontrol umum.
supercat
1
IIRC, Linux akhirnya mendapat driver untuk beberapa winmodem. Dalam banyak kasus, melalui driver suara ALSA atau OSS, karena softmodem yang paling banyak dilucuti pada dasarnya adalah kartu suara yang terhubung ke saluran telepon. IIRC, ada keuntungan latensi kecil yang bisa didapat dari winmodem, karena Anda tidak memiliki data Anda terjebak dalam buffer UART. Hanya gamer yang peduli. Semua orang benci siklus buang-buang dari CPU single-core mereka.
Peter Cordes
20

Anda hanya berbicara tentang kelemahan dari set perintah. Pertimbangkan sisi baiknya:

  1. Dengan menggunakan set perintah AT, perangkat komunikasi Anda dapat segera diletakkan di jaringan IP apa pun melalui implementasi PPP OS . Alternatifnya adalah bahwa selain merancang antarmuka protokol khusus, Anda harus menulis driver perangkat jaringan Anda sendiri untuk setiap OS yang ingin Anda dukung sebelum OS itu dapat menggunakan perangkat Anda untuk bergabung dengan Internet.

  2. Insinyur yang kompeten akan mengetahui protokol ini. Ambillah dari pekerjaan yang mengharuskannya untuk memahami dan mengimplementasikan puluhan protokol serial yang tidak standar: satu protokol umum yang direkayasa dengan baik lebih baik.

  3. Walaupun memang benar bahwa protokol AT cukup kompleks dan membutuhkan lebih banyak memori untuk diimplementasikan daripada protokol yang dibuat khusus untuk tugas, ada juga kasus bahwa seseorang yang memilih untuk mengimplementasikan protokol ini dapat menghindari menghabiskan banyak waktu untuk menciptakan kembali suatu roda sangat baik. Dia memiliki puluhan tahun keahlian desain untuk menarik. Dia tahu itu akan berhasil sebelum dia berkomitmen untuk mengembangkannya. Desain protokol yang bagus sangat sulit.

    (Suatu hari, saya akan mempublikasikan magnum opus saya, "Protokol Anda Menyebalkan," dengan harapan dapat mencegah dilakukannya protokol sekali saja yang dianggap lebih buruk.)

Warren Young
sumber
1
Sementara saya setuju dengan sentimen; "direkayasa dengan baik"? Tiga kata: ATSperintah ...
a CVn
Sebagian besar perangkat yang pernah saya lihat yang menggunakan perintah yang disebut "AT" tidak memiliki kesamaan di antara perintah mereka selain dari dua karakter pertama. Jika modul WiFi dapat menerima "ATDT192.168.254.5W1234" sebagai perintah untuk membuka koneksi TCP ke port 1234 di 192.168.254.5, maka perangkat lunak yang mengharapkan modem dapat menggunakan modul dengan baik, tapi saya belum pernah melihatnya. hal seperti itu.
supercat
@supercat: Itu karena modem WiFi lebih mirip dengan kartu Ethernet, seperti yang dapat dilihat dari standar yang relevan (seri IEEE802) dan penggunaan alamat MAC. Dan sementara pertanyaan berbicara tentang "IC komunikasi" Saya tidak berpikir IC Ethernet coomon menggunakan AT command set.
MSalters
@MSalters: Dalam banyak skenario, penggunaan utama untuk modul WiFi adalah untuk membuat satu koneksi TCP sekaligus; Emulasi Hayes dapat bekerja dengan indah untuk itu. Saya telah melihat driver FOSSIL yang memungkinkan program terminal berbasis DOS untuk digunakan sebagai klien telnet dengan meminta mereka "memanggil" angka-angka seperti di atas, dan saya akan berpikir bahwa pendekatan yang sama akan bekerja dengan indah dengan modul WiFi. Bagaimanapun, maksud saya adalah bahwa jika suatu produk menggunakan string seperti di atas untuk membuat koneksi TCP, penggunaan seperti itu akan memiliki manfaat kompatibilitas / keakraban yang signifikan, tetapi ...
supercat
... Saya menduga bahwa sebagian besar perangkat saat ini yang menggunakan perintah dimulai dengan "AT" melakukannya hanya karena pencipta mereka melihat banyak perangkat lain memulai semua perintah mereka dengan "AT" dan mengikuti tanpa tahu mengapa perangkat lain akan melakukan begitu.
supercat
14

Saya akan memperluas di sisi lain dari pertanyaan ... mengapa tidak menambahkan baris pensinyalan lain ke antarmuka?

Itu hanya dapat ditanyakan oleh seseorang yang tidak hidup melalui semua permutasi dari jalur pensinyalan pada antarmuka RS232 25-pin asli. Selain TXD, RXD dan Gnd, sudah ada beberapa pasangan sinyal lainnya, RTS / CTS (Siap Kirim, Hapus Untuk Kirim) DSR / DTR (Siap Set Data, Terminal Data Siap) dan pin Hangup perangkat keras. Dan lain-lain. Dan tidak ada perjanjian universal yang jelas antara produsen, apa fungsi sebenarnya - mengapa Anda memerlukan dua set sinyal handshaking perangkat keras di tempat pertama? Dan perangkat lunak XON / XOFF protokol di atas itu) (Dan mengapa printer Diablo bersikeras - unik sejauh yang saya tahu - tentang berjabat tangan pada pin 11?)

Beberapa peralatan membutuhkan antarmuka penuh. Beberapa senang dengan TXD / RXD / Gnd. Beberapa dapat tertipu untuk bekerja dengan korsleting pin 4 dan 6 (dengan demikian mengembalikan RTS mereka sendiri ke CTS). Dan beberapa yang seharusnya DCE adalah DTE atau sebaliknya dan hanya akan berbicara dengan yang lain melalui kabel "null modem" dengan setiap pasangan koneksi bertukar.

Kemudian untuk menyederhanakan semua ini, IBM PC memperkenalkan antarmuka 9-pin baru untuk RS232. Berarti semua koleksi kabel Anda yang ada sudah usang dan Anda harus memulai lagi ...

Semua yang membuat hidup sulit bahkan tanpa mempertimbangkan bahwa kedua ujungnya mungkin telah diatur ke tingkat baud yang berbeda ...

Ini mendukung seluruh industri yang dibangun di sekitar kotak breakout RS232, kabel dan alat uji / debugging.

Menambahkan sinyal lain, dalam konteks ini, mungkin tidak akan terbang ...

Brian Drummond
sumber
9

Modem Hayes pertama yang menggunakan perintah "AT" memilih "A" sebagai karakter pertama dari awalan perintahnya karena diperlukan untuk mendukung beberapa baud rate, dan "A" di telepon terlihat seperti: -------_-_____-x----------yang memiliki rasio 5: 1 antara waktu 'rendah' ​​terpanjang dan terpendek ("x" mungkin tinggi atau rendah tergantung pada pengaturan paritas). Tidak ada kecepatan lebih lambat dari 1200 baud yang dapat mengatur waktu "pendek" 833us atau kurang, dan tidak ada laju lebih cepat dari 2400 dapat mengatur waktu "panjang" dari 4,16 ms atau lebih, sehingga modem dapat dengan aman berasumsi bahwa jika ia melihat sesuatu yang terlihat seperti 1200-baud "A", itu (dan juga dengan 300 baud, dll). "T" memiliki paritas yang berlawanan dari "A", jadi jika karakter kedua terlihat seperti "T",

Perangkat atau driver yang menggunakan perintah "AT" yang bekerja sama atau analog dengan perintah modem Hayes (misalnya menerima ATDTW192,168,254,123W4567sebagai perintah untuk menyambung ke port 4567 dari 192.168.254.123) melakukannya untuk kompatibilitas dengan perangkat lunak yang mengharapkan untuk berbicara dengan gaya lama. modem atau perangkat yang kompatibel. Namun, ada banyak perangkat yang menggunakan perintah yang dimulai dengan "AT" pada teori bahwa "AT command set" tampaknya menjadi kata kunci pemasaran yang berguna, meskipun perangkat tidak mampu mendeteksi baud-rate otomatis dan memiliki perintah seperti apa pun di perangkat lain. Penggunaan "AT" sebagai awalan perintah dalam konteks semacam itu tidak menambah nilai kompatibilitas dan tidak memiliki tujuan yang berguna; desainer melakukannya karena mereka telah melihat desainer lain melakukannya,

supercat
sumber