Làm thế nào là phần mềm cho các máy như ATM hoặc TV được xây dựng?


14

Là một lập trình viên mới bắt đầu, tôi chỉ làm việc với các ứng dụng dựa trên máy tính lập trình, nhưng một câu hỏi đã xuất hiện trong đầu tôi rất thường xuyên kể từ khi tôi bắt đầu lập trình và tôi không thể trả lời đúng.

Máy móc không tự hoạt động, đó là công việc của lập trình viên, anh ta nói cho nó biết phải làm gì và khi nào nên làm, nhưng sự tò mò của tôi nằm bên dưới máy tính. Tôi sẽ lấy ví dụ về phần mềm ATM trên bài đăng này nhưng hãy nhớ rằng có nhiều phần mềm khác như màn hình máy giặt hoặc TV, điện thoại di động, bạn đặt tên cho nó.

Làm thế nào chính xác là phần mềm cho các loại máy được xây dựng? Tôi tưởng tượng nó không thể giống với lập trình dựa trên máy tính. Ngôn ngữ nào họ sử dụng để làm cho những thứ đó hoạt động và làm thế nào để một người hoàn thành công việc? Có lập trình viên chuyên về loại chương trình này? Quá trình làm cho các máy này đi vào cuộc sống là gì?



Cảm ơn vi đương link. Tôi không có manh mối về điều này cho đến khi tôi tìm thấy liên kết của bạn. Ngoài ra tại sao điều này bị hạ cấp? Có gì sai với nó?
Bugster

3
@ThePlan Mọi người có xu hướng downvote các câu hỏi không thuộc loại "Làm thế nào để tôi giải quyết vấn đề cụ thể này?"
CFL_Jeff

3
Mặc dù mọi người có thể downvote vì một số lý do và không bắt buộc phải giải thích, nhưng tooltip trên mũi tên downvote viết: "Câu hỏi này không cho thấy bất kỳ nỗ lực nghiên cứu nào; nó không rõ ràng hoặc không hữu ích" - Tôi nghĩ rằng câu đầu tiên rất gần với một lời giải thích đầy đủ cho downvote bạn nhận được, vui lòng thực hiện ít nhất một số nghiên cứu nhỏ trước khi hỏi về Lập trình viên.
yannis

9
Tôi nói cắt cho anh ta một chút chùng. Thật khó để nghiên cứu lập trình nhúng khi bạn không biết thuật ngữ này.
Karl Bielefeldt

Câu trả lời:


15

Nó được gọi là Hệ thống nhúng hoặc Phát triển phần mềm nhúng. Tôi muốn giới thiệu cuốn sách này nếu bạn muốn biết thêm về quy trình chung mà không đi sâu vào bất kỳ kiến ​​trúc nào. Nó thậm chí còn cung cấp cho bạn một hệ điều hành thời gian thực để chơi.

Lập trình nhúng là rất phụ thuộc kiến ​​trúc. Bạn thường làm việc dưới sự phản hồi nghiêm túc, quy mô chương trình, phục hồi lỗi và các ràng buộc về chi phí. Chẳng hạn, bạn có thể có bộ xử lý z80 (bộ xử lý 8 bit, chúng ở khắp mọi nơi) và có lẽ là một vài kilobyte bộ nhớ để chơi. Bạn chỉ có thể có ROM để báo cho hệ thống biết phải làm gì và cách thiết lập chương trình. Nó cũng có thể chỉ là một vài kilobyte kích thước. Tại sao ký ức quá ít? Vâng, nếu bạn sản xuất 15 triệu mút nhỏ; mỗi xu trở thành 150.000 đô la.

Tôi muốn đề xuất một số thứ như Arduino hoặc Scribbler Robots nếu bạn muốn tìm hiểu thêm bằng cách thực hiện. Theo như Languages, C, C ++ và hội là tập hợp điển hình mặc dù Java có thể được sử dụng (và thực tế được thiết kế ban đầu cho miền này nếu bạn có thể nghĩ rằng) Những người khác chắc chắn cũng có thể được sử dụng, tôi đã biết Lisp và ML đều đang được triển khai.

Tìm hiểu càng nhiều càng tốt về kiến ​​trúc bởi vì như tôi đã nói, phân bổ bộ nhớ và các hoạt động bitwise bắt đầu thực sự quan trọng.


Cảm ơn, câu trả lời này là lựa chọn của tôi về một câu trả lời được chấp nhận vì nó giải thích các hệ thống nhúng một cách ngắn gọn và cũng cho tôi một tùy chọn sách.
Bugster

