Comment sont construits les logiciels pour les machines telles que les distributeurs automatiques de billets ou les téléviseurs?

14

En tant que programmeur débutant, je n'ai travaillé qu'avec la programmation d'applications informatiques, mais une question me vient très souvent à l'esprit depuis que j'ai commencé à programmer et je ne peux pas y répondre correctement.

Les machines n'agissent pas seules, c'est le travail du programmeur, il lui dit quoi faire et quand le faire, mais ma curiosité réside sous les ordinateurs. Je vais prendre les exemples d'un logiciel ATM sur ce post, mais gardez à l'esprit qu'il existe de nombreux autres tels qu'un écran de machine à laver, ou un téléviseur, un téléphone mobile, vous l'appelez.

Comment est exactement construit le logiciel pour ce type de machines? J'imagine que cela ne peut pas être identique à une programmation informatique. Quelle langue utilisent-ils pour faire fonctionner de telles choses et comment peut-on faire le travail? Existe-t-il des programmeurs spécialisés dans ce type de programmation? Quel est le processus pour donner vie à ces machines?

Bugster
la source
Merci pour le lien. Je n'en avais aucune idée jusqu'à ce que je trouve votre lien. Aussi pourquoi cela a-t-il été rejeté? Qu'est ce qui ne va pas avec ça?
Bugster
3
@ThePlan Les gens ont tendance à voter contre les questions qui ne sont pas du type "Comment résoudre ce problème particulier?"
CFL_Jeff
3
Bien que les gens puissent voter pour plusieurs raisons et ne soient pas tenus de s'expliquer, l'info-bulle sur la flèche vers le bas indique: "Cette question ne montre aucun effort de recherche; elle n'est pas claire ou n'est pas utile" - je pense que la première phrase est très proche de une explication suffisante pour le downvote que vous avez reçu, veuillez faire au moins quelques recherches mineures avant de demander aux programmeurs.
yannis
9
Je dis lui couper un peu de mou. Il est difficile de rechercher une programmation intégrée lorsque vous ne connaissez pas le terme.
Karl Bielefeldt

Réponses:

15

Il est connu sous le nom de systèmes intégrés ou de développement de logiciels intégrés. Je recommanderais ce livre si vous voulez en savoir plus sur le processus général sans trop vous orienter vers une architecture. Il vous donne même un système d'exploitation en temps réel avec lequel jouer.

La programmation intégrée est très dépendante de l'architecture. Vous travaillez généralement sous des contraintes de réponse, de taille de programme, de récupération d'erreurs et de coût importantes. Par exemple, vous pourriez avoir un z80 (processeur 8 bits, ils sont partout) et peut-être quelques kilo-octets de mémoire pour jouer avec. Il se peut que vous n'ayez qu'une ROM pour indiquer au système quoi faire et comment configurer le programme. Il peut également n'être que de quelques kilo-octets. Pourquoi si peu de mémoire? Eh bien, si vous fabriquez 15 millions de petits drageons; chaque centime devient 150 000 $.

Je suggère de jouer avec quelque chose comme Arduino ou Scribbler Robots si vous voulez en savoir plus en faisant. En ce qui concerne les langages, C, C ++ et Assembly sont l'ensemble typique bien que Java puisse être utilisé (et a été en fait conçu à l'origine pour ce domaine si vous pouvez le penser). D'autres pourraient certainement être utilisés également, j'ai connu Lisp et ML sont tous deux déployés.

Apprenez autant que possible sur l'architecture car, comme je l'ai dit, l'allocation de mémoire et les opérations au niveau du bit deviennent très importantes.

