United Software Group
Embedded Software Engineer
United Software Group, Palo Alto, California, United States, 94306
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-588-8525 / 614-495-9222 Ext: 261 | Fax: 866-764-1148 Email ID:
Ranjith.vemula@usgrpinc.com
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-588-8525 / 614-495-9222 Ext: 261 | Fax: 866-764-1148 Email ID:
Ranjith.vemula@usgrpinc.com