4
@ThePlan - điều hay ho về nhúng là bạn có thể kiểm tra chúng. Nếu bạn chỉ có 3 đầu vào và 3 đầu ra, thật dễ dàng để xác nhận những gì hoạt động. Bạn không phải kiểm tra xem điều gì sẽ xảy ra nếu họ chạy mã của bạn theo tiếng Do Thái Windows XP trên bàn phím tiếng Thổ Nhĩ Kỳ với phiên bản Flash của Uzbekistan.
Martin Beckett

@MartinBeckett: Bạn đã phần nào tầm thường hóa sự khó khăn trong việc phát triển hệ thống nhúng. Cái cuối cùng có yêu cầu đáp ứng thời gian thực có nghĩa là trong nano giây. Điều đó là không thể kiểm chứng - cách duy nhất để biết nó là chính xác là chứng minh mã là chính xác bằng thiết kế và xem xét. Không giống như những chàng cao bồi viết mã ứng dụng người dùng vào thứ ba, những khiếm khuyết của họ được sửa chữa bằng một bản cập nhật trực tuyến.
mattnz

Ngoài ra, các hệ thống này có thể được yêu cầu hoạt động trong nhiều năm hoặc thậm chí nhiều thập kỷ mà không có sự truy cập của con người hoặc người khác.
Kỹ sư thế giới

@mattnz - không phải lúc nào cũng dễ dàng nhưng ít nhất là có thể làm được. Trong mã máy tính để bàn cao bồi, trên hệ điều hành, bạn không thể kiểm tra đầy đủ, được viết bằng bộ công cụ mà bạn không thể kiểm tra đầy đủ với 1000 ứng dụng khác có khả năng tương tác với nó, cộng với hành động ngẫu nhiên của người dùng - điều đó khá vô vọng.
Martin Beckett

5

Chắc chắn có một góc nhúng ở đây. Nhưng ngày nay, bạn đang thấy ngày càng nhiều nền tảng tiên tiến hơn về những gì thường được gọi là thiết bị nhúng. Ví dụ: TV LG và Samsung hiện có API và cửa hàng ứng dụng. TV Sony sẽ chạy Android.


3
... Và một số máy ATM chạy Windows. Khi chúng ở màn hình xanh, các bức ảnh thường kết thúc trên thed Dailywtf.com . Và trong thành phố của tôi, phương tiện công cộng địa phương bán vé hàng tháng từ các ki-ốt. Tôi đã từng thấy một cái bị kẹt khi khởi động - nó đang chạy Windows 2000 (cái này khoảng 6 tháng trước)!
Thất vọngWithFormsDesigner

@FrustratedWithFormsDesigner - cảm ơn, đừng làm ATM ở đây vì vậy tôi không biết họ đang làm gì. . .
Wyatt Barnett

ATM = Máy rút tiền tự động. Máy ngân hàng AKA. AKA Máy cho phép bạn rút tiền ra khỏi tài khoản thay vì phải đến một giao dịch viên.
Thất vọngWithFormsDesigner

Tôi biết rằng, đừng làm việc với họ như bất cứ điều gì ngoài một khách hàng. . .
Wyatt Barnett

4

Tôi đã thấy hai máy ATM được mở tại Denver, Colorado. Cả hai đều là (sau đó) ATM ATM của ngân hàng và cả hai đều là Windows XP trong trường hợp cứng. Tôi đã hỏi công nghệ, cụ thể là, một trong số họ đã chạy và anh ta nói một cái gì đó như "XP Embedded".

Vì vậy, tôi cá rằng lập trình ATM ít giống như lập trình nhúng ngày nay, và giống như phát triển Windows tiêu chuẩn hơn.


Không chỉ là "những ngày này". ATM được sử dụng để chạy Windows NT 3 hoặc OS / 2. Và giao diện người dùng mà bạn thấy rất có thể là các trang HTML được hiển thị bởi Internet Explorer. Ngôn ngữ lập trình có thể là bất cứ điều gì - Tôi đã làm việc trên một hệ thống Java thay thế một ngôn ngữ được viết bằng VB. ATM thực sự chỉ là những PC thông thường với một số thiết bị ngoại vi và trình điều khiển khác thường.
Michael Borgwardt

3

Các loại thiết bị này được lập trình bằng lập trình nhúng . Đây là một loại lập trình rất thấp, liên quan nhiều đến logic và cổng.

Nếu bạn quan tâm đến việc học thực hành lập trình nhúng, tôi khuyên bạn nên tìm hiểu về arduino .

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.