Embedded Software Engineer NPU RTOS and Embedded Linux
You will develop and maintain RTOS-based firmware for heterogeneous multicore accelerator systems and lead its transition to Embedded Linux. You will define system architecture, build kernel drivers and images, migrate RTOS services, implement power-management and observability features, and debug issues on emulation and hardware platforms.
Responsibilities
- Define software requirements and system architecture with hardware engineers, driver developers, and product managers
- Design core allocation and kernel-to-userspace functional allocation
- Develop and maintain RTOS firmware for heterogeneous multicore and multichiplet systems
- Develop kernel-porting layers, task and service structures, interrupt schemes, and device drivers
- Lead technical evaluation, proof of concept, and migration planning for Embedded Linux
- Rebuild RTOS services as kernel drivers and userspace daemons
- Perform Linux kernel bring-up and develop device drivers for PCIe, DMA, interrupts, and mailboxes
- Build Yocto- and Buildroot-based images
- Develop and stabilize PCIe and SR-IOV device firmware
- Implement power management and observability infrastructure
- Reproduce and debug issues in CI regression environments on emulation platforms, EVBs, and hardware
Requirements
- At least 6 years of embedded software development experience
- Experience developing for ARM Cortex-M and ARMv8-A Cortex-A environments
- Bachelor’s degree or higher in Computer Science, Electrical Engineering, or a related field
- Experience with commercial RTOS platforms such as FreeRTOS, Zephyr, or ThreadX
- Linux kernel programming experience, including modules, device drivers, Device Tree, synchronization, interrupts, DMA, and memory mapping
- Knowledge of interrupt handling, memory management, low-level software, and assembly programming
- Knowledge of real-time systems and priority-based preemptive scheduling
- Experience developing device drivers and protocols including PCIe, UART, SPI, and I2C
- Ability to use JTAG debuggers, RTOS-aware tracing, ftrace, perf, and kgdb
- Experience with GCC cross-toolchains and CMake