Software Engineer I

Elbit AmericaRoanoke, VA

About The Position

We’re seeking an Entry-Level Embedded Software Engineer who is eager to build reliable, efficient software for real-world products. In this role, you’ll collaborate with electrical, mechanical, systems, and test engineers to design, implement, and test software for microcontrollers and embedded systems. You’ll work across the stack—board bring-up, drivers, application logic, and test automation. Self-motivation and the ability to work both independently and as part of a team are required. If you enjoy hands-on debugging in the lab, learning new hardware, and shipping features that customers use, you’ll thrive here.

Requirements

  • A Bachelor of Science degree in Computer Science or Computer Engineering is required.
  • Must be able to obtain a favorably adjudicated DOD Clearance at the Secret level.
  • Proficiency in C/C++ for embedded systems; exposure to memory management, concurrency, and debugging.
  • Working knowledge of microcontroller architectures and experience with STM32 and/or TI microcontrollers.
  • Familiarity with RTOS concepts (tasks, queues, timers), interrupts, and real-time constraints.
  • Experience with peripherals (GPIO, PWM, ADC/DAC) and buses (SPI, I²C, UART, CAN, USB).
  • Effective communication and documentation skills.
  • Familiarity with version control systems and how they are utilized (e.g. GitLab).
  • Experience with Python.

Nice To Haves

  • Familiarity with embedded standards and practices.
  • Experience with unit-test frameworks.
  • Experience with Dev-Ops
  • Experience with Android Development
  • Exposure to bootloaders, secure firmware update, and basic embedded security principles.
  • Knowledge of wireless protocols or OTA update pipelines.

Responsibilities

  • Design, implement, and unit-test embedded software in C/C++ for microcontrollers.
  • Contribute to board bring-up: bootloader configuration, peripheral initialization, and device driver development.
  • Integrate sensors/actuators and integrate common communication protocols (SPI, I²C, UART, CAN, USB).
  • Work with RTOS (e.g., Free RTOS) or bare-metal systems; manage tasks, interrupts, and low-power modes.
  • Debug and validate in the lab using oscilloscopes, logic analyzers, JTAG/SWD, GDB, and serial tooling.
  • Write and maintain hardware abstraction layers (HAL) and middleware; contribute to API design and documentation.
  • Develop automated tests and harnesses; support continuous integration (CI) and build pipelines.
  • Participate in code reviews, design reviews, and requirements discussions with cross-functional teams.
  • Create clear technical documentation: design notes, test plans, user guides, and release notes.
  • Support manufacturing/production with firmware updates, issue triage, and root-cause analysis.
  • Follow secure coding practices and applicable standards; contribute to quality and reliability improvements.
© 2024 Teal Labs, Inc
Privacy PolicyTerms of Service