We are seeking a skilled Embedded Software/Firmware Engineer to design, develop, and optimize firmware and low-level software for our embedded systems. The ideal candidate will have experience working with hardware interfaces, writing efficient, reliable code in C/C++, and a strong understanding of computer architecture and hardware-level programming. This role will also involve developing and maintaining the Board Support Package (BSP)for new hardware platforms, including bootloaders, peripheral drivers, and low-level system initialization.
Responsibilities
- Design, develop, and maintain firmware for embedded systems, microcontrollers, and Linux applications.
- Develop and maintain BSPsfor custom hardware, including initialization routines, device tree configurations, and hardware abstraction layers.
- Write and optimize low-level codein C/C++ for performance, reliability, and scalability on resource-constrained environments.
- Interface with hardwarethrough device drivers and manage communications with peripherals (I2C, SPI, UART, etc.).
- Collaborate with hardware engineersto understand hardware specifications, timing constraints, and ensure firmware compatibility.
- Debug and troubleshoot firmwareand BSP issues at the hardware level, using oscilloscopes, logic analyzers, and other debugging tools.
- Develop and execute teststo validate BSP and firmware functionality, reliability, and performance in real-time embedded systems.
- Maintain technical documentationfor BSP, firmware design, implementation, and debugging processes.
- Perform code reviewsand contribute to firmware architecture and process improvements.
Qualifications
- Bachelor’s degreein Computer Science, Electrical Engineering, or related field
- 2+ yearsof experience in low-level software/firmware development for embedded systems.
- Proficiency in C/C++programming with experience in low-level debugging and optimization.
- Experience with BSP developmentfor embedded hardware, including system initialization and device tree configuration.
- Hands-on experience with hardware debugging toolssuch as oscilloscopes, multimeters, and logic analyzers.
- Familiarity with version control systems like Git.
- Experience with communication protocols such as I2C, SPI, UART, CAN, and USB.
- Knowledge of assembly language, ARM or similar microcontroller architecture is a plus.
- Strong problem-solving skillsand the ability to work independently as well as in a collaborative team environment.
- Familiarity with scripting languages (e.g., Python) for test automation.