Embedded Software and Imaging Firmware Internship – Appc on Linux

Paris, FR

Job Description / Skills Required

Location: Paris, Issy-les-Moulineaux (Flexible). This role offers the flexibility to work from home, within proximity to an office location.

GoPro makes it easy for people to celebrate and share experiences. We believe life is more meaningful when shared. We build cameras, software, and accessories that help the world share itself in immersive and exciting ways.

GoPro is a global movement whose business is driven by shared experiences. We celebrate diversity. We practice inclusion. We foster belonging. We demand equality. And we share the experiences of individuals and communities who also hold these values as core to who they are. From Sao Paulo to Munich, Silicon Valley to Shenzhen, we are dedicated to building a company that reflects and honors the diverse global communities where we live, work, and play.

GoPro Paris works hard at bringing the image quality and the ease of use of GoPro devices to the highest level. Fully integrated in the Imaging Firmware team, your role is to prototype the porting of the application control layer of GoPro camera’s firmware, currently running on a proprietary RTOS, to a core running an embedded Linux system. The outcome of your internship could impact the experience of GoPro users all around the world.


The firmware of GoPro’s camera is organized in several layers, with various roles and responsibilities. The top-level layer named application control, is in charge of converting the user actions coming from the User Interface (UI) into system actions such as building and configuring the desired capture use cases to record the user’s moments with the highest possible quality.

Considering the high technical and real-time constraints of these use cases, the lower layers absolutely need to run on a RTOS, however the upper-level layer has theoretically less constraints and could run on a Linux-based system.

The purpose of this internship is to explore this option and prototype a porting of this upper-level layer in charge of application control to the Linux core of the camera.

What You Will Do

  • Analyze and understand the application control subsystem, its role in the system, its firmware interfaces with lower layers and with UI and the constraints it has in term of reactivity.
  • Propose an alternative firmware architecture with application control subsystem delocalized on a Linux core and with mechanism of inter-CPU communication to make all layers communicate together.
  • Propose a command line interface (in camera) that allows to interact with this new application control layer on Linux to experiment the new architecture.
  • Validate the prototype with instrumentation mechanism to measure key performance indicators such as reactivity timings, memory footprint, CPU load, etc.
  • Analyze and explore the drawbacks of this new architecture and potential solutions (optimization, reactivity, boot time…)
  • Provide design documents and code documentation
  • Write unit and validation tests

Technical environment

  • Complex SoC, ARM based, Real Time Operating System.
  • Integrated ISP with encoders and signal processing hardware blocks
  • C and C++
  • Python, bash
  • Git, make, CMake, waf

Skills We’re Stoked About

  • Computer sciences final degree (Eng. school), mastering in embedded systems
  • Low-level C
  • Cross-development tools (compilation & debug)
  • Object-oriented programming languages (C++ at least, Rust is nice to have)
  • Good knowledge of Git
  • Scripting language (Shell, Python at least)
  • Understanding of a System-on-Chip and electronics
  • Good interpersonal skills
  • Technical English and French practice required
  • Curiosity for new technologies in the embedded world


  • Subsidized lunch and snacks galore
  • Gym fee compensation
  • Get your very own GoPro camera + gear
  • Transit benefit – 50% of the applicable public transportation pass
  • Flexible work arrangements

GoPro is an Equal Opportunity Employer.