La principal diferencia entre los programadores de hardware y los de software radica en el enfoque.
Ambos necesitan construir programas realmente rápidos, para facilitar el uso y la respuesta. Sin embargo, lo hacen de formas completamente distintas. Veamos algunos de los puntos principales que diferencian estos dos tipos de programación:
1. Base de conocimientos
Un desarrollador de software embebido debe conocer el hardware en el que está trabajando. La mayoría de las veces el ingeniero de software embebido estaría escribiendo algún código para controlar o utilizar el hardware de la mejor manera posible. Tendría que interactuar con el hardware más estrechamente, aunque puede no hablar los 1s y 0s directamente.
Un desarrollador de software trabaja en aplicaciones que está totalmente protegido del hardware en el que se ejecuta y el desarrollador de software no tiene que saber mucho o de hecho nada sobre el hardware en el que su programa se ejecutaría.
2. Complejidad del código
En el software embebido la complejidad no está en las líneas de código, la mayoría de las veces. Configurar un manejador de interrupciones para que responda a la pulsación de un botón y equilibrar la prioridad entre la pulsación de un botón y la entrada de un sensor de temperatura podría haber llevado todo un día de trabajo. Al final del día, el desarrollador de software embebido habría escrito 50 líneas de código.
Un desarrollador de software generalmente escribe más líneas de código. La razón es que un desarrollador de software construye un producto sólo con sus líneas de código, de la nada.
3. Procesamiento de Algoritmos y Datos vs. Control del Sistema
Un programa de software generalmente gira en torno a 2 aspectos: algoritmos y estructuras de datos. Tome cualquier programa, estará computando algo: puede ser almacenar datos, mover datos, procesar datos o simplemente presentar o borrar datos. Cualquier software, desde la banca, los seguros, el comercio minorista, la logística hasta el simple software basado en PC como Word, PowerPoint, etc., funciona según los principios mencionados anteriormente.
Un software embebido está más enfocado hacia el control y la gestión del sistema. Se desarrolla para explotar todo el potencial del hardware y gestionarlo en beneficio del usuario. Aunque haya datos y algoritmos en el software embebido, sólo estarán ahí para controlar y gestionar el hardware de una manera mejor.
4. PC vs. PCB
Aunque los desarrolladores de software embebido trabajan en PC, no están escribiendo software para PC. Utilizan el PC para construir su software que finalmente se ejecuta en otra plataforma (una placa de circuito impreso con un micro controlador). Los ingenieros de software embebido desarrollan software para estas máquinas y trasladan el binario ejecutable del PC a la máquina utilizando herramientas de depuración u opciones de conectividad específicas.
Los desarrolladores de software desarrollan software que se ejecuta en PC o equivalentes de PC (por ejemplo, servidores, smartwear, etc.). Tanto si el software se ejecuta en un banco, en un astillero, en un aeropuerto o en una tienda de comestibles, se ejecuta en un ordenador. Puede que hoy en día también se ejecute en teléfonos móviles y tabletas. Desde una perspectiva embebida hoy en día las tabletas y los móviles no difieren mucho de los PCs ya que todos son más "de propósito general".
5. Osciloscopios vs. Puntos de interrupción
La depuración de software embebido es diferente de la depuración de software de aplicación al igual que el desarrollo. Se puede ver a los desarrolladores embebidos utilizar osciloscopios, analizadores lógicos y multímetros mientras se depura un cuelgue que utilizar puntos de ruptura.
Los desarrolladores de software utilizan más a menudo los puntos de ruptura de depuración y las opciones de depuración que su IDE proporciona para depurar el código, perfilar el código, etc.