Wie ist Software für Automaten wie Geldautomaten oder Fernseher aufgebaut?

14

Als Anfänger-Programmierer habe ich nur mit der Programmierung von Computer-basierten Anwendungen gearbeitet, aber seit ich mit der Programmierung angefangen habe, ist mir sehr oft eine Frage in den Sinn gekommen, die ich nicht richtig beantworten kann.

Maschinen handeln nicht von selbst, das ist die Aufgabe des Programmierers, er sagt, was zu tun ist und wann, aber meine Neugier liegt unter Computern. Ich werde die Beispiele einer ATM-Software in diesem Beitrag betrachten, aber denken Sie daran, dass es viele andere gibt, wie zum Beispiel ein Waschmaschinendisplay oder einen Fernseher, ein Mobiltelefon, wie Sie es nennen.

Wie genau ist die Software für diese Art von Maschinen aufgebaut? Ich stelle mir vor, es kann nicht mit computergestützter Programmierung identisch sein. Welche Sprache benutzen sie, um solche Dinge zum Laufen zu bringen und wie kann man die Arbeit erledigen? Gibt es Programmierer, die auf diese Art der Programmierung spezialisiert sind? Wie werden diese Maschinen zum Leben erweckt?

Bugster
quelle
Vielen Dank für den Link. Ich hatte keine Ahnung, bis ich Ihren Link gefunden habe. Auch warum wurde das abgelehnt? Was stimmt damit nicht?
Bugster
3
@ThePlan Leute neigen dazu, Fragen abzulehnen, die nicht vom Typ "Wie löse ich dieses bestimmte Problem?" Sind.
CFL_Jeff
3
Obwohl die Leute aus verschiedenen Gründen abstimmen können und sich nicht erklären müssen, lautet der Tooltip auf dem Abstimmungspfeil: "Diese Frage zeigt keinen Forschungsaufwand; es ist unklar oder nicht nützlich" - ich denke, der erste Satz ist sehr nahe dran Um eine ausreichende Erklärung für die erhaltene Ablehnung zu erhalten, führen Sie bitte mindestens einige kleinere Nachforschungen durch, bevor Sie sich an Programmierer wenden .
Yannis
9
Ich sage, schneiden Sie ihn ein wenig locker. Es ist schwierig, Embedded-Programmierung zu erforschen, wenn Sie den Begriff nicht kennen.
Karl Bielefeldt

Antworten:

15

Es ist bekannt als Embedded Systems oder Embedded Software Development. Ich würde dieses Buch empfehlen, wenn Sie mehr über den allgemeinen Prozess erfahren möchten, ohne sich zu sehr einer Architektur zuzuwenden. Es gibt Ihnen sogar ein Echtzeit-Betriebssystem, mit dem Sie spielen können.

Embedded Programming ist sehr architekturabhängig. Sie arbeiten normalerweise unter schwerwiegenden Einschränkungen hinsichtlich Reaktion, Programmgröße, Fehlerbehebung und Kosten. Zum Beispiel könnten Sie einen z80 (8-Bit-Prozessor, die sind überall) und vielleicht ein paar Kilobyte Speicher zum Spielen haben. Möglicherweise verfügen Sie nur über ein ROM, das dem System mitteilt, was zu tun ist und wie das Programm einzurichten ist. Es könnte auch nur ein paar Kilobyte groß sein. Warum so wenig Gedächtnis? Na wenn du 15 Millionen der kleinen Saugnäpfe herstellst; Jeder Cent wird zu 150.000 Dollar.

Ich würde vorschlagen, mit etwas wie Arduino oder Scribbler Robots zu experimentieren, wenn Sie mehr lernen möchten. Was die Sprachen angeht, sind C, C ++ und Assembly das typische Set, obwohl Java verwendet werden kann (und tatsächlich ursprünglich für diese Domäne entwickelt wurde, wenn Sie diesen Gedanken ertragen können). Andere könnten definitiv auch verwendet werden, von denen ich wusste Lisp und ML werden beide eingesetzt.

Lernen Sie so viel wie möglich über Architektur, denn wie ich bereits sagte, werden Speicherzuweisung und bitweise Operationen immer wichtiger.

