Embedded Software Engineer
Role details
Job location
Tech stack
Job description
- Design, develop, and maintain embedded software in C++ , focusing on core algorithms and business logic.
- Collaborate with a small team of embedded engineers to define, implement, and refine system requirements and software architecture.
- Perform detailed hardware integration, including working closely with microcontrollers and embedded peripherals to ensure reliable system behavior.
- Analyze, document, and refine requirements for embedded systems, ensuring traceability from requirements to implementation.
- Implement and manage multithreaded software components, including the use of threading, mutexes, and semaphores to ensure safe and efficient concurrent execution.
- Develop and optimize software that interfaces with CAN communication protocols and other communication interfaces as required.
- Implement and maintain graphical user interface features using TouchGFX on STM 32-bit microcontrollers.
- Use containers and vectors for object declaration and management in modern C++ (C++17 and C++23) to write clean, efficient, and maintainable code.
- Participate in the design and implementation of drivers and communication protocols in coordination with other specialized teams.
- Utilize automated build pipelines, Git, and Azure DevOps to support continuous integration, version control, and collaborative development.
- Troubleshoot and resolve software defects and integration issues, working closely with cross-functional teams.
- Contribute to code reviews, technical documentation, and best practices to maintain high-quality software standards.
Requirements
- Bachelor's degree in Computer Engineering.
- 5+ years of experience developing software in modern C++ (C++17 and C++23).
- 5+ years of experience working with CAN communication protocols.
- 5+ years of experience with hardware integration and embedded requirements analysis.
- 5+ years of experience with multithreaded programming, including threading concepts.
- 5+ years of experience declaring and managing objects using containers and vectors in C++.
- 5+ years of experience working with mutexes and semaphores for concurrency control.
- 5+ years of experience with automated build pipelines, Git, and Azure DevOps.
- 5+ years of experience with TouchGFX and STM 32-bit microcontrollers.
- Strong proficiency in embedded software development using C++ on Linux or RTOS-based systems.
- Solid understanding of microcontroller-based systems and low-level software integration.
Additional Skills & Qualifications
- Experience working within a small, collaborative engineering team.
- Familiarity with RTOS concepts and real-time embedded systems.
- Experience with graphical user interfaces on embedded devices, including sounds and visual features.
- Strong problem-solving skills and the ability to troubleshoot complex embedded systems.
- Ability to work effectively in a cross-functional environment with teams focused on GUI, peripherals, and communication protocols.
Benefits & conditions
This is a Contract to Hire position based out of Fitchburg, WI.
Pay and Benefits
The pay range for this position is $45.00 - $52.88/hr.
Eligibility requirements apply to some benefits and may depend on your job classification and length of employment. Benefits are subject to change and may be subject to specific elections, plan, or program terms. If eligible, the benefits available for this temporary role may include the following: - Medical, dental & vision - Critical Illness, Accident, and Hospital - 401(k) Retirement Plan - Pre-tax and Roth post-tax contributions available - Life Insurance (Voluntary Life & AD&D for the employee and dependents) - Short and long-term disability - Health Spending Account (HSA) - Transportation benefits - Employee Assistance Program - Time Off/Leave (PTO, Vacation or Sick Leave)
Workplace Type