Bagaimana mesin sehari-hari diprogram?


147

Bagaimana mesin sehari-hari (bukan komputer dan perangkat seluler seperti peralatan, jam tangan digital, dll) diprogram? Kode apa yang digunakan untuk pemrograman mesin penjual otomatis Coca-Cola? Bagaimana pembuat kopi saya menerima waktu yang sudah diprogram dan mulai menyeduh kopi beberapa jam kemudian, ketika waktu itu tiba?

Apakah mesin jenis ini memiliki sistem operasi di dalamnya, atau apakah ini sesuatu yang lebih mendasar? Apakah mereka ditulis dalam bahasa Assembly, C, atau bahasa lainnya?

Dan, saya benar-benar ingin menemukan sumber daya yang mencantumkan sistem operasi ini atau sistem kode yang mendasarinya, bahkan mungkin dengan kode sumber jika memungkinkan. Jika ada yang tahu sumber daya seperti itu (pencarian tidak menghasilkan apa-apa untuk saya), itu akan fantastis.


12
Pertanyaan yang fantastis! Saya sendiri bertanya-tanya hal yang sama.
Jonathan Sterling

7
Lakukan pencarian / riset tentang "embedded system" (Saya bahkan menambahkan tag untuk Anda).
mu terlalu pendek

InRe the close vote: Saya tidak melihat ini sebagai bahan untuk Programmer karena ini tentang pemrograman . Di sisi lain itu mungkin baik di situs SE elektronik, sederhana karena akan ada lebih banyak spesialis. Jawabannya, tentu saja, adalah sebagian dari semua di atas. Anda harus memilih kelas yang lebih kecil sebelum mendapatkan satu jawaban.
dmckee --- ex-moderator kitten

Pertanyaannya yang sangat luas yang mencakup setidaknya 3 disiplin teknik dan banyak warna.
Jodrell

FWIW, Anda mungkin tertarik bermain dengan platform mikrokontroler seperti Arduino (~ $ 30) arduino.cc .
steamer25

Jawaban:


47

Sebagian besar yang Anda bicarakan adalah sistem berbasiskan di mana C adalah barang mewah sering tidak tersedia. Mereka tidak memiliki perangkat lunak dalam pengertian tradisional. Sebagian besar waktu perangkat lunak ditulis dalam C, assembly, atau bahkan kode mesin. C dan ASM mengharuskan kompiler ditulis untuk menggunakannya untuk platform itu. Kode mesin ditulis sebagai kompiler biner tanpa biner.

Teko kopi Anda dan sistem paling sederhana seperti itu tidak membawa sistem operasi. Mereka hanya memuat dari alamat awal dalam memori dan Anda memasukkan kode Anda di sana. Seringkali sistem ini memiliki "kode" mereka yang dibakar menjadi EEPROMS yang bertindak sebagai hard drive sistem. Kacau kode setelah membakar prom, membuang chip reburn kode pada chip, dan mulai lagi dari awal. Ada chip FPGA yang lebih baru yang digunakan perangkat kelas atas untuk membuat pengujian, penggunaan, dll lebih mudah, tetapi mereka adalah hal yang sama.

Mesin Coca-cola, router, dll. Biasanya menggunakan OS waktu nyata seperti QNX, EMBOS, atau terkadang RTlinux jika Anda beruntung. Sebagian besar adalah OS berpemilik yang Anda lisensikan untuk banyak uang, tetapi mereka memiliki kompiler C, driver untuk bekerja dengan perangkat keras, dll.

http://www.qnx.com/

http://www.segger.com/cms/embos.html

http://www.microsoft.com/windowsembedded/en-us/campaigns/compact7/default.aspx?WT.srch=1&WT.mc_ID=SEARCH

RTLinux


