Embedded Firmware Engineer (Sensor Pattern) internship

Paris, FR

Job Description / Skills Required

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 analyze, specify, develop and deploy software tools which will assist the team reaching the best quality and stability of firmware embedded on GoPro's cameras.  

The outcome of your internship will impact the imaging experience of GoPro users all around the world. 

Subject 

The firmware quality team (DevQA) is responsible for developing means of testing and regressions that ensure, in a continuous integration and development environment, that the camera is behaving as expected. It allows to rapidly catch bugs during the developments and subsequently to reduce their cost. Automation is the single way to achieve this goal. But it appears that a camera under test might have a different behavior depending on the scene that is captured. This obvious lack of reproducibility implies deploying a complex test environment set-up. It also makes bugs harder to be reproduced and investigated. An approach to tackle this lack of reproducibility of the scene is to use the imaging sensor as a synthetic pattern generator instead of a real captured scene. 

In a validation perspective, this implies to: 

  • Generate a controlled pattern from the imaging sensor
  • Collect and assert statistic contents (e.g. histogram, mean values…) along the image processing pipe against pre-determined values
  • Ensure that output video is compliant with expectations 

The aim of this internship is to design and implement, within the imaging firmware, all the mechanisms required to perform such an automatic scheme of validation based on generated sensor patterns. 

What You Will Do 

As part of the firmware team, you will have to design and implement, preferably in C or C++, the camera embedded components enabling this repeatable validation mechanism. To achieve this goal, you will mainly have to:  

  • Define the tests to implement (in collaboration with the QA team), 
  • Activate sensor patterns to generate a controlled input for the imaging firmware, 
  • Implement a feature to easily generate the required sensor patterns on the camera, as part of the imaging firmware, 
  • Implement a mechanism to automatically check that image statistics are as expected during the imaging firmware process,
  • Implement a validation process called during post-execution phase of the non-regression tests,
  • Write design documents and code documentation,
  • Train and support all internal users (in France and US) to use the solution 

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)
  • 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 embedded world 

Perks

  • Get your very own GoPro (Mounts and accessories included)
  • Fully stocked fridges with snacks galore

GoPro is an Equal Opportunity Employer.