




Resumen: El Ingeniero de Sistemas Embebidos diseña, desarrolla y mantiene firmware y software que opera 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 y MPU. 2. Desarrollar para plataformas bare-metal y basadas en RTOS, gestionando la programación de tareas. 3. Integrar pilas de conectividad IoT e implementar cadenas de arranque seguras. **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 inicial del hardware y el firmware bare-metal hasta la conectividad segura, las canalizaciones CI/CD y la fiabilidad de grado productivo. 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 memoria, latencia de interrupciones y 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 rutinas de servicio de interrupción (ISR). * Escribir y mantener controladores del kernel de Linux, superposiciones de árbol de dispositivos (device tree overlays) 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, incluidas I2C, SPI, UART, CAN, USB y protocolos inalámbricos de baja potencia (BLE, Wi-Fi, LoRa, Thread). * Integrar pilas de conectividad IoT, incluidas MQTT, CoAP, LwM2M y TLS/DTLS para una comunicación segura con la nube. **Implementación de seguridad** * Implementar cadenas de arranque seguras, aprovisionamiento de raíz de confianza por hardware y almacenamiento cifrado para despliegues productivos. * 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 ante fallos. * Contribuir al modelado de amenazas del producto y aplicar medidas correctoras en las capas de firmware y 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 temporización, integridad de señales y comportamiento de periféricos. * Leer e interpretar esquemas eléctricos y hojas de datos de componentes; colaborar estrechamente con los ingenieros de hardware durante las revisiones de placas. **Optimización y calidad** * Realizar análisis de rendimiento y optimizar el código para minimizar la huella de memoria, la utilización de la 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, incluida la verificación automática de compilaciones y la 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 la 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 adaptación a nuevos objetivos hardware. **Hardware y depuración** * Capacidad para leer esquemas eléctricos e interpretar hojas de datos de componentes para implementar software de forma independiente. * 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: cadenas de 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: A tiempo completo, Temporal Pregunta(s) de postulación: * pretensiones salariales soles Idioma: * inglés (Obligatorio) Lugar de trabajo: Empleo remoto


