Tại sao lệnh AT được đặt?


15

Thành thật mà nói, tại sao tất cả các IC giao tiếp (hoặc ít nhất là nhiều trong số chúng hoặc nổi tiếng nhất hoặc phổ biến nhất) như Bluetooth hoặc WIFI hoặc GSM hoặc vv đều hỗ trợ bộ lệnh AT? Tại sao họ không có mã pin đơn giản cho D / C (Dữ liệu hoặc Lệnh) để liên lạc? Những lợi ích của việc sử dụng bộ lệnh AT là gì?

Bộ lệnh AT rất lớn và sẽ tốn thời gian và dung lượng bộ nhớ và điều đó gây khó khăn cho việc giao tiếp trong khi bạn có thể sử dụng chân D / C đơn giản và gửi một số nguyên để đặt các thanh ghi hoặc gửi dữ liệu.


18
Một từ: Di sản ... Tất cả đều giả vờ là modem tương thích Hayes và đã có từ thời bình minh (hoặc ít nhất là từ những năm 80, cũng giống như vậy). Và không, đó không thực sự là một lý do tốt.
Brhans

4
Không chỉ là di sản, mà là một ý tưởng thực sự tốt. Như người xưa thường nói: "Điều tuyệt vời về tiêu chuẩn là có rất nhiều lựa chọn". Tôi muốn phần cứng và phần mềm của tôi hoạt động với bất kỳ mô-đun giao tiếp nào tôi đang sử dụng mà không phải lo lắng liệu nó có nói một ngôn ngữ khác (bộ lệnh) so với ngôn ngữ tôi đang sử dụng trước đây không.
Dwayne Reid

7
Bắt buộc XKCD tại đây .
bitsmack

1
Về lý thuyết, bạn có thể rút phích cắm mô-đun WIFI của mình và thay thế nó bằng mô-đun từ nhà cung cấp khác. Và vì giao thức giống nhau, bạn thậm chí không phải điều chỉnh mã.
Paul

1
Nếu có gì đó không ổn với giao tiếp / bit, bạn sẽ không nhận được phản hồi đúng, ví dụ: "OK" Vì vậy, nếu bạn xử lý nó phù hợp, nó khá ổn định. Nó khá dễ dàng để gỡ lỗi, vì các thông điệp có ý nghĩa theo một cách nào đó. Việc xử lý, tuy nhiên, thực sự là một chút khó khăn để thực hiện. Bạn phải kiểm tra tin nhắn cho biết. Và đọc chúng ra, theo cách không thường xuyên đối với MCU. Nhưng một lần nữa, nếu bạn làm điều này một lần, nó sẽ hoạt động cho các thiết bị AT khác.
Paul

Câu trả lời:


27

Brhans là chính xác - Di sản.

Vào những năm 1980, Hayes bắt đầu thực hiện "Smartmodem 1200". Nó đã lỗi thời gần như ngay lập tức và Hayes đã vội vã ra Smartmodem 2400. Trong cơn sốt đó, không có thời gian để thay đổi thiết kế giữa các thiết kế modem. Kết quả là Hayes là người đầu tiên tạo ra hai modem tốc độ khác nhau chấp nhận các lệnh lập trình giống nhau! Bất kỳ phần mềm nào có thể nhận Smartmodem 1200 để quay số điện thoại cũng có thể quay số Smartmodem 2400.

Tại thời điểm đó, mỗi modem mới cần vài tháng để trình điều khiển cập nhật được viết. Khi Smartmodem 2400 xuất hiện trên thị trường, đã có một trình điều khiển hoạt động cho Smartmodem 1200 nên không có tháng chờ đợi. Đột nhiên các nhà sản xuất khác nhận ra lợi thế của các modem mới có cùng bộ lệnh như các modem cũ hơn. Trong vòng sáu tháng, các nhà cung cấp đã cung cấp modem "Tương thích Hayes" là lựa chọn duy nhất. Mà đã bị họ kiện bởi Hayes. Vì vậy, mọi người bắt đầu gọi modem của họ là "AT Command Set tương thích", nhưng vẫn tiếp tục sử dụng bộ lệnh Hayes.

