Software Engineer
Electrical Engineering
Arm Microcontrollers
C Language
C++ Language
DevOps
Driver Development
Embedded
Embedded Development
Embedded Linux
Embedded Software
Embedded Systems
Engineering
Excel Spreadsheets
Firmware Development
Git
Hardware Engineering
Hardware Software Co Design
Lab Instrumentation
Microcontrollers
RTOS
Software Development
Software Engineer
Software Engineering
Systems
Vhdl Language
Job Description
Dynamic Structures and Materials is seeking a Software Engineer to develop and test embedded software for microcontroller based systems, onsite in Franklin, Tennessee.
Responsibilities
- Plan, write, test, and debug embedded software, primarily bare metal firmware, for microcontroller platforms using C and C++.
- Under guidance, create and modify device drivers and low level interfaces for peripherals such as GPIO, timers, ADC/DAC, PWM, UART, SPI, and I2C.
- Bring up firmware on prototype and production hardware, using lab instruments including digital oscilloscopes, logic analyzers, multimeters, and in-circuit debuggers.
- Support integration of embedded software with electrical hardware, motion control, and sensor feedback; assist in troubleshooting hardware software interactions.
- Analyze test results and document findings in spreadsheets or more advanced analysis methods.
- Utilize the DSM version control system for all software work, following established branching and merging practices.
- Participate in code and design reviews, providing and receiving constructive feedback.
- With oversight, reliably document test results, design configurations, software interfaces, and related data in logs, spreadsheets, formal reports, or comparable formats.
- Learn, support, and execute all quality objectives and deliverables described in the DSM QMS system for assigned projects.
- Contribute to proposals and reports by delivering well written summaries as directed.
- Assist more senior staff as directed.
- Work on assigned tasks diligently and in a safe manner that protects yourself and others.
Requirements
- 1 to 3 years of software or embedded software engineering experience, including internships or co-op roles.
- Strong programming discipline in C or C++, with familiarity; knowledge of VHDL or Verilog is a plus.
- Fundamental understanding of microcontroller basics, including memory, interrupts, timers, and peripheral registers.
- Experience with common laboratory sensors and instrumentation such as encoders, LVDTs, multimeters, oscilloscopes, logic analyzers, and capacitive probes.
- Ability to read schematics and component datasheets sufficiently to interface software with hardware is preferred.
- Experience with a version control system such as Git.
- Bachelor's degree is required.
Technologies
- C, C++
- VHDL, Verilog
- Git
- RTOS
- Excel
- In-circuit debuggers
Benefits
- 401(k)
- 401(k) matching
- Dental insurance
- Health insurance
- Life insurance
- Paid time off
- Vision insurance
Pay
Salary range is USD 80,000 to 90,000 per year.
Application Question(s)
- Please highlight 1 to 2 key accomplishments from your most recent role.
Security Clearance
- Secret (Preferred)
Work Location
- Onsite in Franklin, TN