Role Overview
- Design and implement software running on a distributed embedded system with multiple microcontrollers with a focus on creating re-usable software designs / components.
- Design and implement real-time Ethernet communication.
- Develop custom serial communication protocol over UART and I2C interfaces to support reliable data exchange between the device and external components.
- Specify requirements, design, implement, and test both bare metal and RTOS low-level software for creating a scalable platform.
- Work with/resolve ambiguity in requirements/specifications/designs.
- Create elegant, efficient real-time software components and interfaces.
- Develop software component testing methodologies and implementations to ensure maturity/stability/release readiness.
- Work with hardware and debuggers at a bench and HIL level to verify software operation.
- Define system-level power / compute / communication requirements and implement solutions that allow different applications to achieve different combinations of configurations.
- Profile power / CPU / bus usage and identify opportunities for optimization on the submodule as well as system level.
- Collaborate with V&V to develop comprehensive test plans and perform thorough testing to validate firmware functionality, stability, and performance under various conditions, including low power modes.
- Interface with external vendors, including review of firmware specifications, providing design guidance, and integrating code releases.
- Maintain clear and concise documentation of design and firmware architecture
Requirements
- Bachelor’s degree in electrical engineering, Computer Science, Computer Engineering, experience
- 5+ years of relevant experience in embedded design, using C/C++
- Experience with bare metal and RTOS environment
- Experience with JIRA/Confluence or a similar system for tracking inputs/results.
- Knowledge of electrical engineering fundamentals including circuit analysis and design
Even better, you may have...**
- Highly collaborative mindset and strong communication skills.
- Desire to work with vendors to integrate source code for new technology.
- Experience in driver development and RTOS integration. Zephyr OS experience is a plus.
- Experience with software build tools like Bazel, Scons, Cmake etc.
- Experience with fundamental hardware components on PCB and their analysis tools.
- Ability to write testing scripts for using scripting languages (Python)
- Fluent in software fundamentals including software design and maintainability.
- Hands-on experience in hardware bring-up, system debugging, and code optimization.
- Knowledge of electrical engineering fundamentals including circuit analysis and design
Tech Stack
Benefits
- Immediate medical, dental, vision and prescription drug coverage
- Flexible family care days, paid parental leave, new parent ramp-up programs, subsidized back-up child care and more
- Family building benefits including adoption and surrogacy expense reimbursement, fertility treatments, and more
- Vehicle discount program for employees and family members and management leases
- Tuition assistance
- Established and active employee resource groups
- Paid time off for individual and team community service
- A generous schedule of paid holidays, including the week between Christmas and New Year’s Day
- Paid time off and the option to purchase additional vacation time.