Vào giữa những năm 80, không có modem người tiêu dùng nào được tạo ra mà không thể sử dụng bộ lệnh AT. Kết quả là mọi modem như hệ thống comms đều sử dụng các lệnh AT. Cũng có những lợi thế khác - vì bộ lệnh là ASCII, bất kỳ ai cũng có thể tự nhập các lệnh AT vào cửa sổ đầu cuối để điều khiển modem. Vì modem của riêng tôi có kết nối RJ11 xúc xắc, tôi đã sử dụng để bắt đầu mọi phiên trong Procomm Plus với:

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

Chỉ để chắc chắn rằng tôi có âm quay số. Nếu tôi không, tôi sẽ đi xung quanh và ngọ nguậy dây một chút!


1
Điểm tốt về khả năng gỡ lỗi. Một giao thức nhị phân thuần túy (như kho dữ liệu màn hình LCD) yêu cầu bạn thiết kế phần cứng / phần sụn để thậm chí bắt đầu nói chuyện với thiết bị. Bộ lệnh AT cho phép bạn kiểm tra thiết bị với phần cứng bằng không. Tất cả những gì bạn cần là một cổng nối tiếp (hoặc ngày nay là bộ chuyển đổi USB sang nối tiếp) và trình giả lập thiết bị đầu cuối.
slebetman

1
Một vấn đề nhỏ ... Winmodems bảo tồn khả năng tương thích ở cấp ỨNG DỤNG với các lệnh AT, nhưng đã phá vỡ hoàn toàn khả năng tương thích ở cấp độ hệ điều hành. Pre-Winmodem, ngay cả các modem bên trong giao tiếp thông qua UART 16550A tiêu chuẩn không có hoạt động được Linux nổi tiếng và hỗ trợ trong suốt (vì chúng trông giống như các cổng nối tiếp ISA hoặc PCI thông thường cho HĐH). Winmodems đã ném một chiếc mỏ lết khỉ vào đó bằng cách di chuyển logic cấp cao hơn (Lucent) hoặc nghĩa đen là mọi thứ (HSP) vào trình điều khiển. Vì lệnh lưu trữ AT của Winmodem là ảo, nên chúng thực sự là giấy tờ trong Linux.
Bitbang3r

1
Đúng, tôi cũng thường tự gõ chúng do có đường dây điện thoại quay số xung (nhưng tất cả các ứng dụng comm đều cho rằng tất cả mọi người đều có âm chạm). :-)
Brian Knoblauch

@slebetman: Tôi thích nó khi các thiết bị có các tùy chọn hỗ trợ các giao thức nhị phân hoặc dựa trên văn bản, nhưng các lệnh "AT" là một vấn đề riêng biệt. Trong các hệ thống không phát hiện tự động baud, không có lợi thế đặc biệt nào đối với "AT" làm tiền tố lệnh và tôi đã thấy một số hệ thống có tiền tố lệnh "AT" nhưng vẫn yêu cầu khả năng gửi và nhận ký tự bên ngoài nguyên tắc ASCII đặt và mã kiểm soát chung.
supercat

1
IIRC, Linux cuối cùng đã có trình điều khiển cho một số winmodems. Trong nhiều trường hợp, thông qua trình điều khiển âm thanh ALSA hoặc OSS, bởi vì các phần mềm mềm bị loại bỏ nhiều nhất về cơ bản là các thẻ âm thanh được kết nối với đường dây điện thoại. IIRC, có những lợi thế về độ trễ nhỏ có được từ winmodems, vì bạn không bị kẹt dữ liệu trong bộ đệm UART. Chỉ có game thủ quan tâm. Mọi người khác ghét lãng phí chu kỳ từ CPU lõi đơn của họ.
Peter Cordes

20

