ATM veya TV gibi makineler için yazılım nasıl oluşturulur?


14

Yeni başlayan bir programcı olarak sadece bilgisayar tabanlı uygulamaların programlanmasıyla çalıştım, ancak programlamaya başladığımdan beri sık sık bir soru aklıma geliyor ve düzgün cevap alamıyorum.

Makineler kendi başlarına hareket etmezler, programcının işi budur, ne yapacağını ve ne zaman yapılacağını söyler, ama merakım bilgisayarların altında yatıyor. Bu yazıdaki bir ATM yazılımı örneklerini alacağım, ancak bir çamaşır makinesi ekranı veya TV, cep telefonu gibi başka pek çok şey olduğunu unutmayın.

Bu tür makineler için yazılım tam olarak nasıl üretilir? Bilgisayar tabanlı programlama ile aynı olamayacağını düşünüyorum. Bu tür şeyleri işler hale getirmek için hangi dili kullanıyorlar ve iş nasıl yapılır? Bu tür programlama konusunda uzmanlaşmış programcılar var mı? Bu makineleri hayata geçirme süreci nedir?



Bağlantı için teşekkürler. Bağlantınızı bulana kadar bununla ilgili hiçbir fikrim yoktu. Ayrıca bu neden düşürüldü? Bunun nesi var?
Bugster

3
@ThePlan İnsanlar "Bu sorunu nasıl çözerim?" Türünde olmayan soruları küçümseme eğilimindedir.
CFL_Jeff

3
İnsanlar çeşitli nedenlerle downvote edebilir ve rağmen değil "Bu soru, herhangi bir araştırma çaba göstermek değildir, kullanışlı belirsiz veya değil" - Önce cümle çok yakın olduğunu düşünüyorum: Kendilerini açıklamak için gerekli downvote oku ipucu okur Aldığınız downvote için yeterli bir açıklama, lütfen Programcılara sormadan önce en azından biraz küçük araştırma yapın .
yannis

9
Onu biraz gevşetiyorum diyorum. Terim bilmiyorsanız gömülü programlamayı araştırmak zordur.
Karl Bielefeldt

Yanıtlar:


15

Gömülü Sistemler veya Gömülü Yazılım Geliştirme olarak bilinir. Herhangi bir mimariye çok fazla gitmeden genel süreç hakkında daha fazla bilgi edinmek istiyorsanız bu kitabı tavsiye ederim . Hatta oynamak için gerçek zamanlı bir işletim sistemi bile verir.

Gömülü Programlama mimariye bağımlıdır. Genellikle ciddi yanıt, program boyutu, hata giderme ve maliyet kısıtlamaları altında çalışıyorsunuz. Örneğin, bir z80 (8 bit işlemciniz, her yerdeler) ve belki de oynamak için birkaç kilobayt belleğiniz olabilir. Sisteme yalnızca ne yapacağını ve programı nasıl ayarlayacağını söyleyen bir ROM'unuz olabilir. Ayrıca sadece birkaç kilobayt boyutunda olabilir. Neden bu kadar az hafıza? Peki, 15 milyon küçük emici ürettiyseniz; her kuruş 150.000 dolar olur.

Yaparak daha fazla bilgi edinmek isterseniz Arduino veya Scribbler Robots gibi bir şeyle uğraşmayı öneririm. Diller gelince, C, C ++ ve Assembly, Java'nın kullanılabilmesine rağmen tipik bir settir (ve aslında bu etki alanı için düşünülmüş bir mide varsa, bu alan için tasarlandı) Diğerleri de kesinlikle kullanılabilir, Lisp ve ML'nin ikisi de konuşlandırılıyor.

Söylediğim gibi, bellek ayırma ve bitsel işlemler gerçekten önemli olmaya başlıyor çünkü mimari hakkında da olabildiğince çok şey öğrenin.


Teşekkürler, bu cevap kabul edilmiş bir cevap seçimimdir çünkü gömülü sistemleri kısaca açıklar ve ayrıca bana bir kitap seçeneği sunar.
Bugster

