The Senior Embedded Software Engineer on the Platform Software team participates in the architecture, design, development, test, and integration of software required to produce Line Replaceable Units (LRUs) used in commercial aircraft.
Duties and Responsibilities:
- Design and implement software for embedded devices and systems - from requirements to production, including estimates for development effort
- Support, maintain and improve existing platform software
- Assess third party and open-source software and in some cases implement same
- Analyze and enhance efficiency, performance, stability, and scalability of system resources
- Integrate and validate new product designs
- Interface with hardware design and development teams
- Support software team members and other cross functional teams
- Participate in design approach discussions
- Review code and design, participate in peer reviews
- Support software Quality Assurance
- Create and/or update feature description, system test, product delivery, and process documentation
- Write and/or report status
- Contribute/participate in DevOps/CI/CD pipeline
- Perform other job-related duties as assigned
Requirements
- Bachelor’s Degree in Computer Engineering, Computer Science, or equivalent experience in a related field (Electrical Engineering training or experience is advantageous)
- 6-10 years of experience working in a similar role
- Experience with UNIX/Linux or embedded operating system development
- Experience with C, C++, Python, Bash/sh
- Experience in abstracting/wrapping/limiting access to Linux kernel-level functions
- Understanding of client-server software distribution design and troubleshooting
- Experience troubleshooting amp; root cause analysis of software and hardware problems, particularly at the device driver level
- Understanding of embedded circuit design and PCB schematics, particularly with ARM/x86 processors
- Experience with circuit board bring-up
- Low-level software expertise:
- Understanding of common embedded bus functionality: I2C, SPI, MDIO, CAN, etc.
- Experience with ARINC 429 (data transfer), RS-485/422, and Ethernet/networking design
- Understanding of network level drivers (WiFi, Bluetooth, BLE)
- Experience with formal Engineering Requirements documentation and processes
- Kernel development and maturity updates via porting and patch integration
- Microcontroller firmware
- Device drivers
- Operating System
- Boot Loaders - experience with U-Boot would be advantageous
The ideal candidate would have experience in one, or both, of the following areas:
- Full video stack experience in Linux graphics environment
- Audio/Video (A/V) device drivers, A/V kernel modules and/or A/V libraries
- 4K Video and Digital Rights Management (DRM) understanding
- KMS/Mesa/OpenGL/V4L2/GStreamer
- Weston/Wayland
- Ethernet/Network development
- Distributed Ethernet Network design experience
- Kernel network stack, network interfaces
- Design experience with Ethernet Switches specifically, Marvell
- Working knowledge of network management amp; reliability protocols and tools
Benefits
The starting pay range for this position is $112,000 to $149,000, however, base pay offered may vary depending on skills, experience, job-related knowledge and location.