The role is to design, develop, and test embedded software in C, often at a low level with new silicon and new development boards, so experience debugging using oscilloscopes and logic analysers is required. Upstreaming of drivers to the open source community and developing internal software tools may sometimes be required. You will be expected to solve complex engineering problems and debug complex systems with support from other team members.
- Developing quality embedded software (typically drivers, tests, scripts and associated documentation).
- Integrating code from different sources to produce a BSP (Board Support Package).
- Debugging code and embedded system issues, with the support of both the hardware and software teams to root cause problems which may be in the software, the PCB, or the Silicon itself.
- Releasing of software and patches to customers, including responding to customer queries.
- Maintaining and extending existing continuous integration and testing.
- Keeping documentation up to date and sharing key information via wiki pages to spread knowledge throughout the team.
- Developing high quality drivers, tests, infrastructure and other low-level software in C, typically targeted at embedded Linux platforms, but occasionally other embedded operating systems. Pre-silicon this will typically be using FPGA, Emulation, Virtual Platforms and simulation to provide the SoC and software work together properly before the design is committed to silicon.
- Post-silicon bring up and validation, finding unexpected behaviour and hypothesising the reason for it, then investigating to root cause and fix or work around the problem (if it cannot be fixed).
- Participation in peer review processes, giving constructive feedback to others and addressing feedback received about yourself in a positive manor.
- Proactively identifying areas of potential improvement in tool selection and processes.
- Self-disciplined approach, managing the priorities of the work assigned to you to make the projects succeed.
- You may be asked to open source some of the code that you write, depending on which projects you are working on. (Familiarity with up-streaming would be useful, but not essential).
- A degree: Bachelors, Masters or PhD in a relevant subject.
- Masters or PhD in a related subject.
Skills & Experience:
- 5+ years' relevant experience.
- Excellent C programming language skills.
- Strong understanding and experience of git source control.
- Ability to use an oscilloscope.
- Python or bash scripting language skills.
- Very good spoken and written English language skills.
- Familiar with Linux kernel.
- Moderate understanding of electronics.
- Strong problem-solving skills.
- Type of person that tinkers with embedded software at home as a hobby.
- ARM or MIPS architecture experience.
- Experience of upstreaming code to the open-source community (specific Linux kernel).
- Team leading experience (or aspiration).
Remuneration and benefits
- Competitive salary
- Annual company bonus
- Flexible working
- 25 days paid annual holiday
- Company pension scheme
- Opportunity to travel both domestically and internationally
- Opportunity for career progression