Hi, Hope you are doing well. Job Title: Embedded Software Engineer Location: Palo Alto, California Duration: Fulltime Job Description: Key Responsibilities: DDS Communication establishment on Embedded Systems
- Design and implement Data Distribution Service (DDS) communication layers for real-time data exchange between system components.
- Establish reliable, low-latency, high-throughput data communication between devices, focusing on QNX-based systems running on 8255 PPI hardware.
- Ensure efficient and scalable communication using DDS QoS (Quality of Service) policies for real-time embedded systems.
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 low-level drivers and HAL to facilitate communication between the processor and the 8255 PPI peripheral device.
- Perform system bring-up and debugging of 8255 PPI interfaces for embedded software running on the QNX OS.
QNX Operating System - Develop, port, and optimize embedded software for the QNX Real-Time Operating System (RTOS), ensuring compliance with real-time 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 QNX's proprietary communication and inter-process communication (IPC) mechanisms.
Hardware Abstraction Layer (HAL) Design - Design and implement Hardware Abstraction Layers (HAL) to decouple core application logic from hardware-specific details.
- Enable portability of the software across different platforms by isolating hardware-specific code in HAL modules.
Cross-Platform Development - Use cross-platform 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 hardware-independent libraries to abstract platform differences, ensuring scalability and ease of future integration.
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.
Testing & Debugging - Conduct unit testing, integration testing, and system-level testing to validate embedded software components.
- Utilize debugging tools and techniques for real-time 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: - Bachelor's or Master's degree in Computer Science, Electrical Engineering, or a related field.
- 5+ years of experience in embedded software development, particularly with real-time 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 real-time 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 hardware-specific details.
- Familiarity with cross-platform 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 real-time communication protocols and design patterns.
- Experience working in automotive, aerospace, or industrial control systems.
- Knowledge of hardware debugging tools, emulators, and logic analyzers for low-level driver development.
- Experience in developing software that interfaces with DSPs, FPGAs, or other co-processors.
- Familiarity with version control systems like Git and continuous integration practices.
Soft Skills: - Strong analytical and problem-solving abilities.
- Ability to work independently and as part of a cross-functional team.
- Excellent verbal and written communication skills, particularly in documenting complex technical designs.
- Strong attention to detail and a focus on delivering high-quality, reliable software.
Thanks & Regards, Ranjith Kumar Vemula Account Manager
Phone: 614-###-#### / 614-###-#### Ext: 261 | Fax: 866-###-####
Email ID: ...@usgrpinc.com