4
@ThePlan - gömülü hakkında güzel bir şey onları test edebilirsiniz olmasıdır. Yalnızca 3 girişiniz ve 3 çıkışınız varsa, neyin işe yaradığını doğrulamak oldukça kolaydır. Kodunuzu İbranice Windows XP altında, Özbekistan'ın Flash sürümüne sahip bir Türkçe klavyede çalıştırırlarsa ne olacağını test etmeniz gerekmez.
Martin Beckett

@MartinBeckett: Gömülü sistem geliştirme zorluğunu biraz önemsizleştirdiniz. Sonuncusu, nano saniye cinsinden gerçek zamanlı yanıt gereksinimine sahipti. Test edilemezdi - doğru olduğunu bilmenin tek yolu, kodun tasarım ve gözden geçirme ile doğru olduğunu kanıtlamaktı. Bugünlerde kullanıcı uygulamalarını kodlayan, kusurları çevrimiçi bir güncelleme ile düzeltilen kovboyların aksine.
mattnz

Ayrıca, bu sistemlerin insan veya başka bir erişim olmadan yıllar hatta on yıllar boyunca çalışması gerekebilir.
Dünya Mühendisi

@mattnz - her zaman kolay değil ama en azından mümkün. Kovboy masaüstü kodunda, bir işletim sisteminin üstünde, tam olarak test edemezsiniz, bir araç kiti ile yazılmış, potansiyel olarak etkileşime giren 1000'lerce uygulama ile artı kullanıcıların rastgele eylemleriyle tam olarak test edemezsiniz - oldukça umutsuz.
Martin Beckett

5

Burada kesinlikle gömülü bir açı var. Ancak bu günlerde, geleneksel olarak yerleşik cihazlar olarak adlandırılacak olan platformda giderek daha gelişmiş platformlar görüyorsunuz. Örneğin, LG ve Samsung TV'lerde artık API'lar ve uygulama mağazaları var. Sony TV'ler Android çalıştıracak.


3
... ve bazı ATM'ler Windows kullanıyor. Mavi ekran olduklarında, resimler genellikle thedailywtf.com'da bulunur . Ve benim şehrimde, yerel toplu taşıma kiosklardan aylık geçişler satıyor. Bir keresinde önyükleme yapan bir tane gördüm - Windows 2000 çalıştırıyordu (bu yaklaşık 6 ay önceydi)!
Hayal kırıklığına

@FrustratedWithFormsDesigner - teşekkürler, burada ATM yapma, bu yüzden ne yaptıklarının farkında değilim. . .
Wyatt Barnett

ATM = Otomatik Vezne Makinesi. AKA Bank Makinası. AKA Vezneye gitmek yerine hesabınızdan para çekmenizi sağlayan makine.
Hayal kırıklığına

Biliyorum, onlarla müşteriden başka bir şey olarak çalışma. . .
Wyatt Barnett

4

Denver, Colorado'da iki ATM açıldığını gördüm. Her ikisi de (sonra) Pusula Bankası ATM'leri ve her ikisi de sertleştirilmiş durumda Windows XP idi. Teknolojiye, özellikle bunlardan birinin kaçtığını sordum ve "XP Embedded" gibi bir şey söyledi.

Yani, ATM programlama bugünlerde gömülü programlama daha az standart Windows geliştirme gibi.


Sadece "bugünlerde" değil. Windows NT 3 veya OS / 2'yi çalıştırmak için kullanılan ATM'ler. Gördüğünüz kullanıcı arayüzü büyük olasılıkla Internet Explorer tarafından görüntülenen HTML sayfalarıdır. Programlama dili herhangi bir şey olabilir - VB'de yazılanın yerini alan bir Java sistemi üzerinde çalıştım. ATM'ler, bazı alışılmadık çevre birimleri ve sürücülere sahip normal PC'lerdir.
Michael Borgwardt

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.