35
Orang mengkode dalam biner? Perakit begitu bodohnya begitu sederhana untuk menulis. Menurut saya itu sulit dipercaya. Apakah Anda punya sumber untuk ini? Juga, jawaban ini memberikan kesan yang salah bahwa semua sistem mengandung mikroprosesor yang menjalankan kode. Meskipun ini menjadi lebih populer sebagai mikrokontroler dan EEPROM (yang membuat debugging dan peningkatan lebih mudah) menjadi lebih murah, itu masih tidak sepadan dengan sistem yang sangat murah, atau sistem yang tidak banyak berubah selama 20 tahun terakhir. Misalnya, beberapa jam tangan digital.
BlueRaja - Danny Pflughoeft

6
Ini terlalu kuat dinyatakan. Anda tidak perlu meng-host kompiler pada target. Cross-compiler sangat umum dalam pemrograman tertanam.
dmckee --- ex-moderator kitten

12
Mesin coke yang menjalankan QNX? WTF - itu jenis kokas lain! Dan ya, ada kompiler C untuk setiap platform tunggal saat ini pengiriman dalam volume. Tidak ada yang mau menulis perakitan, kekurangan C akan menjadi cacat besar. (Beberapa kompiler tidak begitu bagus , diberikan.)
Potatoswatter

8
Juga, EEPROM menurut definisi dapat ditulis ulang 100000+ kali. Ingatan menulis-sekali sudah usang; semua mikrokontroler populer saat ini memiliki Flash. FPGA adalah pasar yang sama sekali berbeda dari MCU kelas bawah ... Anda tidak tahu apa yang Anda bicarakan.
Potatoswatter

7
Saya punya teman yang bekerja di mesin penjual otomatis yang cukup kompleks. Mereka memiliki radio seluler, memantau inventaris, melacak suhu, melaporkan angka-angka keuangan, dan mengirim kembali panggilan HTTP ke server untuk menggabungkan semua data ini sehingga Anda dapat melacak di semua mesin Anda. Dan ya merek-merek mesin ini menggunakan OS Tertanam. Saya pikir mereka menggunakan RTLinux menggunakan C. Jadi ya bahkan mesin penjual rendahan menjadi cukup kompleks untuk menjamin OS yang tertanam.
chubbsondubs

29

Mereka menggunakan mikrokontroler, 8051 adalah yang klasik. Ini adalah inti 8-bit atau 16-bit, mereka jarang memiliki sistem operasi. Programmer menulis kode untuk menginisialisasi periferal onboard dan mengimplementasikan interrupt handler. Bahasa yang digunakan adalah assembly dan C. Pekerjaan debugging yang sulit membutuhkan emulator di dalam sirkuit.

Ada banyak ruang yang berkembang di luar ini, dengan 32-bit core yang tertanam (ARM adalah gorila 100 pon) yang mem-boot versi Linux yang tertanam dan / atau Java JVM.


5
Itu gorila yang agak kecil, tapi saya kira kendala daya agak penting dengan kera besar yang disematkan;)
Piskvor meninggalkan gedung

Terima kasih! Jawaban Anda bermanfaat bagi saya dan saya memberi Anda upvote.
Josh Leitzel

Chip ARM juga memasuki low end ... dengan harga <1USD, tapak 2x2mm.
domen

24

Ini adalah sistem tertanam , dan akan diprogram menggunakan bahasa tingkat sangat rendah seperti C atau rakitan. Secara umum sistem seperti itu akan berjalan tanpa sistem operasi, meskipun beberapa "mesin sehari-hari" yang lebih baru seperti pemutar DVD dan router nirkabel menjalankan kode mereka di atas sistem operasi berbasis unix.


Memperbarui

Sejalan dengan apa yang dikatakan orang lain, banyak sistem embedded modern juga menjalankan citarasa windows. Itu tergantung pada aplikasi. Juga, ada tren di banyak ruang untuk berjalan pada platform yang lebih kuat dengan sistem operasi, untuk menangani kasus-kasus seperti pemain Blue-ray yang perlu menjalankan Java, dan contoh lain di mana pengguna akhir menginginkan lebih banyak fungsi.


