Software Engineer, Embedded

Snap Snap · Consumer · Paris, France

Software Engineer (Embedded) role focusing on designing, developing, and maintaining firmware for system-on-chip (SoC) and its software components, including drivers, bootloader, memory management, and low power management. The role also involves developing software SoC validation test suites and collaborating with cross-functional teams. Requires proficiency in C/C++, embedded systems architecture, RTOS, and communication protocols.

What you'd actually do

  1. Participate in designing, developing and maintaining the firmware running on our system-on-chip and its software components at all layers of the system such as drivers, bootloader, memory management, I/O system, low power management, application software stack, etc.
  2. Participate in designing, developing and maintaining the software SoC validation test suite at both stages; pre and post tape out.
  3. Collaborate with cross-functional teams to define requirements, design architecture, implement software, and perform testing to ensure high-quality deliverables.
  4. Contribute to the continuous improvement of development processes.

Skills

Required

  • embedded C/C++ programming languages
  • embedded systems architecture
  • real-time operating systems (RTOS) and bare metal development
  • communication protocols such as UART, SPI, I2C, I3C
  • debugging tools like JTAG/SWD and logic analyzers
  • work with hardware schematics and datasheets
  • version control systems and issue tracking tools
  • problem-solving and analytical skills
  • communication and teamwork abilities
  • manage multiple tasks and prioritize effectively

Nice to have

  • ARM Cortex-M/R/A architectures
  • running code on FPGA or Emulator platforms (e.g., Cadence/Siemens/Synopsys)
  • continuous integration and continuous deployment (CI/CD) pipelines (e.g., Gitlab, TeamCity)