Embedded Software Engineer
Responsibilities
Design, develop, and maintain C/C++ software for RTOS, Real-Time Linux, and Linux-based embedded controllers for real-time sensing, communication, monitoring, and device control.
Develop multi-threaded and real-time applications, including task scheduling, interrupts, synchronization, IPC, timers, state machines, watchdogs, and fault handling.
Develop and integrate low-level hardware interfaces and communication protocols including GPIO, UART, SPI, I C, CAN/CAN-FD, Ethernet, TCP/IP, and UDP.
Develop and debug device drivers, BSP/HAL components, and hardware/software interfaces.
Perform system-level debugging and performance analysis, including latency, jitter, CPU/memory utilization, and communication performance.
Support networking and application interfaces including REST, MQTT, gRPC/Protobuf, and related technologies.
Develop Python tools for test automation, diagnostics, data collection, and hardware validation.
Participate in architecture/design reviews, code reviews, testing, integration, and system validation.
Required Qualifications
BS/MS in Computer Engineering, Electrical Engineering, Computer Science, or related field, with 5+ years of embedded/real-time software development experience.
Strong proficiency in C/C++ and working proficiency in Python.
Strong foundation in computer organization and architecture, including Von Neumann/Harvard architectures, CPU operation, registers, instruction execution, buses, and memory-mapped I/O.
Strong understanding of memory architecture, including cache, SRAM/DRAM/Flash, stack/heap, virtual/physical memory, DMA, and memory management.
Strong knowledge of Real-Time Operating Systems, including tasks/threads, scheduling, priorities, context switching, mutexes/semaphores, queues, synchronization, priority inversion, latency, jitter, and deterministic execution.
Strong understanding of hardware/software interrupts, ISRs, interrupt priorities, exceptions, interrupt latency, and interrupt-to-task interaction.
Hands-on experience with embedded controllers/microprocessors/SoCs and hardware interfaces such as GPIO, UART, SPI, I C, CAN/CAN-FD, ADC/DAC, and Ethernet.
Experience with Embedded/Real-Time Linux, multithreading, IPC, sockets, device interfaces, and user-space/kernel-space concepts.
Ability to read schematics, datasheets, register maps, memory maps, and timing diagrams and debug hardware/software interactions.
Preferred Qualifications
Experience with FreeRTOS, Zephyr, QNX, VxWorks, ThreadX, PREEMPT_RT, ARM-based controllers, device drivers, BSPs, Yocto/Buildroot, industrial communication protocols, and JTAG/GDB/oscilloscope/logic-analyzer debugging.
Experience with BESS/HESS, BMS, PCS, power electronics, industrial controls, automotive, robotics, or other real-time control systems is a plus.
UL 60730 experience is a plus
Employers have access to artificial intelligence language tools (“AI”) that help generate and enhance job descriptions and AI may have been used to create this description. The position description has been reviewed for accuracy and Dice believes it to correctly reflect the job opportunity.
- Dice Id: 90933573
- Position Id: d07455a6cdc8b60d54a16eb93b43773b
- Posted 1 day ago