Embedded Software Engineer
New Eagle
- Warren, MI
- Permanent
- Full-time
We are seeking a highly skilled Embedded Software Engineer with expertise in microcontroller configuration and embedded device drivers to join our dynamic team. As an Embedded Software Engineer, you will play a crucial role in designing, developing, and maintaining firmware for embedded systems, ensuring optimal performance and functionality.Important Details
- This position is based on-site in Warren, MI and will, in part, support a long-term contract with the U.S. Military.
- Ability to pass a stringent background check and drug test is required.
- Hybrid Role: 3-4 days per week on-site in Warren, 1 day per month in Ann Arbor, MI
- This position may be part-time or full-time, depending on the candidate's availability and interest.
- Embedded Device Driver Development: Develop and maintain device drivers for various embedded peripherals, ensuring seamless integration with the overall system architecture.
- Firmware Development: Design, implement, and debug embedded firmware using C programming language, adhering to best practices and coding standards.
- Hardware Abstraction Layer (HAL) Development: Create and maintain HAL libraries to abstract hardware functionalities, facilitating portability and reusability across different platforms. (e.g. AUTOSAR, MCAL, etc.)
- Low-Level Hardware Interaction: Interface directly with hardware components such as sensors, actuators, and communication interfaces (SPI, I2C, UART, etc.), optimizing performance and resource utilization.
- Testing and Debugging: Conduct thorough testing of embedded firmware, employing various techniques such as unit testing, integration testing, and hardware-in-the-loop (HIL) testing. Debug and resolve issues promptly to ensure robustness and reliability.
- Documentation: Document software designs, implementation details, and configuration procedures comprehensively, maintaining clear and concise documentation throughout the development lifecycle.
- Collaboration: Collaborate with cross-functional teams to ensure cohesive system development and integration.
- Continuous Improvement: Stay abreast of emerging technologies, tools, and techniques in embedded software development. Continuously evaluate and enhance development processes to improve efficiency and quality.
- Bachelor's degree in Computer Engineering, Electrical Engineering, Computer Science, or a related field.
- 2+ Years of experience in embedded software development with a focus on microcontroller configuration and device driver development.
- Proficiency in C programming language with a strong understanding of embedded systems concepts and principles.
- Hands-on experience with microcontroller architectures such as PowerPC and Aurix TriCore
- Familiarity with embedded development tools and environments including IDEs, debuggers, emulators, and oscilloscopes.
- Solid understanding of low-level hardware interactions, peripheral interfaces, and communication protocols (SPI, I2C, UART, etc.).
- Experience with RTOS concepts and implementations (e.g. ETAS RTA-OS) is a plus.
- Excellent problem-solving skills with a keen attention to detail and a proactive mindset.
- Strong communication and collaboration skills, with the ability to work effectively in a team-oriented environment.