Defina o que você quer dizer com coisas de nível superior. Escrever drivers e qualquer outro tipo de software que se comunique com o hardware é provavelmente o que a maioria das pessoas pensa quando você menciona o software incorporado. Enquanto isso faz parte, é apenas uma pequena parte. Depois de ter toda essa configuração, ainda existe todo o aplicativo a ser escrito, que provavelmente nunca realmente fala diretamente com o hardware e, na maioria dos casos, é mais provável que isso seja a maior parte do esforço de desenvolvimento. Em algum nível, isso pode ser comparável à programação em nível "superior". No entanto, no mundo incorporado, você provavelmente está trabalhando sob algumas restrições, especialmente em termos de poder e memória computacional. Aqui está uma lista das coisas em que penso diariamente que provavelmente têm menos importância no desenvolvimento de nível superior na maioria dos casos.
- Simultaneidade de threads (proteção e tempo)
- Alocação de memória, desalocação e uso
- Gerenciamento de heap (evitando fragmentação)
- Cumprimento de prazos em tempo real
- Priorização de threads
- Desempenho de I / 0
- Transferências de DMA
- Tamanhos de pilha
- Desempenho da biblioteca
- Recursos de idioma (exceções incham seu código)
Além disso, as plataformas incorporadas tendem a ser altamente especializadas para atingir um objetivo específico, oposto a um PC, projetado para ser uma plataforma para a computação geral de heterogeneidade. Isso significa que você provavelmente tem um monte de código personalizado que pode ou não ser portátil.
Eu suspeito que você esteja procurando trabalhos onde "incorporado" significa "computador em uma caixa", geralmente um que executa uma tarefa específica. Provavelmente executando a maior parte de uma distribuição Linux ou de um sistema operacional Microsoft, mas será bastante completo e você poderá usar IDEs GUI padrão e assim por diante. A parte incorporada realmente aparece quando o dispositivo é lançado como um gravador de vídeo multicanal, dispositivo de streaming de mídia ou alarme contra roubo.
Atualmente, você pode fazer muito processamento em um dispositivo de 1W, para que a definição de incorporado tenha crescido de acordo. Porém, mesmo há 20 anos, tínhamos dispositivos embarcados alimentados por bateria executando o DOS bastante padrão e construímos programas para eles usando o IDE do dia (os scanners de código de barras Symbol tinham bibliotecas para C e Pascal, por exemplo, por isso usamos o Turbo Pascal no Win3.1 para construir os executáveis). Mas também enviamos "PCs industriais" que inicializaram o DOS e nosso software, e a entrada foi limitada a alguns botões grandes à prova d'água montados em uma caixa de aço inoxidável. O LCD de 15 polegadas atrás do vidro naquela caixa significava que tínhamos muitas opções de saída, mas conectar um teclado significava abrir a caixa (dentro de uma fábrica de alimentos). Elas podem ser consideradas incorporadas de algumas perspectivas. Principalmente o usuário tinha poucas opções de recuperação de erros - ligue ou desligue.
fonte