Weltingenieur
quelle
Danke, diese Antwort ist meine Wahl einer akzeptierten Antwort, da sie die eingebetteten Systeme auf den Punkt bringt und mir auch eine Buchoption gibt.
Bugster
4
@ThePlan - das Schöne an embedded ist, dass man sie testen kann. Wenn Sie nur 3 Ein- und 3 Ausgänge haben, ist es ziemlich einfach zu überprüfen, was funktioniert. Sie müssen nicht testen, was passiert, wenn Ihr Code unter hebräischem Windows XP auf einer türkischen Tastatur mit einer usbekischen Flash-Version ausgeführt wird.
Martin Beckett
@MartinBeckett: Sie haben die Schwierigkeit der Entwicklung eingebetteter Systeme ein wenig verharmlost. Der letzte hatte eine Echtzeit-Antwortanforderung, die in Nanosekunden gemessen wurde. Es war nicht testbar - der einzige Weg, um zu wissen, dass es korrekt war, bestand darin, zu beweisen, dass der Code durch Design und Überprüfung korrekt war. Im Gegensatz zu den Cowboys, die Benutzeranwendungen heutzutage codieren und deren Fehler durch ein Online-Update behoben werden.
Mattnz
Darüber hinaus müssen diese Systeme möglicherweise jahrelang oder sogar jahrzehntelang ohne menschlichen oder sonstigen Zugang arbeiten.
Weltingenieur
@mattnz - es ist nicht immer einfach, aber es ist zumindest machbar. Im Cowboy-Desktop-Code können Sie zusätzlich zu einem Betriebssystem, das Sie nicht vollständig testen können, ein Toolkit verwenden, das Sie nicht vollständig mit Tausenden anderer Apps testen können, die möglicherweise damit interagieren.
Martin Beckett
5

Hier gibt es definitiv einen eingebetteten Winkel. Heutzutage sehen Sie jedoch immer fortgeschrittenere Plattformen für sogenannte eingebettete Geräte. Zum Beispiel haben LG- und Samsung-Fernseher jetzt APIs und App Stores. Auf Sony-Fernsehgeräten wird Android ausgeführt.

Wyatt Barnett
quelle
3
... und einige Geldautomaten laufen unter Windows. Wenn sie einen Bluescreen haben, landen die Bilder normalerweise auf thedailywtf.com . Und in meiner Stadt verkauft der öffentliche Nahverkehr monatliche Pässe an Kiosken. Ich habe mal einen gesehen, der beim Booten hängen geblieben ist - es lief unter Windows 2000 (das war vor ungefähr 6 Monaten)!
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner - danke, mache hier keine Geldautomaten, deshalb weiß ich nicht, was sie tun. . .
Wyatt Barnett
ATM = Geldautomat. AKA Bank Machine. AKA Der Automat, mit dem Sie Geld von Ihrem Konto abheben können, anstatt zu einem Kassierer gehen zu müssen.
FrustratedWithFormsDesigner
Ich weiß, dass ich mit ihnen nur als Kunde zusammenarbeite. . .
Wyatt Barnett
4

Ich habe gesehen, wie in Denver, Colorado, zwei Geldautomaten eröffnet wurden. Beide waren (damals) Geldautomaten der Compass Bank, und beide waren Windows XP unter dem abgehärteten Fall. Ich durfte den Techniker fragen, was genau einer von ihnen lief, und er sagte etwas wie "XP Embedded".

Ich wette, ATM-Programmierung ist heutzutage weniger wie Embedded-Programmierung, sondern eher wie Standard-Windows-Entwicklung.

Bruce Ediger
quelle
Nicht nur "in diesen Tagen". Geldautomaten, auf denen Windows NT 3 oder OS / 2 ausgeführt wird. Bei der angezeigten Benutzeroberfläche handelt es sich wahrscheinlich um HTML-Seiten, die von Internet Explorer angezeigt werden. Die Programmiersprache kann alles sein - ich habe an einem Java-System gearbeitet, das ein in VB geschriebenes ersetzt hat. Geldautomaten sind eigentlich nur normale PCs mit ungewöhnlichen Peripheriegeräten und Treibern.
Michael Borgwardt