
Software Engineer (Firmware)
Kandou AI · Posted today
- Hyderabad, Telangana, India (On-site)
- Full-time
About the role
Required Competencies - Experience
- Strong professional experience in firmware development or embedded software development in a RTOS environment.
- Demonstrable experience in porting and use of RTOS; Zephyr, FreeRTOS
- Detailed experience with SoC bring-up, bootloaders, platform initialization, board initialization, peripherals such as PCIe, I2C, SPI, SMBUS, UART.
- Proven experience working with multiple teams on Root cause analysis, troubleshooting, and debugging skills resulting into solving complex Hardware/Firmware interface issues
- Familiarity with PCIe/CXL validation and debugging is a big plus.
- Demonstrable experience of hardware and firmware architecture, design and coding for solutions at scale.
- Experience performing thorough code reviews, unit testing, and documentation.
- Proficiency with modern Software development and test workflows (CI/gitlab/makefile/CMake/TDD etc.)
Required Competencies - Skills
- Strong programming skills in C/C++ for embedded systems. Good understanding of Linux kernel internals and driver architecture.
- Solid knowledge of CPU architecture (ex. ARM, ARC, RISC-V), memory map, and register-level programming and debugging
- Demonstrable experience with software development for systems with Linux OS or multi-threaded RTOS environments.
- Good knowledge of bootloaders and boot sequence and Experience in board bring-up and hardware debugging
- Exposure to high-speed signalling technologies: PCIe, CXL
- Exposure to ASIC hardware validation & debugging
- Familiarity with scripting languages (Python/Shell) for automation
- Familiarity with debugging tools: JTAG, UART, Oscilloscope, Logic Analyzer.
- Strong working knowledge of version control tools (Git)
- Good knowledge of Baseboard Management Controller systems; OpenBMC, OpenBIC
- Good understanding of computer architectures including processors, buses, and memories.
- Ability to collaborate with hardware, validation, and application teams for end-to-end integration
Skills
Strong programming skills in C/C++ for embedded systemsGood understanding of Linux kernel internals and driver architectureSolid knowledge of CPU architecture (ARM, ARC, RISC-V), memory map, register-level programmingFamiliarity with bootloaders and boot sequence