Bạn chỉ nói về nhược điểm của bộ lệnh. Hãy xem xét những mặt tích cực:

  1. Bằng cách sử dụng bộ lệnh AT, thiết bị liên lạc của bạn có thể ngay lập tức được đặt trên bất kỳ mạng IP nào thông qua triển khai PPP của HĐH . Cách khác là ngoài việc thiết kế giao diện giao thức tùy chỉnh, bạn phải viết trình điều khiển thiết bị mạng của riêng mình cho mọi HĐH bạn muốn hỗ trợ trước khi HĐH đó có thể sử dụng thiết bị của bạn để tham gia Internet.

  2. Bất kỳ kỹ sư có thẩm quyền sẽ biết giao thức này. Lấy nó từ một người có công việc hàng ngày đòi hỏi anh ta phải hiểu và thực hiện hàng tá giao thức nối tiếp không chuẩn: một giao thức chung được thiết kế tốt sẽ tốt hơn.

  3. Mặc dù đúng là giao thức AT khá phức tạp và cần nhiều bộ nhớ để thực hiện hơn so với giao thức được xây dựng theo mục đích dành riêng cho nhiệm vụ, nhưng cũng có trường hợp ai đó chọn thực hiện giao thức này để tránh mất nhiều thời gian để phát minh lại bánh xe hoàn toàn tốt. Anh ta có nhiều thập kỷ chuyên môn thiết kế để rút kinh nghiệm. Anh ta biết nó sẽ hoạt động trước khi anh ta cam kết thời gian phát triển nó. Thiết kế giao thức tốt là khó khăn đáng ngạc nhiên.

    (Một trong những ngày này, tôi sẽ xuất bản kiệt tác của mình, "Giao thức của bạn", với hy vọng ngăn chặn sự tồn tại của các giao thức một nửa khủng khiếp hơn được coi là một nửa.)


1
Trong khi tôi đồng ý với tình cảm; "thiết kế tốt"? Ba từ: ATSlệnh ...
một CVn

Phần lớn các thiết bị tôi đã thấy sử dụng các lệnh được gọi là "AT" không có gì chung giữa các bộ lệnh của chúng ngoài hai ký tự đầu tiên. Nếu một mô-đun WiFi có thể chấp nhận "ATDT192,168,254,5W1234" như một lệnh để mở kết nối TCP tới cổng 1234 ở 192.168.254.5, thì phần mềm hy vọng modem có thể sử dụng mô-đun tốt, nhưng tôi vẫn chưa thấy Tất cả những thứ tương tự như vậy.
supercat

@supercat: Đó là vì modem WiFi gần giống với thẻ Ethernet, như có thể thấy từ các tiêu chuẩn có liên quan (sê-ri IEEE802) và việc sử dụng địa chỉ MAC. Và trong khi câu hỏi nói về "IC truyền thông", tôi không nghĩ IC coomon Ethernet sử dụng bộ lệnh AT.
MSalters

@MSalters: Trong nhiều trường hợp, việc sử dụng chính cho mô-đun WiFi sẽ là thiết lập một kết nối TCP tại một thời điểm; Thi đua Hayes có thể làm việc tốt đẹp cho điều đó. Tôi đã thấy trình điều khiển FOSSIL cho phép các chương trình thiết bị đầu cuối dựa trên DOS được sử dụng làm máy khách telnet bằng cách sử dụng các số "quay số" như trên và tôi nghĩ rằng cách tiếp cận tương tự sẽ hoạt động tốt với các mô-đun WiFi. Trong mọi trường hợp, quan điểm của tôi là nếu một sản phẩm sử dụng một chuỗi như trên để thiết lập kết nối TCP, thì việc sử dụng đó sẽ có lợi ích tương thích / quen thuộc đáng kể, nhưng ...
supercat

... Tôi nghi ngờ rằng phần lớn các thiết bị ngày nay sử dụng các lệnh bắt đầu bằng "AT" chỉ đơn giản là vì người tạo ra chúng đã thấy nhiều thiết bị khác bắt đầu tất cả các lệnh của họ bằng "AT" và theo sau mà không biết tại sao các thiết bị khác đó sẽ làm vì thế.
supercat

14

Tôi sẽ mở rộng ở phía bên kia của câu hỏi ... tại sao không thêm một đường báo hiệu khác vào giao diện?

