Job Title: Embedded Engineer
Location: Hanover MD (2 days on-site / week, other wise remote)
Job Summary: The Embedded Engineer plays a crucial role in the development of embedded systems and software for various applications. They work on designing, coding, debugging, and testing software to ensure that embedded systems operate efficiently and reliably. This role requires a strong understanding of hardware and software integration, real-time systems, and low-level programming.
Embedded Systems Development: Design, develop, and maintain embedded software and firmware for microcontrollers, microprocessors, and other embedded platforms.
Programming: Write and optimize code in programming languages like C, C++, and assembly language for embedded systems.
Hardware-Software Integration: Collaborate with hardware engineers to ensure seamless integration between software and hardware components of embedded systems.
Real-Time Systems: Develop software for real-time systems, ensuring timely and deterministic response to inputs and events.
Testing and Debugging: Conduct testing, debugging, and troubleshooting of embedded software and systems to identify and resolve issues.
RTOS (Real-Time Operating System): Implement and work with real-time operating systems, if necessary, to manage tasks, memory, and system resources efficiently.
Device Drivers: Develop and maintain device drivers for peripherals and interfaces, ensuring proper communication between software and hardware components.
Optimization: Optimize code and algorithms to improve system performance, memory usage, and power efficiency.
Documentation: Create and maintain technical documentation, including design specifications, user manuals, and code documentation.
Security: Implement security measures to protect embedded systems from potential threats and vulnerabilities.
Collaboration: Collaborate with cross-functional teams, including hardware engineers, QA testers, and product managers, to ensure the successful development and deployment of embedded systems.
Version Control: Use version control systems to manage codebase and collaborate with team members.
Compliance: Ensure that embedded systems meet industry standards, regulations, and safety requirements, as applicable to the specific domain.
Qualifications and Requirements:
- Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, Computer Science, or a related field.
- Proficiency in programming languages like C, C++, and assembly language.
- Strong understanding of embedded systems architecture, microcontrollers, and microprocessors.
- Experience with real-time operating systems (RTOS) and real-time software development.
- Knowledge of hardware design principles and digital electronics.
- Familiarity with debugging tools and techniques.
- Strong problem-solving and troubleshooting skills.
- Excellent communication and collaboration skills.
- Experience with version control systems and software development tools.
- Knowledge of industry-specific standards and regulations (e.g., ISO 26262 for automotive, medical device regulations, etc.) may be required in specific domains.