Location
Las Cruces, NM
Salary
Not specified
Type
fulltime
Posted
Today
Job Description
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 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.
Qualifications
- 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.
Looking for more opportunities?
Browse thousands of graduate jobs and entry-level positions.