Bagaimana perangkat lunak untuk mesin seperti ATM atau TV dibangun?

14

Sebagai seorang programmer pemula, saya hanya bekerja dengan pemrograman aplikasi berbasis komputer, tetapi sebuah pertanyaan telah muncul di kepala saya sangat sering sejak saya mulai pemrograman dan saya tidak bisa mendapatkannya dijawab dengan benar.

Mesin tidak bertindak sendiri, itu tugas programmer, ia mengatakan apa yang harus dilakukan dan kapan melakukannya, tetapi keingintahuan saya terletak di bawah komputer. Saya akan mengambil contoh-contoh perangkat lunak ATM pada posting ini tetapi perlu diingat ada banyak lainnya seperti layar mesin cuci, atau TV, ponsel, apa saja.

Bagaimana tepatnya perangkat lunak untuk mesin jenis ini dibangun? Saya membayangkan itu tidak bisa identik dengan pemrograman berbasis komputer. Bahasa apa yang mereka gunakan untuk membuat hal-hal seperti itu bekerja dan bagaimana seseorang menyelesaikan pekerjaannya? Apakah ada programmer yang mengkhususkan diri pada pemrograman semacam ini? Bagaimana proses pembuatan mesin ini menjadi hidup?

Bugster
sumber
Terima kasih atas tautannya. Saya tidak tahu tentang ini sampai saya menemukan tautan Anda. Juga mengapa ini diturunkan? Apakah ada yang salah?
Bugster
3
@ThePlan Orang cenderung mengunggah pertanyaan yang bukan tipe "Bagaimana cara mengatasi masalah khusus ini?"
CFL_Jeff
3
Meskipun orang mungkin downvote karena beberapa alasan dan tidak diharuskan untuk menjelaskan diri mereka sendiri, tooltip pada panah downvote berbunyi: "Pertanyaan ini tidak menunjukkan upaya penelitian; tidak jelas atau tidak berguna" - Saya pikir kalimat pertama sangat dekat dengan penjelasan yang cukup untuk downvote yang Anda terima, silakan lakukan setidaknya beberapa riset kecil sebelum bertanya pada Programmer.
yannis
9
Saya katakan memotongnya sedikit kendur. Sulit untuk meneliti pemrograman tertanam ketika Anda tidak tahu istilahnya.
Karl Bielefeldt

Jawaban:

15

Ini dikenal sebagai Sistem Tertanam atau Pengembangan Perangkat Lunak Tertanam. Saya akan merekomendasikan buku ini jika Anda ingin tahu lebih banyak tentang proses umum tanpa terlalu banyak ke arah arsitektur apa pun. Itu bahkan memberi Anda sistem operasi waktu nyata untuk bermain.

Pemrograman Tertanam sangat bergantung pada arsitektur. Anda biasanya bekerja di bawah respons serius, ukuran program, pemulihan kesalahan, dan kendala biaya. Misalnya Anda mungkin memiliki z80 (prosesor 8 bit, mereka ada di mana-mana) dan mungkin beberapa kilobyte memori untuk dimainkan. Anda mungkin hanya memiliki ROM untuk memberi tahu sistem apa yang harus dilakukan dan cara mengatur program. Mungkin juga hanya beberapa kilobyte. Mengapa begitu sedikit ingatan? Nah jika Anda memproduksi 15 juta pengisap kecil; setiap sen menjadi $ 150.000.

Saya akan menyarankan mengutak-atik sesuatu seperti Arduino atau Scribbler Robots jika Anda ingin belajar lebih banyak dengan melakukan. Sejauh Bahasa pergi, C, C ++ dan Majelis adalah himpunan khas meskipun Java dapat digunakan (dan sebenarnya awalnya dirancang untuk domain ini jika Anda dapat menerima pemikiran itu). Orang lain pasti bisa digunakan juga, saya sudah tahu Lisp dan ML keduanya dikerahkan.

Pelajari sebanyak mungkin tentang arsitektur karena seperti yang saya katakan, alokasi memori dan operasi bitwise mulai menjadi sangat penting.

