Software Engineer
- Discuss this with your agent
- Open in Claude
- Open in ChatGPT
Prepare application
- Draft this with your agent
- Open in Claude
- Open in ChatGPT
Role details
Tech stack
+22 more
Job description
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 & conditions
Pulled from the full job description
- Food provided
- Health insurance
- Retirement plan
- Paid time off
- Family leave
- Snacks provided, * Health Care Plan
- Retirement Plan
- Paid Time Off
- Family Leave
- Free Food & Snacks
About the company
KRUSH Tech is a new technology company building advanced hardware solutions for defense, aerospace, communications, and autonomous systems. We’re launching our U.S. operations from the ground up - and this is a rare opportunity to join at the very beginning and help shape the company from day one.
Apply for this position
This job is hosted externally. Click below to view the full posting and apply.
Prepare application
- Draft this with your agent
- Open in Claude
- Open in ChatGPT
Good distractions
Talks and stories from around this role — technically off-topic, practically not.
Moments
Explore playlistsVideos
See allRelated articles
See all
Software Engineer Career: Things You Should Know
Is Software Engineering Hard?
Is Software Engineering Over-Saturated?
The Best Software Developer Blogs to Read