Senior Embedded Software Engineer
Indexed description
Senior Embedded Software Engineer
The Senior Software Engineer performs research, designs, tests, and implements application software on a variety of embedded and desktop platforms.
- Reports to: Senior Manager of Engineering
- Location: Eden Prairie, MN office
- This role has no direct supervisory responsibilities but does serve as a coach and mentor for other positions in the department
- The candidate must meet the definition of “US Person” under ITAR/EAR regulations
Key Responsibilities
- Lead, mentor, and review the work of software design engineers, providing technical direction and ensuring engineering best practices are followed.
- Translate product and customer requirements into scalable, maintainable, and efficient software architectures.
- Design, develop, and maintain embedded software for 8-bit, 16-bit, 32-bit, and 64-bit processor-based platforms.
- Develop software solutions using Assembly, C, C++, and Python. Knowledge of additional programming languages such as C#, Java, Go, or R is considered an advantage.
- Design and implement software for bare-metal, RTOS, Linux, and Android environments. Experience with Yocto, Linux open-source ecosystems, and Android Open Source Project (AOSP) is highly desirable.
- Develop and maintain device drivers and Board Support Packages (BSPs) for peripherals and interfaces including USB, Ethernet, CAN, SPI, I²C, PCI Express, HDMI, Audio, Video, NAND/NOR Flash, DDR3/DDR4, SDRAM, ATA, and related hardware components.
- Design and integrate software solutions supporting wireless communication technologies such as Wi-Fi (802.11), Bluetooth, GPS, and cellular connectivity.
- Perform software architecture and design reviews to ensure solutions are reliable, maintainable, scalable, and aligned with customer requirements.
- Prepare and maintain engineering documentation, including Software Requirements Specifications (SRS), Software Design Specifications (SDS), Software Development Plans (SDP), verification test plans, and validation reports.
- Deliver assigned engineering tasks within established project schedules and budget objectives.
- Collaborate closely with cross-functional engineering teams, project managers, and customers to ensure successful project execution and delivery.
- Lead customer projects when required, coordinating technical activities across multiple engineering disciplines.
Required Qualifications
- Bachelor's degree in Computer Science, Computer Engineering, Software Engineering, or a related technical discipline.
- Minimum of 4 years of experience developing embedded software for microprocessor-based systems, with strong experience in Yocto Linux or other embedded Linux distributions.
- At least 2 years of hands-on experience developing Android system software, Hardware Abstraction Layer (HAL), or Android Open Source Project (AOSP)-based solutions.
- Strong background in embedded systems design and software development for microprocessor-based platforms.
- Experience across the complete product development lifecycle, including requirements analysis, system architecture, software design, Design for Manufacturing (DFM), Design for Test (DFT), and software verification.
- Ability to evaluate customer requirements for technical feasibility, development effort, project cost, and delivery timelines.
- Excellent written and verbal communication skills with experience preparing technical specifications, engineering documentation, project proposals, and technical presentations.
- Solid understanding of object-oriented analysis and design (OOA/OOD), software architecture principles, and design patterns.
- Strong understanding of processor architecture, including cache hierarchies (L1/L2), MMU, DMA, interrupt handling, power management, memory subsystems, and bus architectures.
- Experience developing software for embedded peripherals and communication interfaces including Ethernet, USB, SPI, I²C, CAN, and Flash memory.
- Practical experience using embedded debugging and validation tools such as JTAG debuggers, oscilloscopes, and spectrum analyzers.
- Familiarity with ARM, PowerPC, and x86 processor architectures.
- Experience developing applications, device drivers, BSPs, or middleware for embedded Linux, Android, RTOS, Windows CE, iOS, or similar embedded operating systems.
- Knowledge of networking concepts, including TCP/IP, routing protocols, and Internet communication standards, is desirable.
- Proficiency with Microsoft Office applications, including Microsoft Project.
- Ability to thrive in a dynamic, fast-paced environment while managing multiple priorities and maintaining a strong customer focus.
- Experience working within Agile and Scrum software development methodologies.
Preferred Qualifications
- Experience contributing to Linux kernel development or other open-source software projects.
- Familiarity with modern software development tools including Git, CI/CD pipelines, automated testing, and code review processes.
- Experience with secure embedded software development, functional safety standards, or regulated industries such as medical devices, aerospace, or automotive is a plus.
- Exposure to cloud-connected embedded systems, edge computing, or IoT device development is advantageous.
Create a free Caio profile to unlock more results and save your role and location preferences.
Unlock free search