¿Qué hace un desarrollador de sistemas embebidos?

¿

Los desarrolladores de sistemas embebidos son profesionales del sector IT muy demandados, sobre todo debido al auge del Internet of Things (IoT), los smartwatch, drones y otros dispositivos. ¿Qué hace falta para trabajar en este área?

¿Qué son los sistemas embebidos?

Los sistemas embebidos (embedded systems) surgen para cubrir necesidades específicas y no necesidades generales como las que cubre un ordenador. Es español también es frecuente referirse a ellos como software integrado o incrustado

Los sistemas embebidos consiguen muy a menudo no parecer un ordenador, sino algo completamente distinto. Piensa por ejemplo en un sistema de control de acceso de una empresa, el software que controla las máquinas de vending o los taxímetros. También los relojes inteligentes o los mp3 son ejemplos con software embebido.

En general, todos los componentes del sistema embebido (el audio, tarjeta de video, etc) se incluyen en su placa base.

Para programar sistemas embebidos, los desarrolladores pueden programar directamente en assembly del microprocesador, o utilizar lenguajes como C, C++ o incluso Java

Perfil profesional del desarrollador de sistemas embebidos

Además de estos lenguajes, existen plataformas que tienen herramientas específicas para el diseño de apps y prototipos con sistemas embebidos:

  • Arduino
  • Raspberry Pi
  • BeagleBone
  • Mbed

En general es posible dividir el área de los sistemas embebidos en dos:

  • Hardware embebido: Los ingenieros de hardware embebido se encargan de los diseños esquemáticos, el diseño de la placa base integrada y del PCB, de la electrónica de potencia, etc. Necesitan experiencia con software como CAD o EDA. 
  • Software embebido: El ingeniero de software en sistemas embebidos trabaja con los cargadores de arranque y es responsable de programar los controladores de los dispositivos. Para ello necesitan experiencia en programación de sistemas y microcontroladores

En este artículo nos centraremos en los desarrolladores de software de sistemas embebidos.

¿Buscas un especialista en sistemas embebidos?

¿Qué hace el desarrollador de software en sistemas embebidos?

Funciones del desarrollador de sistemas embebidos

El software embebido es la primera capa de código que se ejecuta en un dispositivo. Los ingenieros de software embebido escriben código, pero a diferencia de otros ingenieros de software, necesitan una comprensión profunda del hardware en el que el código se ejecutará.

Un programador de sistemas embebidos conoce los esquemas del hardware y cómo las hojas de datos de los chips se relacionan con el código escrito para ellos. El software embebido suele ser autónomo y sólo ejecuta un único programa. Por eso, los ingenieros de software embebido son los encargados de determinar el menor número posible de controladores que el dispositivo necesita para ejecutar el software.

Casi cualquier cosa, desde tostadoras y linternas hasta relojes inteligentes, televisores digitales y unidades de control electrónico en los coches, tienen sistemas embebidos. Generalmente no pensamos en esos dispositivos como computadoras, pero tienen software subyacente que las hace funcionar. 

El ingeniero de software integrado es el encargado de hacer funcionar todos estos productos que utilizamos a través de su código. Como veremos después, los ingenieros de sistemas embebidos están en el medio de los ingenieros de software y los ingenieros electrónicos y se centran en cómo el código interactúa con la electrónica.

Tareas del Ingeniero de Software en Sistemas Embebidos

  • Diseñar e implementar software embebido para configurar los componentes de HW
  • Participar en varias fases del ciclo de desarrollo del producto: definición del producto, diseño, planificación, ejecución y prueba
  • Revisar los requisitos del producto
  • Crear prototipos y evaluar soluciones alternativas en hardware de destino 
  • Apoyar el análisis de la arquitectura de software integrado, software FTA y DFMEA
  • Entregar documentos detallados de especificación funcional y diseño técnico para las arquitecturas y componentes de software embebidos
  • Mantener y mejorar los entornos de construcción embebidos, y los entornos de pruebas automatizadas

Habilidades y conocimientos

Conocimientos necesarios como desarrollador de sistemas embebidos

El desarrollador de software embebido necesita dominar el lenguaje de programación C. Este lenguaje está considerado como uno de los lenguajes más eficientes e independientemente del campo o empresa en la que se trabaje, es muy probable que se trabaje con C y C++.

Además, el especialista en sistemas embebidos necesita entender el hardware y sus componentes. El ingeniero de software embebido no solo tiene que testear código, es posible que algo del hardware esté fallando. Para identificar y corregir potenciales problemas, es necesario que se entienda el funcionamiento del hardware.

