Embedded Software Engineer
About XiomasXiomas builds airborne and spaceborne imaging instruments, and our team has been doing this work for decades. Our instruments spot wildfires and pollution from the air, and we are developing one to study the weather on Mars for NASA. We are now turning that research work into commercial products.OverviewWe are hiring an embedded software engineer to build and improve the software that runs our instruments. It controls the cameras and motors, time-tags images from GPS, and passes messages between the processors on board. It has already flown on aircraft. Next it goes to space, where reliability requirements are much stricter.We are also integrating new components and changing the hardware architecture. You will help set the software direction for this work. There is a lot to do, so you will be balancing quality against priority.You will report to the CTO and be the primary developer on a very small team. The engineer who designed the software is available to consult on design questions.Your First YearThe same software runs all of our instruments. In your first year, we expect you to bring up the new boards, get the software ready for pilot units of our commercial products, and make solid progress on the Mars instrument.ResponsibilitiesShape the embedded software architecture and keep its documentation currentWrite code another engineer can read, review and maintainWrite requirements and tests for the software, and add the diagnostics and fault handling needed for space useAdd features in real-time C++ for camera control, motor control, image processing and MQTT messagingHelp with the hardware redesign: review board designs, bring up new boards, and do hands-on wiring in the labSupport lab and flight tests, and diagnose problems on the benchEducation and Experience6+ years writing embedded C++ on Linux and/or microcontrollersBS in Computer Engineering, Electrical Engineering or Computer Science, or equivalent experienceDesigning or substantially reworking the architecture of an embedded codebaseAerospace, automotive or medical device software, or work at a small company or startup, is a plusRequired SkillsFinding timing problems in hard real-time, state-machine-driven code and in soft real-time embedded LinuxWriting software that drives hardware: cameras, motors, sensors and the buses between themMessage-based design across several processorsDebugging on target hardware with GDB, an oscilloscope and a logic analyzerAutomated unit and integration testing of embedded softwareDesired SkillsElectronics: reading schematics and reviewing board designs (a big plus)The interfaces we use: MQTT, CAN motor control, GenICam and UVC cameras, GPS/PPS time-taggingHardware-in-the-loop test automation in PythonSoftware for space or other high-reliability systemsWhat We OfferYou make the architecture calls on software that has to work in space, with the freedom to decide how the work gets done. We settle technical questions by discussing them openly, and we want you to push back. We offer paid time off and a flexible schedule.We do not currently offer health, dental or retirement benefits. We are putting a benefits package together now.Location and How to ApplyBased in Ann Arbor, Michigan. Hybrid: on site as much as the lab and hardware work needs. Travel to field and flight tests is possible but not expected. Send your resume and a few sentences about a timing or hardware bug you tracked down to careers@xiomas.com.EligibilityThis role involves technology subject to U.S. export controls (ITAR and/or EAR) and requires U.S. person status: a U.S. citizen or national, lawful permanent resident, asylee, or refugee. Any offer is contingent on confirming U.S. person status. No security clearance is required.Xiomas is committed to providing equal employment opportunities to all individuals, regardless of any protected status, including veterans and individuals with disabilities. To request a reasonable accommodation during the application process, contact careers@xiomas.com.