Como é construído o software para máquinas como caixas eletrônicos ou TVs?

14

Como programador iniciante, trabalhei apenas com programação de aplicativos baseados em computador, mas uma pergunta vem à minha cabeça com muita frequência desde que comecei a programar e não consigo responder adequadamente.

As máquinas não agem por conta própria, esse é o trabalho do programador, ele diz o que fazer e quando, mas minha curiosidade está embaixo dos computadores. Vou pegar os exemplos de um software de caixa eletrônico nesta publicação, mas lembre-se de que existem muitos outros, como uma tela de máquina de lavar ou uma TV, telefone celular, etc.

Como exatamente é construído o software para esse tipo de máquina? Eu imagino que não pode ser idêntico à programação baseada em computador. Que idioma eles usam para fazer essas coisas funcionarem e como alguém faz o trabalho? Existem programadores especializados nesse tipo de programação? Qual é o processo de dar vida a essas máquinas?

Bugster
fonte
Obrigado pelo link. Eu não tinha idéia disso até encontrar seu link. Também por que isso foi prejudicado? O que há de errado com isso?
Bugster
3
As pessoas do @ThePlan tendem a votar de forma negativa com perguntas que não são do tipo "Como resolvo esse problema em particular?"
22412 CFL_Jeff
3
Embora as pessoas possam votar por várias razões e não precisar se explicar, a dica de ferramenta na seta abaixo diz: "Esta pergunta não mostra nenhum esforço de pesquisa; não é clara ou não é útil" - acho que a primeira frase está muito próxima de uma explicação suficiente para o voto negativo que você recebeu, faça pelo menos algumas pesquisas menores antes de perguntar aos programadores.
yannis
9
Eu digo, corte-o um pouco. É difícil pesquisar programação incorporada quando você não conhece o termo.
Karl Bielefeldt

Respostas:

15

É conhecido como Sistemas Incorporados ou Desenvolvimento de Software Incorporado. Eu recomendaria este livro se você quiser saber mais sobre o processo geral sem se interessar muito por nenhuma arquitetura. Ele ainda oferece um sistema operacional em tempo real para você brincar.

A programação incorporada depende muito da arquitetura. Você normalmente trabalha com respostas sérias, tamanho do programa, recuperação de erros e restrições de custo. Por exemplo, você pode ter um z80 (processador de 8 bits, eles estão em toda parte) e talvez alguns kilobytes de memória para brincar. Você pode ter apenas uma ROM para informar ao sistema o que fazer e como configurar o programa. Também pode ter apenas alguns kilobytes de tamanho. Por que tão pouca memória? Bem, se você fabricar 15 milhões dos pequenos otários; cada centavo se torna $ 150.000.

Eu sugiro mexer com algo como Arduino ou Scribbler Robots, se você quiser aprender mais fazendo isso. No que diz respeito às línguas, C, C ++ e Assembly são o conjunto típico, embora o Java possa ser usado (e na verdade foi originalmente projetado para esse domínio, se você aguentar esse pensamento). Outros definitivamente poderiam ser usados ​​também, eu sei Lisp e ML estão sendo implantados.

Aprenda o máximo que puder sobre arquitetura, porque, como eu disse, a alocação de memória e as operações bit a bit começam a ficar realmente importantes.

Engenheiro Mundial
fonte
Obrigado, esta resposta é a minha escolha de uma resposta aceita, porque explica os sistemas incorporados em poucas palavras e também me oferece uma opção de livro.
Bugster 9/03/12
4
@ ThePlan - o bom do incorporado é que você pode testá-los. Se você tiver apenas 3 entradas e 3 saídas, é muito fácil confirmar o que funciona. Você não precisa testar o que acontece se eles executarem seu código no hebraico Windows XP em um teclado turco com uma versão do Flash no Uzbequistão.
Martin Beckett
@MartinBeckett: Você trivializou um pouco a dificuldade do desenvolvimento de sistemas embarcados. O último tinha um requisito de resposta em tempo real, com nano segundos. Não era testável - a única maneira de saber se estava correta era provar que o código estava correto por design e revisão. Ao contrário dos cowboys que codificam aplicativos de usuário hoje em dia, cujos defeitos são corrigidos por uma atualização online.
mattnz
Além disso, pode ser necessário que esses sistemas operem por anos ou até décadas sem acesso humano ou outro.
World Engineer
@mattnz - nem sempre é fácil, mas é pelo menos possível. No código de área de trabalho de cowboy, no topo de um sistema operacional, você não pode testar completamente, escrito com um kit de ferramentas que não pode testar completamente com milhares de outros aplicativos potencialmente interagindo com ele, além de ações aleatórias dos usuários - é praticamente impossível.
Martin Beckett
5

Definitivamente, existe um ângulo incorporado aqui. Mas hoje em dia você está vendo plataformas cada vez mais avançadas no que tradicionalmente seriam chamadas de dispositivos incorporados. Por exemplo, as TVs LG e Samsung agora possuem APIs e lojas de aplicativos. As TVs da Sony estarão executando o Android.

Wyatt Barnett
fonte
3
... e alguns caixas eletrônicos executam o Windows. Quando aparecem em tela azul, as fotos geralmente acabam no thedailywtf.com . E na minha cidade, o transporte público local vende passes mensais dos quiosques. Uma vez vi um que ficou travado durante a inicialização - ele estava executando o Windows 2000 (isso foi há cerca de 6 meses)!
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner - obrigado, não faça caixas eletrônicos aqui, então não sei o que eles estão fazendo. . .
Wyatt Barnett
ATM = Caixa automático. AKA Bank Machine. AKA A máquina que permite tirar dinheiro da sua conta em vez de precisar ir ao caixa.
FrustratedWithFormsDesigner
Eu sei disso, apenas não trabalhe com eles como algo além de um cliente. . .
Wyatt Barnett
4

Eu vi dois caixas eletrônicos abertos em Denver, Colorado. Ambos eram (então) caixas eletrônicos do Compass Bank e ambos eram Windows XP no caso difícil. Eu perguntei ao técnico o que, especificamente, um deles rodava, e ele disse algo como "XP Embedded".

Então, aposto que a programação ATM é menos parecida com a programação incorporada atualmente e mais como o desenvolvimento padrão do Windows.

Bruce Ediger
fonte
Não apenas "nos dias de hoje". Caixas eletrônicos usados ​​para executar o Windows NT 3 ou OS / 2. E a interface do usuário que você vê provavelmente tem páginas HTML exibidas pelo Internet Explorer. A linguagem de programação pode ser qualquer coisa - trabalhei em um sistema Java que substituiu um escrito em VB. Os caixas eletrônicos são realmente apenas computadores comuns com alguns periféricos e drivers incomuns.
22812 Michael Borgwardt
3

Esses tipos de dispositivos são programados usando programação incorporada . Este é um tipo de programação de nível muito baixo que lida fortemente com lógica e portas.

Se você estiver interessado em aprender programação prática, recomendo pesquisar no arduino .

CFL_Jeff
fonte