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.
sumber
Jawaban:
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 chipreburn 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
sumber
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.
sumber
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.
sumber
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!
sumber
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
sumber
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.
sumber
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.
sumber
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.
sumber
Baru-baru ini saya menemukan mesin penjual rokok yang menjalankan Ubuntu (mesin itu me-reboot, jadi saya bisa melihat logo).
sumber
Lihatlah Majalah Sistem Tertanam dan Sirkuit Cellar
sumber
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 )
sumber
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.
sumber
Saya mendengar dari seorang insinyur bahwa Kereta Komuter Light-Rail Siemens beroperasi pada 386-an.
sumber