Untuk memperjelas, Bluray menggunakan Java.
Andrew Marshall

6
Mungkin, tetapi pemain yang sebenarnya menjalankan Linux dan ditulis dalam C / C ++
Justin Ethier

Mesin kasir dan pompa bensin dan sejenisnya sedang beroperasi dos (beberapa merek), sayangnya beberapa dari mereka menjalankan windows sekarang (toko kelontong atau jalur checkout diri lainnya). Keinginan untuk memiliki acara tv menggelegar pada Anda saat Anda memompa gas Anda, dan menari omong kosong di layar ketika tidak, telah menyebabkan lebih banyak tenaga kuda. Demikian juga mesin kokas dan air dengan grabber dua sumbu.
old_timer

@ Justin, ya tentu saja, Java perlu duduk di atas sesuatu agar berfungsi. Maksud saya adalah bahwa ia menggunakan bahasa tingkat tinggi (komparatif) seperti Jawa.
Andrew Marshall

@ Andrew: Dan pada sistem operasi apa Java interpreter berjalan di blue ray? Dan dalam bahasa apa sistem operasi itu ditulis?
Gunther Piez

18

Mari kita pikirkan tentang prosesor di desktop Anda. Yang dilakukannya hanyalah menjalankan instruksi mesin, dan dengan sendirinya, tidak benar-benar peduli tentang "sistem operasi" atau "program".

Anda menyalakan komputer Anda, prosesor menunjuk ke instruksi pertama, dan itu mulai dijalankan.

Di desktop Anda, ia mulai menjalankan "sistem operasi". Tetapi tidak ada alasan bahwa Anda tidak dapat membuat prosesor menjalankan set instruksi yang Anda pilih. (Ini mungkin tidak terlalu berguna, karena Anda masih ingin menampilkan hasil ke layar, dan fungsi itu berada di OS.) Pada saat yang sama, jika instruksi mesin Anda terdiri dari opcode yang tepat sehingga prosesor akan menampilkan urutan sinyal yang benar untuk melukis gambar di monitor, semakin baik. Tidak diperlukan OS.

Desktop melakukan begitu banyak hal yang biasanya membutuhkan abstraksi dari OS. Tetapi pada intinya, semua prosesor lakukan adalah menjalankan instruksi.

Sama untuk prosesor di mesin Coke dan mesin Kopi. Yang dilakukannya hanyalah menjalankan instruksi.

Nah, menulis instruksi mesin sedikit demi sedikit itu membosankan. Jadi, seperti halnya dengan desktop, kami biasanya menulis kode dalam C, yang kemudian dikompilasi ke dalam kode mesin. Kode mesin itu dimuat ke prosesor tertanam dan itu berjalan.

Sistem tertanam hanya melakukan sedikit hal sehingga tidak perlu OS penuh. Sebuah mikrokontroler mungkin memiliki 8 atau 16 pin pada chip - dibandingkan dengan skor pin pada soket CPU biasa Anda.

Jadi alur kerjanya adalah menulis beberapa kode (misalnya, dalam C), kompilasi pada mesin desktop Anda. Kompiler itu menghasilkan kode mesin untuk chip yang tertanam. Kemudian kode itu dimuat ke mikroprosesor (dan Anda memerlukan perangkat keras khusus untuk melakukan ini.) Kemudian Anda menyalakan chip dan mulai menjalankan instruksi. Sederhana!


2
Terima kasih banyak! Jika saya bisa memilih jawaban terbaik lain, itu akan menjadi milik Anda. Saya merasa sangat berguna. +1
Josh Leitzel

Prosesor modern secara mengejutkan sangat memperhatikan sistem operasi. Mereka menyediakan fitur seperti Memory Management Units , instruksi dan mode istimewa dan virtualisasi perangkat keras . Sistem operasi modern bergantung pada beberapa fitur ini. Itulah alasan mengapa Anda tidak dapat ( dengan mudah ) menjalankan linux pada mikrokontroler kecil.
Mira Weller

