Full Job Description
Embedded Software Developer
Ottawa, ON
We are currently seeking a Embedded Software Developer to join our Ottawa based team.
What will you be doing?
As the Embedded Software Engineer, you will play an integral part of an agile development team, developing & maintaining software for MMIST's family of solutions for Precision Aerial Delivery and Recovery ensuring products are at the leading edge of technology for our customers.
• Write efficient, modular, and maintainable code in languages such as C/C++
• Create unit tests for created code.
• Develop, design, and implement advanced guidance, navigation & control algorithms for autonomous parachute system, focusing on stability, efficiency, and safety.
• Develop fault-tolerant system designs, ensuring the system can continue operating with minimal disruption even in the presence of faults.
• Conduct thorough analysis of control feedback and collaborate with stakeholders to implement improvements and optimize system behavior.
• Verify the effectiveness of guidance, navigation & control strategies through simulation, modelling, and physical testing, ensuring alignment with performance goals and safety requirements.
• Be responsible for troubleshooting and root cause analysis of issues within our software.
• Ensure code is appropriate for use within mission critical, safety critical high availability systems.
• Providing expert knowledge for embedded software systems to meet budget and customer delivery times.
• Being accountable for continuous improvements to processes to deliver quality robust solutions.
• Collaborate closely with cross-functional teams, including mechanical, electrical, systems, and software developers, to refine control strategies based on real-world performance data and operational requirements.
• Collaborating with internal cross-functional and leadership teams to identify product improvements and influence key decisions.
• Define and document requirements of the embedded software both into and from the system specifications.
• Detects areas in embedded systems that need improvement and leads the work on making those improvements.
• Mentors Junior embedded engineers on the team and throughout the organization
What do we need from you?
• Degree or suitable experience in relevant field of Computer Science etc.
• Advanced development and verification skills using C/C++ for embedded real-time systems.
• Proficiency in embedded software development tools, debugging techniques, and cross-compilation environments. (Keil, MPLAB X, Visual Studio, or similar)
• Familiarity with communication protocols such as UART, SPI, I2C, USB, CAN, Ethernet, or wireless technologies.
• Experience of real-time system modelling with UML software development for POSIX compliant RTOS e.g. QNX
• Strong documentation writing skills
• Familiarity with various microcontroller architectures and their peripherals, especially arm.
• Familiarity with sensors, actuators, and feedback control mechanisms used in industrial applications, as well as fault-tolerant system design.
• A huge plus for understanding of the GNC disciplines such as: Autopilot design and stability analysis, Guidance laws for varying phases of flight, Navigation systems including integration of GNSS and IMU, and Data fusion and state estimation.
• Experience with aerospace software development standards (e.g., DO-178C) would be great.
Please note that the compensation range information provided is a general guideline only. Criteria such as the candidate's qualifications and relevant experience, the scope of the specific position, as well as market and business considerations will be evaluated when extending an offer.