Ingénieur du monde
la source
Merci, cette réponse est mon choix d'une réponse acceptée car elle explique les systèmes embarqués en bref et me donne également une option livre.
Bugster
4
@ThePlan - la bonne chose à propos de l'embarqué est que vous pouvez les tester. Si vous n'avez que 3 entrées et 3 sorties, il est assez facile de confirmer ce qui fonctionne. Vous n'avez pas à tester ce qui se passe s'ils exécutent votre code sous l'hébreu Windows XP sur un clavier turc avec une version ouzbèke de Flash.
Martin Beckett
@MartinBeckett: Vous avez quelque peu banalisé la difficulté du développement de systèmes embarqués. Le dernier avait une exigence de réponse en temps réel signifiée en nano secondes. Ce n'était pas testable - la seule façon de savoir qu'il était correct était de prouver que le code était correct par conception et examen. Contrairement aux cowboys qui codent les applications utilisateur ces jours-ci, dont les défauts sont corrigés par une mise à jour en ligne.
mattnz
De plus, ces systèmes peuvent devoir fonctionner pendant des années, voire des décennies, sans accès humain ou autre.
World Engineer
@mattnz - ce n'est pas toujours facile mais c'est au moins faisable. Dans le code de bureau cowboy, au-dessus d'un système d'exploitation que vous ne pouvez pas entièrement tester, écrit avec une boîte à outils, vous ne pouvez pas tester complètement avec des milliers d'autres applications susceptibles d'interagir avec lui, ainsi que des actions aléatoires des utilisateurs - c'est à peu près sans espoir.
Martin Beckett
5

Il y a certainement un angle intégré ici. Mais ces jours-ci, vous voyez de plus en plus de plates-formes avancées sur ce que l'on appelle traditionnellement des appareils intégrés. Par exemple, les téléviseurs LG et Samsung ont désormais tous deux des API et des magasins d'applications. Les téléviseurs Sony utiliseront Android.

Wyatt Barnett
la source
3
... et certains distributeurs automatiques de billets exécutent Windows. Lorsqu'elles apparaissent sur écran bleu, les images finissent généralement sur thedailywtf.com . Et dans ma ville, le transport en commun local vend des laissez-passer mensuels dans les kiosques. J'en ai vu une qui s'est bloquée au démarrage - elle fonctionnait sous Windows 2000 (c'était il y a environ 6 mois)!
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner - merci, ne faites pas de guichets automatiques ici, donc je ne sais pas ce qu'ils font. . .
Wyatt Barnett
ATM = Guichet automatique. AKA Bank Machine. AKA La machine qui vous permet de retirer de l'argent de votre compte au lieu de devoir vous rendre chez un caissier.
FrustratedWithFormsDesigner
Je le sais, ne travaillez pas avec eux comme autre chose qu'un client. . .
Wyatt Barnett
4

J'ai vu deux distributeurs automatiques de billets ouverts à Denver, au Colorado. Les deux étaient (à l'époque) des guichets automatiques Compass Bank, et les deux étaient Windows XP sous le boîtier renforcé. J'ai eu la possibilité de demander au technicien ce qui, en particulier, l'un d'eux fonctionnait, et il a dit quelque chose comme "XP Embedded".

Donc, je parie que la programmation ATM ressemble moins à la programmation intégrée de nos jours, et plus au développement Windows standard.

Bruce Ediger
la source
Pas seulement "ces jours-ci". ATM utilisés pour exécuter Windows NT 3 ou OS / 2. Et l'interface utilisateur que vous voyez est plus susceptible d'être des pages HTML affichées par Internet Explorer. Le langage de programmation peut être n'importe quoi - j'ai travaillé sur un système Java qui a remplacé celui écrit en VB. Les GAB ne sont vraiment que des PC ordinaires avec des périphériques et des pilotes inhabituels.
Michael Borgwardt
3

Ces types d'appareils sont programmés à l'aide d'une programmation intégrée . Il s'agit d'un type de programmation de très bas niveau qui traite fortement de la logique et des portes.

Si vous êtes intéressé par l'apprentissage pratique de la programmation intégrée, je vous recommande de vous pencher sur arduino .

CFL_Jeff
la source