12

Banyak perangkat yang melakukan fungsi tertentu tidak mengandung "kode" apa pun. Mereka melakukan fungsinya melalui properti komponen elektronik mereka. Sistem yang lebih maju, yang dapat melakukan banyak fungsi yang berbeda atau perlu mudah diupgrade, akan berisi mikrokontroler dan semacam "sistem operasi". Karena ini masih memiliki beberapa batasan untuk fungsionalitasnya, sistem operasi akan sederhana dan dirancang khusus. Semakin maju, perangkat akan berisi sesuatu yang mirip dengan komputer. Ini akan memiliki sistem operasi yang lebih rumit yang dapat berkomunikasi dengan berbagai bagian sistem. Akhirnya, Anda menjangkau perangkat seperti ponsel pintar, yang berisi sistem operasi penuh yang dapat menjalankan kode tingkat pengguna dan memiliki input pengguna lebih banyak daripada perangkat yang lebih sederhana. Namun, bahkan prosesor modern pada dasarnya adalah rangkaian listrik yang sangat besar. Setiap instruksi yang dikenali oleh CPU akan menyebabkan rangkaian yang berbeda digunakan untuk menjalankan fungsi itu.

Berikut ini beberapa halaman Wikipedia yang mungkin menarik bagi Anda:

http://en.wikipedia.org/wiki/Electrical_engineering
http://en.wikipedia.org/wiki/Integrated_circuits
http://en.wikipedia.org/wiki/Electronic_engineering
http://en.wikipedia.org/wiki / Computer_engineering
http://en.wikipedia.org/wiki/Microcontroller


Ini salah. Faktor utama dalam biaya chip berbiaya rendah adalah paket yang membawa silikon. Untuk alasan ini, lebih murah untuk mengganti logika diskrit dengan mikrokontroler begitu Anda mencapai beberapa lusin gerbang ... dan selusin gerbang tidak berbuat banyak. MCU ubiquity telah menaikkan biaya gerbang diskrit, mengubah keseimbangan. Juga, sebagian besar MCU kelas bawah tidak menjalankan sistem operasi apa pun.
Potatoswatter

7

Itu pertanyaan yang sangat luas dan itu sangat tergantung pada mesin. Saya hanya bisa menebak bahwa sebagian besar mesin penjual otomatis ini dikendalikan oleh mikrokontroler (8051, PIC, ARM7, untuk beberapa nama yang paling sering digunakan) dan jarang memiliki OS dan jika ada, itu akan menjadi semacam RTOS, seperti FreeRTOS .

Mesin yang lebih kompleks, seperti pemutar DVD / BluRay atau ponsel berjalan di atas platform yang canggih, seperti OMAP4 . Biasanya OS Unix berjalan pada mereka.


Terima kasih atas jawaban Anda! +1
Josh Leitzel

7

Mikrokontroler low-end yang ditemukan dalam peralatan sehari-hari biasanya tidak menjalankan sistem operasi. Mereka dipilih untuk biaya rendah, dan faktor utama yang mendorong biaya adalah jumlah pin pada chip (dari selusin menjadi beberapa ratus) dan jumlah memori di dalam (dari beberapa kilobyte ke ROM megabyte, dari beberapa byte hingga seratus kilobyte RAM).

Ketika fitur creep bekerja dengan sangat baik, sebuah microwave mungkin perlu melakukan multitask. Dalam hal ini, programmer mengingat kursus sistem operasi mereka dan mengimplementasikan penyampaian pesan, penjadwalan tugas, I / O asinkron, dll jika diperlukan!

Tentu saja, demi kenyamanan, kesederhanaan, ukuran kode, dll, fitur cenderung dilakukan dengan cara yang belum sempurna. Seringkali tergantung bagaimana Anda menganalisis program, untuk menemukan fungsionalitas OS umum dalam kode spesifik tugas. Tapi itu masih jauh dari penjadwal tugas yang sulit dikodekan ke sistem operasi, dan ketika Anda hanya memiliki beberapa kilobyte untuk bekerja dengannya, OS yang tidak tersedia bukanlah solusi.

