Um sistema embarcado é um sistema eletrônico acoplado de um microprocessador e programado para seguir uma porção de subrotinas já predefinidas. Subrotinas essas que podem ir desde a contagem de tempo e acionamento nos semaforos, até calculo de rota de colisão em um missel. Um sistema embarcado não tem a mesma capacidade ou liberdade de um computador pessoal convencional já que o computador pessoal tem capacidade de ser programado indefinidamente, criando os chamados softwares. Já no sistema embarcado, toda mudança se dá diretamente no programa do microprocessador, no seu 'firmware', fazendo com que cada mudança no sistema embarcado, resulte numa reprogramação completa do sistema. Outro aspecto diferente num sistema embarcado é a baixa quantidade em média de interação entre o sistema e o usuario final, sendo utilizados principalmente como processadores de dados, grande parte das informações é obtida automaticamente através das subrotinas que acessam sensores digitais ou analogicos conectados ao microcontrolador. Sistemas embarcados dependem de um componente para armazenamento do firmware, maioria das vezes uma memoria ROM, ou memória FLASH. Não necessitam de teclados ou afins para funcionamento, podendo rodar isolados de informações fornecidas pelo usuario. O sistema embarcado pode estar ligado a sensores que fornecerem dados para o microcontrolador que ira efetuar operações predefinidas no firmware e processando os resultados obtidos, operando dependendo dos resultados alcançados. Os principais componentes de um sistema embarcado são microcontroladores, computadores compactos munidos de microprocessadores, memorias ROM ou FLASH e de canais de INPUT e OUTPUT para a entrada e saida de dados. Sensores e outros componentes eletrônicos fazem parte dos principais componentes de um sistema embarcado.