Điều đó chỉ có thể được hỏi bởi một người không sống qua tất cả các hoán vị của đường truyền tín hiệu trên giao diện RS232 25 chân chính hãng. Ngoài TXD, RXD và Gnd, đã có một số cặp tín hiệu khác, RTS / CTS (Sẵn sàng gửi, Xóa để gửi) DSR / DTR (Sẵn sàng cài đặt dữ liệu, Sẵn sàng cho thiết bị đầu cuối dữ liệu) và pin Hangup phần cứng. Và những người khác. Và không có thỏa thuận phổ biến rõ ràng giữa các nhà sản xuất chính xác những gì đã làm chức năng - tại sao bạn cần hai bộ tín hiệu bắt tay phần cứng ở nơi đầu tiên? Và phần mềm giao thức XON / XOFF trên đó) (Và tại sao các máy in Diablo khẳng định - duy nhất theo như tôi biết - khi bắt tay vào pin 11?)

Một số thiết bị cần một giao diện đầy đủ. Một số đã hài lòng với TXD / RXD / Gnd. Một số có thể bị lừa khi làm việc bằng cách rút ngắn chân 4 và 6 (do đó lặp lại RTS của riêng họ thành CTS). Và một số đáng lẽ là DCE là DTE hoặc ngược lại và sẽ chỉ nói chuyện với bất kỳ ai khác thông qua cáp "modem null" với mỗi cặp kết nối được hoán đổi.

Sau đó, để đơn giản hóa tất cả những điều này, IBM PC đã giới thiệu một giao diện 9 chân mới cho RS232. Có nghĩa là tất cả bộ sưu tập cáp hiện có của bạn đã lỗi thời và bạn phải bắt đầu lại ...

Tất cả những điều đó làm cho cuộc sống trở nên khó khăn ngay cả khi không xem xét rằng cả hai đầu có thể đã được đặt ở tốc độ truyền khác nhau ...

Điều này hỗ trợ toàn bộ ngành công nghiệp được xây dựng xung quanh các hộp đột phá, dây cáp và các công cụ kiểm tra / gỡ lỗi.

Thêm một tín hiệu khác, trong bối cảnh này, có lẽ sẽ không bay ...


9

Modem Hayes đầu tiên sử dụng các lệnh "AT" đã chọn "A" làm ký tự đầu tiên của tiền tố lệnh vì nó cần hỗ trợ nhiều tốc độ truyền và "A" trên dòng trông như sau: -------_-_____-x---------- có tỷ lệ 5: 1 giữa thời gian 'thấp nhất dài nhất và ngắn nhất ("x" có thể cao hoặc thấp tùy thuộc vào cài đặt chẵn lẻ). Không có tốc độ nào chậm hơn 1200 baud có thể quản lý thời gian "ngắn" từ 833us trở xuống và không có tốc độ nào nhanh hơn 2400 có thể quản lý thời gian "dài" 4,16ms hoặc lâu hơn, do đó, modem có thể giả định rằng nếu nó nhìn thấy thứ gì đó trông giống giống như "A" 1200 baud, nó là (và tương tự với 300 baud, v.v.). Chữ "T" có tính chẵn lẻ ngược lại với chữ "A", vì vậy nếu ký tự thứ hai trông giống chữ "T",

Các thiết bị hoặc trình điều khiển sử dụng các lệnh "AT" hoạt động tương tự hoặc tương tự với các lệnh modem Hayes (ví dụ: chấp nhận ATDTW192,168,254,123W4567làm lệnh để kết nối với cổng 4567 của 192.168.254.123) để tương thích với phần mềm dự kiến ​​sẽ nói chuyện với kiểu cũ modem hoặc thiết bị tương thích. Tuy nhiên, có nhiều thiết bị sử dụng các lệnh bắt đầu bằng "AT" trên lý thuyết rằng "Tập lệnh AT" dường như là một từ thông dụng tiếp thị hữu ích, mặc dù các thiết bị không có khả năng phát hiện tốc độ baud tự động và có các lệnh không giống như bất cứ điều gì trên bất kỳ thiết bị khác. Việc sử dụng "AT" làm tiền tố lệnh trong các bối cảnh như vậy không thêm giá trị tương thích và không phục vụ mục đích hữu ích; các nhà thiết kế làm điều đó bởi vì họ đã thấy các nhà thiết kế khác làm điều đó,

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.