Job Title: Embedded Software Engineer
Location: Palo Alto California
Fulltime
Job Description:
Key Responsibilities:
1. DDS Communication establishment on Embedded Systems
- Design and implement Data Distribution Service (DDS) communication layers for realtime data exchange between system components.
- Establish reliable lowlatency highthroughput data communication between devices focusing on QNXbased systems running on 8255 PPI hardware.
- Ensure efficient and scalable communication using DDS QoS (Quality of Service) policies for realtime embedded systems.
2. Development on 8255 PPI Hardware
- Interface with the Intel 8255 PPI to control and communicate with external peripherals such as I/O devices ensuring compatibility and efficient data exchange.
- Develop lowlevel drivers and HAL to facilitate communication between the processor and the 8255 PPI peripheral device.
- Perform system bringup and debugging of 8255 PPI interfaces for embedded software running on the QNX OS.
3. QNX Operating System
- Develop port and optimize embedded software for the QNX RealTime Operating System (RTOS) ensuring compliance with realtime constraints.
- Utilize QNX features such as message passing process scheduling and multithreading to ensure efficient system performance.
- Implement embedded applications on QNX using POSIX APIs and QNXs proprietary communication and interprocess communication (IPC) mechanisms.
4. Hardware Abstraction Layer (HAL) Design
- Design and implement Hardware Abstraction Layers (HAL) to decouple core application logic from hardwarespecific details.
- Enable portability of the software across different platforms by isolating hardwarespecific code in HAL modules.
5. CrossPlatform Development
- Use crossplatform libraries (e.g. Boost Qt or SDL) for essential tasks like file handling network communication and graphics rendering to ensure that the system is modular and portable across different platforms.
- Work with hardwareindependent libraries to abstract platform differences ensuring scalability and ease of future integration.
6. Modular Architecture
- Design the system using a modular software architecture that breaks the system into independent components such as communication computation and I/O.
- Implement clean maintainable and reusable code by isolating system functionalities into discrete modules allowing for easy testing and integration.
7. Testing & Debugging
- Conduct unit testing integration testing and systemlevel testing to validate embedded software components.
- Utilize debugging tools and techniques for realtime systems on QNX such as QNX Momentics IDE gdb and hardware debuggers to trace and resolve issues in the 8255 and DDS communication stack.
Required Qualifications:
- Bachelors or Masters degree in Computer Science Electrical Engineering or a related field.
- 5 years of experience in embedded software development particularly with realtime systems and hardware interfacing.
- Proficiency in programming languages like C C and Python for embedded systems.
- Strong experience with QNX RTOS (message passing multithreading memory management etc.).
- Experience with DDS middleware (e.g. RTI Connext DDS OpenDDS Eclipse Cyclone DDS) for realtime communication in distributed systems.
- Deep understanding of Intel 8255 PPI hardware and peripheral interfacing techniques.
- Experience in designing and implementing HAL (Hardware Abstraction Layers) to separate core logic from hardwarespecific details.
- Familiarity with crossplatform libraries such as Qt Boost or SDL for network communication graphics and file handling.
- Strong skills in modular software design with the ability to break down systems into independent reusable components.
- Experience in working with communication protocols such as SPI I2C and CAN.
Preferred Qualifications:
- Familiarity with realtime communication protocols and design patterns.
- Experience working in automotive aerospace or industrial control systems.
- Knowledge of hardware debugging tools emulators and logic analyzers for lowlevel driver development.
- Experience in developing software that interfaces with DSPs FPGAs or other coprocessors.
- Familiarity with version control systems like Git and continuous integration practices.
Soft Skills:
- Strong analytical and problemsolving abilities.
- Ability to work independently and as part of a crossfunctional team.
- Excellent verbal and written communication skills particularly in documenting complex technical designs.
- Strong attention to detail and a focus on delivering highquality reliable software.