Embedded Software Engineer
Las Cruces, NM
Full Time
Experienced
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
Responsibilities
- Design, develop, and maintain firmware for embedded systems, microcontrollers, and Linux applications.
- Develop and maintain BSPs for custom hardware, including initialization routines, device tree configurations, and hardware abstraction layers.
- Write and optimize low-level code in C/C++ for performance, reliability, and scalability on resource-constrained environments.
- Interface with hardware through device drivers and manage communications with peripherals (I2C, SPI, UART, etc.).
- Collaborate with hardware engineers to understand hardware specifications, timing constraints, and ensure firmware compatibility.
- Debug and troubleshoot firmware and BSP issues at the hardware level, using oscilloscopes, logic analyzers, and other debugging tools.
- Develop and execute tests to validate BSP and firmware functionality, reliability, and performance in real-time embedded systems.
- Maintain technical documentation for BSP, firmware design, implementation, and debugging processes.
- Perform code reviews and contribute to firmware architecture and process improvements.
- Bachelor’s degree in Computer Science, Electrical Engineering, or related field
- 4+ years of 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 development for embedded hardware, including system initialization and device tree configuration.
- Hands-on experience with hardware debugging tools such 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 skills and the ability to work independently as well as in a collaborative team environment.
- Familiarity with scripting languages (e.g., Python) for test automation.
Apply for this position
Required*