Normalmente, un sistema embebido es un sistema de computación en tiempo real y las tareas de procesamiento también se realizan en tiempo real. Por eso, se necesitan conocimientos de Sistemas operativos en tiempo real (RTOS)

Los RTOS más populares incluyen:

  • LynxOS
  • OSE
  • QNX
  • RTLinux

Conocimientos necesarios como desarrollador de sistemas embebidos:

  • Dominio de la programación en C/C++ en entorno Linux
  • Conocimiento de sistemas operativos en tiempo real (RTOS): QNX, OSE, RTLinux, LynxOS
  • Valorable experiencia en otros lenguajes como Python o Java
  • Experiencia con especificación de características, diseño e implementación de la arquitectura del plano de datos
  • Conocimiento de microcontroladores (SDK, ARM) y microporcesadores (Microchip PIC, Espressif ESP32)
  • Conocimiento de los principios de la electrónica como la lectura de esquemas y el uso de analizadores lógicos, osciloscopio y otros equipos de prueba
  • Experiencia con herramientas de desarrollo como IAR/Keil y el sistema de control de versiones Git
  • Conocimiento de prácticas debugging (JTAG y las integraciones asociadas del BGF)
  • Experiencia con protocolos de comunicación como SPI, I2C, UART, TCP/IP, NFC

Cómo convertirse en desarrollador de software embebido

Para trabajar con sistemas embebidos, generalmente, se necesita una ingeniería en un campo relacionado con IT como la informática, telecomunicaciones o electrónica. 

Muchas empresas buscan que el candidato sea un apasionado de los sistemas embebidos y del Internet de las cosas (IoT) y también que se tenga experiencia previa trabajando con sistemas embebidos.

Hay multitud de recursos para seguir al día de todo lo relacionado con sistemas embebidos como: 

Ambos sitios están llenos de artículos bien investigados escritos por expertos en diferentes campos de la arquitectura de software embebido como Michael Barr, Nigel Jones, Matt Green, etc.

También existe literatura técnica con la que seguir formándose. Algunos libros útiles:

¿Eres experto en sistemas embebidos y buscas conectar con empresas?
> Crea un perfil gratis en freelancermap 🚀

Especialista en Sistemas Embebidos Salario

Actualmente existe una gran demanda de expertos en software embebido por lo que pueden esperar un buen salario.

Si miramos los salarios de los ingenieros de software embebido en los Estados Unidos, vemos que de media ganan unos 83.000 dólares, pudiendo llegar hasta los 123.000 dólares anuales. Incluso los perfiles junior empiezan con 68.000 dólares anuales de media. 

Como siempre, ten en cuenta que los salarios son promedio y que pueden variar en función del país, de la experiencia concreta que tenga el candidato o de la empresa para la que se vaya a trabajar.

Por ejemplo, mirando en otros países, vemos que en Alemania los salarios para Embedded Software Developers que van entre los 45.000 € y los 78.000 €. En España, los sueldos oscilan entre los 30.000 € y 45.000 €.

¿Cuánto gana un ingeniero de sistemas embebidos?

Perfil junior68.000 $
Salario medio83.000 $
Perfil senior123.000 $

¿Cuánto cobran los especialistas en sistemas embebidos freelancer?

Según los datos de freelancermap, los Desarrolladores de sistemas embebidos cobran de media:

$/hora

La mayoría de freelancers en esta área cobran entre 33 y 106 $/hora.

Los Desarrolladores de sistemas embebidos trabajando a tiempo completo (8 horas/día) cobrarían:

$/día
Última actualización:

Otros perfiles profesionales en IT:

» Más perfiles en desarrollo de software

Natalia Campana

Natalia Campana forma parte del equipo internacional de www.freelancermap.com. Enamorada de las nuevas tecnologías y la interculturalidad, tras reunir diferentes experiencias laborales trabajando en varios países como EE.UU, Reino Unido o Alemania, ahora centra sus esfuerzos en ayudar a freelancers a encontrar nuevos proyectos y clientes a nivel mundial.

5 comentarios

  • Muy interesante el artículo, pero tengo una duda, ¿por qué se debe trabajar sobre Linux para el desarrollo de software embebido?

    • Nos alegra que te haya resultado interesante, Jose.

      La ventaja de Linux es que se ajusta al dispositivo y así cada plataforma tiene un sistema operativo optimizado para su procesador y capacidad computacional. Ejemplos son los teléfonos móviles, consolas de automotrices etc. Para crear aplicaciones y RTOS se usa el lenguaje C, nativo a los procesadores y microcontroles. Esa combinación es la que hace que el Kernel de Linux sea la opción mas eficiente y segura para nuevos dispositivos y hardware.

      ¡Un saludo!

Entradas recientes