Lihatlah DigiKey, situs pemilihan suku cadang elektronik yang populer, untuk mempelajari tentang MCU kelas bawah. Ini adalah info mereka tentang MCU yang sangat murah dengan pengontrol LCD, seperti yang dapat ditemukan di mesin kopi. Cukup mudah untuk mendapatkan manual pemrograman dan segalanya.


5

Tugas sistem operasi adalah menyediakan akses bersama ke sumber daya - waktu eksekusi CPU, RAM, I / O dll. Sistem tertanam berbasis mikrokontroler yang paling sederhana hanya memiliki satu program yang berjalan pada satu waktu, dan mereka mengakses (dan mengelola) sumber daya ini sendiri , karenanya mereka tidak memerlukan sistem operasi.

Sistem tertanam biasanya diprogram dalam C, dan kadang-kadang dalam perakitan untuk pengaturan waktu ekstrim atau memori. Beberapa kompiler tertanam memungkinkan Anda untuk menyelingi unit dalam bahasa tingkat yang lebih tinggi.


4

Baru-baru ini saya menemukan mesin penjual rokok yang menjalankan Ubuntu (mesin itu me-reboot, jadi saya bisa melihat logo).



1

Jika Anda mencari informasi umum di Google, cari hal-hal seperti "embedded system", "soc" (system-on-a-chip). Saya akan mengatakan sebagian besar dari jenis perangkat ini berjalan dalam bahasa tingkat rendah, seperti C.

Fakta menyenangkan: Java pada awalnya dipahami sebagai solusi untuk pemrograman sistem tertanam: http://en.wikipedia.org/wiki/Oak_(programming_language )


Terima kasih, saya pasti akan meneliti lebih lanjut! +1
Josh Leitzel

1

Kebanyakan Kios, register, layar drive-thru, dan bahkan mesin kopi kelas atas dan gelombang mikro benar-benar menjalankan Windows XP atau Linux, seperti mesin seri "Jura Impressa"; Anda dapat SSH ke dalamnya dan menyeduh kopi.

Berikut skrip github dari pekerjaan cron mesin kopi: https://github.com/NARKOZ/hacker-scripts/blob/master/fucking_coffee.rb

Kebanyakan Router, oven baru, lemari es baru, mobil, pemutar DVD, berbagai elektronik, produk otomasi rumah baru termasuk bola lampu, menjalankan versi ARM linux atau Linux tertanam.

Sebagian besar perangkat yang lebih murah, di bawah $ 20, jika lebih baru, berjalan pada ESP8266 atau perangkat serupa (dapat menjalankan LUA atau server Node yang dikurangi sebesar $ 2 dalam jumlah besar - sangat murah)

http://nodemcu.com/index_en.html

Menggunakan FPGA dan sistem tertanam seperti 8051, Z80 atau perangkat tertanam lainnya seperti PICC, AVR dan Arduino akan segera diganti oleh sistem all-in-one / SoC (System on Chip) seperti ESP8266. Mereka terlalu mudah diprogram, dan merupakan sistem lengkap pada chip yang menjalankan server web mereka sendiri; Anda cukup menyalakannya, unggah kode sumber Anda dan Anda memiliki server jaringan seharga $ 2.

Saya tumbuh dengan mengkode PICC dan AVR dan 8051, dan saya sedih melihat mereka pergi, tapi saya belum menyentuh apa pun selain ESP8266es selama bertahun-tahun karena harganya 1/10 harga dan urutan besarnya lebih mudah untuk bekerja dengan . Anda bisa mendapatkannya di papan pengembangan dengan paket baterai dan tata letak pin meledak seharga $ 5 di ebay atau $ 10 pada adafruit.


-2

Saya mendengar dari seorang insinyur bahwa Kereta Komuter Light-Rail Siemens beroperasi pada 386-an.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.