Role Overview
We are seeking a highly skilled Software Engineer (Firmware) to join our team. You will be responsible for developing and optimizing firmware for complex embedded systems, working closely with hardware and validation teams to ensure seamless integration and high-performance operation in RTOS and Linux environments.
Responsibilities
- Perform SoC bring-up, bootloaders, platform initialization, and board initialization.
- Manage and configure peripherals such as PCIe, I2C, SPI, SMBUS, and UART.
- Conduct root cause analysis, troubleshooting, and debugging of complex Hardware/Firmware interface issues.
- Design and code hardware and firmware architectures for scalable solutions.
- Perform thorough code reviews, unit testing, and technical documentation.
- Utilize modern software development and test workflows including CI/GitLab, Makefiles, CMake, and TDD.
Requirements
- Strong professional experience in firmware or embedded software development in an RTOS environment.
- Demonstrable experience porting and using RTOS like Zephyr or FreeRTOS.
- Solid knowledge of CPU architecture (ARM, ARC, RISC-V), memory maps, and register-level programming.
- Experience with software development for systems with Linux OS or multi-threaded RTOS.
- Familiarity with high-speed signaling technologies like PCIe and CXL.
- Experience with debugging tools such as JTAG, UART, Oscilloscope, and Logic Analyzer.
- Knowledge of OpenBMC and OpenBIC systems.
Skills
- C/C++
- RTOS
- Linux Kernel
- Python
- Git