As a
Software Engineer, you will design, develop, integrate, and validate software for advanced Single Board Computer (SBC) platforms. You will work across the embedded software stack, from low-level drivers and system services to security mechanisms, software update frameworks, and user-space applications, ensuring high performance, reliability, and maintainability.
Working closely with hardware and software engineering teams, you will contribute to system architecture, hardware-software integration, platform selection, and product development from initial prototypes through production releases. This role is ideal for an experienced Embedded Linux engineer who enjoys solving complex system-level challenges, debugging hardware-software interactions, and taking technical ownership of critical software components.
Key Responsibilities- Design software architectures for Single Board Computer (SBC) platforms, defining component structures, module interactions, interfaces, and communication protocols.
- Develop complex low-level drivers, system services, security mechanisms, and software update frameworks for embedded Linux platforms.
- Implement advanced hardware-software integration solutions, including communication and interaction with FPGAs, external controllers, and other system components.
- Develop and integrate complex communication protocol stacks, including Ethernet, USB, and CAN, ensuring reliable system communication and performance.
- Analyze and optimize system boot processes, resource utilization, performance, and stability across SBC platforms.
- Lead technical activities within projects, including task allocation, code reviews, technical decision-making, and code quality control.
- Participate in the selection and evaluation of software and hardware platform architectures, including recommendations for hardware components and system configurations.
- Investigate complex hardware-software interaction issues, including signal integrity problems, bus conflicts, noise, and other system-level failures.
- Define and execute hardware platform test scenarios, perform detailed debugging and diagnostics, and support system validation activities.
- Prepare, maintain, and support production software releases while ensuring appropriate documentation, testing, and release quality.
- Share technical expertise with the team through mentoring, knowledge sharing, and technical guidance.
Requirements- Bachelor's degree in Computer Engineering, Electrical Engineering, Computer Science, or a related engineering discipline.
- 4+ years of experience in embedded software engineering, with experience developing complex software for embedded systems.
- Strong experience in embedded software architecture, module design, and system-level software development.
- Advanced expertise in Embedded Linux, including both kernel-space and user-space development.
- Proven experience developing high-performance, low-level drivers and system services.
- Experience integrating complex communication protocols such as Ethernet, USB, and CAN.
- Strong understanding of system boot processes, SBC resource management, and embedded system performance optimization.
- Understanding of embedded systems security and secure software development practices.
- Advanced debugging and diagnostic skills using JTAG, OpenOCD, GDB, and gdbserver.
- Experience preparing and maintaining production software releases, including release testing and documentation.
- Strong hands-on experience using oscilloscopes, logic analyzers, programmers, and hardware debuggers for low-level system diagnostics.
- Experience analyzing hardware-software interaction issues, including communication bus conflicts, signal integrity, noise, and thermal or power-related issues.
- Advanced proficiency with Yocto and/or Buildroot for embedded Linux development and system integration.
- Experience with GCC and/or Clang, CI/CD systems, profiling and tracing tools, and Wireshark.
- Familiarity with Doxygen and requirements and defect management tools such as Jira and Polarion.
- Experience using Docker for embedded software build and development environments is a plus.
- Strong analytical and problem-solving skills with the ability to work effectively across hardware and software engineering teams.
Benefits- Health Care Plan
- Retirement Plan
- Paid Time Off
- Family Leave
- Free Food & Snacks