¿Cómo se construye el software para máquinas como cajeros automáticos o televisores?

14

Como programador principiante, solo he trabajado con la programación de aplicaciones basadas en computadora, pero una pregunta se me viene a la cabeza muy a menudo desde que comencé a programar y no puedo responderla correctamente.

Las máquinas no actúan solas, ese es el trabajo del programador, él le dice qué hacer y cuándo hacerlo, pero mi curiosidad se encuentra debajo de las computadoras. Tomaré los ejemplos de un software de cajero automático en esta publicación, pero tenga en cuenta que hay muchos otros, como una pantalla de lavadora o un televisor, teléfono móvil, lo que sea.

¿Cómo se construye exactamente el software para este tipo de máquinas? Me imagino que no puede ser idéntico a la programación basada en computadora. ¿Qué lenguaje usan para hacer que tales cosas funcionen y cómo se hace el trabajo? ¿Hay programadores especializados en este tipo de programación? ¿Cuál es el proceso de hacer que estas máquinas cobren vida?

Bugster
fuente
Gracias por el enlace. No tenía idea de esto hasta que encontré su enlace. Además, ¿por qué se rechazó esto? ¿Qué tiene de malo?
Bugster
3
@ThePlan Las personas tienden a rechazar preguntas que no son del tipo "¿Cómo resuelvo este problema en particular?"
CFL_Jeff
3
Aunque las personas pueden votar negativamente por varias razones y no se les exige que se expliquen a sí mismas, la información sobre herramientas en la flecha de votación negativa dice: "Esta pregunta no muestra ningún esfuerzo de investigación; no está clara o no es útil". Creo que la primera oración está muy cerca de una explicación suficiente para el voto negativo que recibió, haga al menos una investigación menor antes de preguntar por los programadores.
Yannis
99
Yo digo que lo corte un poco flojo. Es difícil investigar la programación integrada cuando no conoce el término.
Karl Bielefeldt

Respuestas:

15

Se conoce como Sistemas Embebidos o Desarrollo de Software Embebido. Recomiendo este libro si desea saber más sobre el proceso general sin tener que ir demasiado hacia ninguna arquitectura. Incluso te ofrece un sistema operativo en tiempo real para jugar.

La programación integrada depende mucho de la arquitectura. Por lo general, está trabajando con una respuesta seria, el tamaño del programa, la recuperación de errores y las restricciones de costos. Por ejemplo, puede tener un z80 (procesador de 8 bits, están en todas partes) y quizás un par de kilobytes de memoria para jugar. Es posible que solo tenga una ROM para indicarle al sistema qué hacer y cómo configurar el programa. También podría tener solo un par de kilobytes de tamaño. ¿Por qué tan poco recuerdo? Bueno, si fabricas 15 millones de pequeños retoños; cada centavo se convierte en $ 150,000.

Te sugiero jugar con algo como Arduino o Scribbler Robots si quieres aprender más haciendo. En lo que respecta a los lenguajes, C, C ++ y Assembly son el conjunto típico, aunque se puede usar Java (y, de hecho, se diseñó originalmente para este dominio si se puede soportar ese pensamiento). Lisp y ML están siendo desplegados.

Aprenda todo lo que pueda sobre arquitectura también porque, como dije, la asignación de memoria y las operaciones bit a bit comienzan a ser realmente importantes.

Ingeniero mundial
fuente
Gracias, esta respuesta es mi elección de una respuesta aceptada porque explica los sistemas integrados en pocas palabras y también me da una opción de libro.
Bugster
44
@ThePlan: lo bueno de embebido es que puedes probarlos. Si solo tiene 3 entradas y 3 salidas, es bastante fácil confirmar lo que funciona. No tiene que comprobar qué sucede si ejecutan su código en hebreo Windows XP en un teclado turco con una versión de Flash de Uzbekistán.
Martin Beckett
@ MartinBeckett: Has trivializado un poco la dificultad del desarrollo de sistemas integrados. El último tenía un requisito de respuesta en tiempo real en nano segundos. No era comprobable: la única forma de saber que era correcta era probar que el código era correcto por diseño y revisión. A diferencia de los vaqueros que actualmente codifican las aplicaciones de los usuarios, cuyos defectos se corrigen mediante una actualización en línea.
mattnz
Además, se puede requerir que estos sistemas operen durante años o incluso décadas sin acceso humano u otro.
Ingeniero mundial
@mattnz: no siempre es fácil, pero al menos es factible. En el código de escritorio de cowboy, además de un sistema operativo que no puede probar completamente, escrito con un kit de herramientas que no puede probar completamente con miles de otras aplicaciones que potencialmente interactúan con él, además de acciones aleatorias de los usuarios, es bastante inútil.
Martin Beckett
5

Definitivamente hay un ángulo incrustado aquí. Pero en estos días está viendo plataformas cada vez más avanzadas en lo que tradicionalmente se llamarían dispositivos integrados. Por ejemplo, los televisores LG y Samsung ahora tienen API y tiendas de aplicaciones. Los televisores Sony ejecutarán Android.

Wyatt Barnett
fuente
3
... y algunos cajeros automáticos ejecutan Windows. Cuando aparecen en pantalla azul, las imágenes generalmente terminan en thedailywtf.com . Y en mi ciudad, el transporte público local vende pases mensuales de los quioscos. Una vez vi uno que se atascó al arrancar: ¡estaba ejecutando Windows 2000 (esto fue hace aproximadamente 6 meses)!
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: gracias, no hagas cajeros automáticos aquí, así que no sé qué están haciendo. . .
Wyatt Barnett
ATM = cajero automático. AKA Bank Machine. AKA La máquina que le permite sacar dinero de su cuenta en lugar de tener que ir a un cajero.
FrustratedWithFormsDesigner
Lo sé, simplemente no trabajes con ellos como algo más que un cliente. . .
Wyatt Barnett
4

He visto dos cajeros automáticos abiertos en Denver, Colorado. Ambos eran (entonces) cajeros automáticos de Compass Bank, y ambos eran Windows XP bajo el duro caso. Le pregunté al técnico qué, específicamente, uno de ellos corrió, y él dijo algo así como "XP Embedded".

Por lo tanto, apuesto a que la programación de cajeros automáticos se parece menos a la programación integrada en estos días y más al desarrollo estándar de Windows.

Bruce Ediger
fuente
No solo "estos días". Cajeros automáticos utilizados para ejecutar Windows NT 3 u OS / 2. Y la IU que ve es más probable que sean páginas HTML que muestra Internet Explorer. El lenguaje de programación puede ser cualquier cosa: he trabajado en un sistema Java que reemplazó uno escrito en VB. Los cajeros automáticos son realmente PC normales con algunos periféricos y controladores inusuales.
Michael Borgwardt
3

Estos tipos de dispositivos se programan mediante programación integrada . Este es un tipo de programación de muy bajo nivel que se ocupa en gran medida de la lógica y las puertas.

Si está interesado en aprender programación incrustada de forma práctica, le recomendaría que busque en arduino .

CFL_Jeff
fuente