Insinyur Dunia
sumber
Terima kasih, jawaban ini adalah pilihan saya untuk jawaban yang diterima karena menjelaskan sistem yang disematkan secara singkat dan juga memberi saya pilihan buku.
Bugster
4
@ThePlan - hal yang menyenangkan tentang embedded adalah Anda dapat mengujinya. Jika Anda hanya memiliki 3 input dan 3 output, cukup mudah untuk mengkonfirmasi apa yang berhasil. Anda tidak perlu menguji apa yang terjadi jika mereka menjalankan kode Anda di bawah bahasa Ibrani Windows XP pada keyboard Turki dengan Flash versi Uzbekistan.
Martin Beckett
@ MartinBeckett: Anda agak meremehkan kesulitan pengembangan sistem embedded. Yang terakhir memiliki persyaratan respons waktu nyata yang ditentukan dalam nano detik. Itu tidak dapat diuji - satu-satunya cara untuk mengetahui itu benar adalah untuk membuktikan bahwa kode itu benar oleh desain dan ulasan. Berbeda dengan koboi yang mengkode aplikasi pengguna hari ini, yang cacatnya diperbaiki oleh pembaruan online.
mattnz
Selain itu sistem ini mungkin diperlukan untuk beroperasi selama bertahun-tahun atau bahkan puluhan tahun tanpa akses manusia atau lainnya.
Insinyur Dunia
@ mattnz - tidak selalu mudah tetapi setidaknya bisa dilakukan. Dalam kode desktop koboi, di atas OS Anda tidak dapat menguji sepenuhnya, ditulis dengan toolkit yang tidak dapat Anda uji sepenuhnya dengan 1000s aplikasi lain yang berpotensi berinteraksi dengannya, ditambah tindakan acak dari pengguna - ini cukup sia-sia.
Martin Beckett
5

Jelas ada sudut yang tertanam di sini. Namun belakangan ini Anda melihat semakin banyak platform canggih tentang apa yang secara tradisional disebut perangkat tertanam. Misalnya, TV LG dan Samsung keduanya sekarang memiliki API dan toko aplikasi. TV Sony akan menjalankan Android.

Wyatt Barnett
sumber
3
... dan beberapa ATM menjalankan Windows. Ketika layar biru, gambar biasanya berakhir di thedailywtf.com . Dan di kota saya, angkutan umum setempat menjual tiket bulanan dari kios. Saya pernah melihat salah satu yang macet saat boot - itu menjalankan Windows 2000 (ini sekitar 6 bulan lalu)!
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner - terima kasih, jangan lakukan ATM di sini jadi saya tidak tahu apa yang mereka lakukan. . .
Wyatt Barnett
ATM = Mesin Teller Otomatis. Mesin AKA Bank. AKA Mesin yang memungkinkan Anda mengambil uang dari akun Anda alih-alih harus pergi ke kasir.
FrustratedWithFormsDesigner
Saya tahu itu, tapi jangan bekerja dengan mereka sebagai pelanggan. . .
Wyatt Barnett
4

Saya telah melihat dua ATM dibuka di Denver, Colorado. Keduanya (saat itu) adalah Kompas Bank ATM, dan keduanya adalah Windows XP di bawah kasing. Saya sempat bertanya kepada tech apa, khususnya, salah satu dari mereka berlari, dan dia mengatakan sesuatu seperti "XP Embedded".

Jadi, saya bertaruh pemrograman ATM kurang seperti pemrograman tertanam hari ini, dan lebih seperti pengembangan Windows standar.

Bruce Ediger
sumber
Bukan hanya "hari ini". ATM digunakan untuk menjalankan Windows NT 3, atau OS / 2. Dan UI yang Anda lihat kemungkinan besar adalah halaman HTML yang ditampilkan oleh Internet Explorer. Bahasa pemrograman bisa apa saja - Saya telah bekerja pada sistem Java yang menggantikan yang ditulis dalam VB. ATM sebenarnya hanyalah PC biasa dengan beberapa periferal dan driver yang tidak biasa.
Michael Borgwardt
3

Jenis perangkat ini diprogram menggunakan pemrograman tertanam . Ini adalah jenis pemrograman tingkat sangat rendah yang banyak berurusan dengan logika dan gerbang.

Jika Anda tertarik untuk belajar pemrograman langsung, saya akan merekomendasikan melihat arduino .

CFL_Jeff
sumber