Descripción
Resumen:
El Ingeniero de Sistemas Embebidos diseña, desarrolla y mantiene firmware y software en el límite del hardware, abarcando todo el ciclo de vida del desarrollo del producto.
Aspectos destacados:
1. Diseñar e implementar firmware de bajo nivel en C/C++ para arquitecturas MCU/MPU.
2. Desarrollar para plataformas bare-metal y basadas en RTOS, gestionando la programación de tareas.
3. Liderar la puesta en marcha del hardware, utilizando osciloscopios, analizadores lógicos y depuradores JTAG/SWD.
**Descripción general del puesto**
El Ingeniero de Sistemas Embebidos es responsable del diseño, desarrollo y mantenimiento de firmware y software que opera directamente en el límite del hardware. Este puesto abarca todo el ciclo de vida del desarrollo de productos embebidos: desde la puesta en marcha del hardware y el firmware bare-metal hasta la conectividad segura, las canalizaciones CI/CD y la fiabilidad en entornos de producción. El candidato ideal se siente tan cómodo leyendo un esquema eléctrico o probando una señal con un osciloscopio como escribiendo una capa Yocto, creando un controlador de dispositivo o configurando una canalización CI para pruebas de hardware-en-el-bucle.
**Responsabilidades principales**
**Desarrollo de firmware y software**
* Diseñar e implementar firmware de bajo nivel en C/C++ dirigido a arquitecturas MCU y MPU, prestando especial atención al diseño de la memoria, la latencia de interrupciones y el comportamiento determinista.
* Desarrollar tanto para entornos bare-metal como para plataformas basadas en RTOS (incluidas Zephyr RTOS, FreeRTOS u otras equivalentes), gestionando la programación de tareas, las primitivas de sincronización y el diseño de ISRs.
* Escribir y mantener controladores del kernel de Linux, superposiciones de árbol de dispositivos y código de demonios en espacio de usuario para plataformas embebidas basadas en Linux.
**Integración de periféricos y protocolos**
* Implementar y depurar interfaces de comunicación como I2C, SPI, UART, CAN, USB y protocolos inalámbricos de baja potencia (BLE, Wi-Fi, LoRa, Thread).
* Integrar pilas de conectividad IoT como MQTT, CoAP, LwM2M y TLS/DTLS para comunicaciones seguras con la nube.
**Implementación de seguridad**
* Implementar cadenas de arranque seguro, aprovisionamiento de raíz de confianza basada en hardware y almacenamiento cifrado para despliegues en producción.
* Diseñar y mantener sistemas de actualización OTA con capacidad de reversión, verificación de firmas y lógica de recuperación segura.
* Contribuir al modelado de amenazas del producto y aplicar mitigaciones a nivel de firmware y de capa de comunicación.
**Puesta en marcha y validación del hardware**
* Liderar o contribuir a la puesta en marcha inicial del hardware, utilizando osciloscopios, analizadores lógicos y depuradores JTAG/SWD para validar temporizaciones, integridad de señales y comportamiento de periféricos.
* Leer e interpretar esquemas eléctricos y hojas de datos de componentes; colaborar estrechamente con ingenieros de hardware durante revisiones de placas.
**Optimización y calidad**
* Realizar análisis de rendimiento y optimizar el código para minimizar la huella de memoria, el uso de CPU y el consumo de energía, especialmente en dispositivos con restricciones de batería y dispositivos de recolección de energía.
* Aplicar estándares de codificación (MISRA C/C++ u otros equivalentes) e integrar herramientas de análisis estático (cppcheck, Coverity, PC-lint) en el flujo de trabajo de desarrollo.
**Herramientas, automatización y CI/CD**
* Escribir scripts en Python y shell para automatización de compilaciones, entornos de prueba, canalizaciones de grabación de firmware y simulación de protocolos.
* Crear y mantener canalizaciones CI/CD para objetivos embebidos, incluyendo verificación automática de compilaciones e integración de pruebas de hardware-en-el-bucle (HIL) mediante plataformas como GitHub Actions o Jenkins.
**Documentación y pruebas**
* Mantener documentación técnica exhaustiva que cubra decisiones arquitectónicas, interfaces de hardware y modos de fallo.
* Desarrollar marcos de pruebas unitarias, de integración y a nivel de sistema; participar en revisiones de diseño y contribuir al análisis post-mortem de incidencias en campo.
**Requisitos técnicos**
**Lenguajes y programación**
* C/C++ avanzado para entornos embebidos: operaciones bit a bit, E/S mapeada en memoria, aritmética de punteros, semántica de volatile y gestión de scripts de enlace.
* Conocimientos prácticos de Python para automatización de pruebas, herramientas de construcción, scripting de protocolos y análisis de datos provenientes de mediciones hardware.
**Sistemas operativos y plataformas**
* Linux embebido: Proyecto Yocto o Buildroot para creación de imágenes personalizadas, redacción de árboles de dispositivos y desarrollo de controladores del kernel.
* RTOS: experiencia práctica con Zephyr RTOS y/o FreeRTOS — configuración del planificador de tareas y portabilidad a nuevos objetivos hardware.
**Hardware y depuración**
* Capacidad para leer esquemas eléctricos e interpretar hojas de datos de componentes para implementación independiente de software.
* Competencia en el uso de herramientas de depuración hardware: interfaces JTAG/SWD, osciloscopios, analizadores lógicos y programadores in-circuit.
* Gestión de cadenas de herramientas de compilación cruzada: herramientas ARM GCC/Clang, CMake, Make y personalización de scripts de enlace.
**Protocolos y conectividad**
* Buses seriales: I2C, SPI, UART, CAN, USB.
* Inalámbricos: BLE, Wi-Fi. Conocimientos de LoRa, Thread o Zigbee son un valor añadido.
* Capa de aplicación IoT: MQTT, CoAP, TLS/DTLS y autenticación de dispositivos basada en certificados.
**Seguridad**
* Arranque seguro, módulos de seguridad hardware (HSM/SE), imágenes de firmware cifradas y mecanismos de actualización OTA con reversión y verificación de firmas.
**Calidad del código y herramientas**
* Herramientas de análisis estático: cppcheck, Coverity o PC-lint.
* Control de versiones: Git con flujos de trabajo estructurados de ramificación; experiencia contribuyendo a canalizaciones CI/CD para objetivos embebidos.
Tipo de puesto: Tiempo completo, Temporal
Pregunta(s) de postulación:
* pretensiones salariales soles
Idioma:
* ingles (Obligatorio)
Lugar de trabajo: Empleo remoto