Job description: Required skills: B.E/B.Tech/B.S or M.E/MS in CS, EE or CE with 3+ years of software development experience Background in EDA tools preferred Demonstrated proficiency in C++ and large scale design pattern style development. Demonstrated proficiency in scripting using Python and/or Perl Excellent problem-solving skills and willingness to think outside the box Experience with production software quality assurance practices, methodologies, and procedures KEY RESPONSIBILITIES: Work with architecture specialists to improve future products Apply a data minded approach to target optimization efforts Stay informed of software and hardware trends and innovations, especially pertaining to algorithms and architecture Design and develop new groundbreaking technologies Debugging/fix existing issues and research alternative, more efficient ways to accomplish the same work Develop technical relationships with peers and partners PREFERRED EXPERIENCE: Strong object-oriented programming background, C/C++ preferred Algorithms, Python Matlab Linear programming ML FPGA design flows, Verilog, HLS.
Company Description An AI-enhanced security processor company redefining the control and management of every digital system. The company was founded in 2017, and currently has 100+ employees. developing great technology takes more than talent: it takes amazing people who understand collaboration, respect each other, and go the extra mile to achieve exceptional results. It takes people who have the passion and desire to disrupt the status quo, deliver innovation, and change the world. If you have this type of passion, we invite you to apply for this job. Job Description We are seeking an experienced Principal Firmware Engineer to lead the design, development, and optimization of embedded systems. The ideal candidate will have a deep understanding of Secure Boot, RTOS, Linux kernel, device drivers, peripheral interfaces, and bus protocols, as well as open-source software development. This role requires strong problem-solving skills to diagnose and resolve complex hardware and software issues while ensuring security, performance, and scalability of embedded solutions. Key Responsibilities: Architect, develop, and optimize embedded software solutions for secure and high-performance systems. Implement and maintain Secure Boot, and other security measures for embedded platforms. Work on RTOS environment and Linux kernel driver development, including optimizing device drivers and upstreaming. Develop and integrate software for various peripheral interfaces (SPI, I2C, UART, USB, SGPIO, eSPI, etc.) and bus protocols (PCIe, Ethernet, etc.). Diagnose and resolve complex hardware and software issues, leveraging debugging tools and methodologies. Conduct performance analysis and tuning of embedded software systems to ensure efficiency and reliability. Define and implement scalable and maintainable embedded software architectures. Engage in open-source development, contributing to Linux or similar embedded software projects. Work closely with hardware engineers, security experts, and system architects to develop robust embedded solutions. Mentor junior engineers and contribute to best practices for embedded software development. Qualifications Bachelor's or Master's degree in Computer Science, Electrical Engineering, or related field. 20+ years of experience in embedded software development, with a strong background in C/C++. Expertise in Root of Trust (RoT), Secure Boot, and cryptographic security principles. Extensive experience with RTOS, Linux kernel, and device driver development. Strong debugging skills using JTAG, GDB, and other embedded debugging tools. Experience in performance profiling and optimization for embedded systems. Proven ability to diagnose hardware and software interaction issues. Experience in open-source Linux development or similar community-driven software projects. Strong understanding of system-level software architecture and real-time performance constraints. Hands-on experience with peripheral interfaces (SPI, I2C, UART, USB, etc.) and bus protocols (PCIe, Ethernet, etc.) driver development. Experience in Baseboard Management Controller (BMC) is a plus. Proven ability to debug low-level PCIe issues using analyzers is a plus. In-depth knowledge of PCIe protocol, including, root port, SRIOV Familiarity with machine learning acceleration on embedded platforms. Experience with hardware bring-up and board support packages (BSPs). Knowledge of Yocto, Buildroot, and other Linux build systems