Senior Embedded Software Engineer
Responsibilities
Design, implement, and maintain bare-metal and FreeRTOS drivers for peripherals including UART, SPI, I2C, GPIO, timers/watchdog, AXI4, and APB3 interconnects
Port and extend RTOS support (FreeRTOS today, growing Zephyr RTOS footprint) across SoC variants, including SMP (multi-core) configurations
Build and maintain networking software: lwIP TCP/IP stack integration, Ethernet TSE MAC drivers, and iperf- and MQTT-based demos
Implement and maintain storage stack support: SDHC/eMMC drivers and FAT filesystem integration
Develop new bare-metal and FreeRTOS examples that demonstrate RISC-V SoC capabilities
Review code and improve build/test infrastructure (Makefile-based toolchains, RISC-V GCC cross-compilation)
Investigate and resolve field- and customer-reported issues on shipped SoC platforms
Mentor junior firmware engineers on driver development, debugging methodology, and RTOS internals
Qualifications
Bachelor's or Master's degree in Electrical/Electronic Engineering, Computer Engineering, Computer Science, or a related field
4+ years of hands-on embedded software development experience, ideally on ARM, RISC-V, or other 32/64-bit embedded architectures
Strong C programming skills and assembly (RISC-V or similar)
Proven experience with bare-metal firmware development: startup code, linker scripts, interrupt/trap handlers, memory-mapped peripherals
Hands-on experience with at least one RTOS (FreeRTOS, Zephyr, RT-Thread, or similar) — porting, driver integration, or kernel configuration
Solid understanding of common bus protocols and interfaces: UART, SPI, I2C, AXI/AXI4, APB
Experience with JTAG-based debugging tools (OpenOCD, Lauterbach TRACE32, or similar)
Comfortable working with cross-compilation toolchains (GCC) and Makefile-based build systems
Strong debugging and root-cause analysis skills for hardware/software boundary issues